perf: Add NSID in perf output information

Currently an option is implemented to monitor a correlation between the
core and namespace.

Previously:
==================================================================
Device Information
RDMA (addr:1.1.75.2 subnqn:nqn.2016-06.io.spdk:cnode1) from core  0:
RDMA (addr:1.1.75.2 subnqn:nqn.2016-06.io.spdk:cnode1) from core  0:
==================================================================

Now:
========================================================================
Device Information
RDMA (addr:1.1.75.2 subnqn:nqn.2016-06.io.spdk:cnode1) NSID 1 from core 0:
RDMA (addr:1.1.75.2 subnqn:nqn.2016-06.io.spdk:cnode1) NSID 2 from core 0:
========================================================================

Signed-off-by: Alla Kiseleva <c_allaki@mellanox.com>
Change-Id: I35e39c62bbdac05152f35e11eb1d560eb0e50404
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/955
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Alla Kiseleva 2020-02-17 13:45:32 +00:00 committed by Tomasz Zawadzki
parent c688f5e93e
commit 14db3c7e4b

View File

@ -633,27 +633,42 @@ static const struct ns_fn_table nvme_fn_table = {
.cleanup_ns_worker_ctx = nvme_cleanup_ns_worker_ctx, .cleanup_ns_worker_ctx = nvme_cleanup_ns_worker_ctx,
}; };
static void static int
build_nvme_name(char *name, size_t length, struct spdk_nvme_ctrlr *ctrlr) build_nvme_name(char *name, size_t length, struct spdk_nvme_ctrlr *ctrlr)
{ {
const struct spdk_nvme_transport_id *trid; const struct spdk_nvme_transport_id *trid;
int res = 0;
trid = spdk_nvme_ctrlr_get_transport_id(ctrlr); trid = spdk_nvme_ctrlr_get_transport_id(ctrlr);
switch (trid->trtype) { switch (trid->trtype) {
case SPDK_NVME_TRANSPORT_PCIE: case SPDK_NVME_TRANSPORT_PCIE:
snprintf(name, length, "PCIE (%s)", trid->traddr); res = snprintf(name, length, "PCIE (%s)", trid->traddr);
break; break;
case SPDK_NVME_TRANSPORT_RDMA: case SPDK_NVME_TRANSPORT_RDMA:
snprintf(name, length, "RDMA (addr:%s subnqn:%s)", trid->traddr, trid->subnqn); res = snprintf(name, length, "RDMA (addr:%s subnqn:%s)", trid->traddr, trid->subnqn);
break; break;
case SPDK_NVME_TRANSPORT_TCP: case SPDK_NVME_TRANSPORT_TCP:
snprintf(name, length, "TCP (addr:%s subnqn:%s)", trid->traddr, trid->subnqn); res = snprintf(name, length, "TCP (addr:%s subnqn:%s)", trid->traddr, trid->subnqn);
break; break;
default: default:
fprintf(stderr, "Unknown transport type %d\n", trid->trtype); fprintf(stderr, "Unknown transport type %d\n", trid->trtype);
break; break;
} }
return res;
}
static void
build_nvme_ns_name(char *name, size_t length, struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid)
{
int res = 0;
res = build_nvme_name(name, length, ctrlr);
if (res > 0) {
snprintf(name + res, length - res, " NSID %u", nsid);
}
} }
static void static void
@ -747,7 +762,7 @@ register_ns(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_ns *ns)
g_max_io_size_blocks = entry->io_size_blocks; g_max_io_size_blocks = entry->io_size_blocks;
} }
build_nvme_name(entry->name, sizeof(entry->name), ctrlr); build_nvme_ns_name(entry->name, sizeof(entry->name), ctrlr, spdk_nvme_ns_get_id(ns));
g_num_namespaces++; g_num_namespaces++;
entry->next = g_namespaces; entry->next = g_namespaces;