From 14db3c7e4bc17b3378cd0de733da55fcbd10852a Mon Sep 17 00:00:00 2001 From: Alla Kiseleva Date: Mon, 17 Feb 2020 13:45:32 +0000 Subject: [PATCH] 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 Change-Id: I35e39c62bbdac05152f35e11eb1d560eb0e50404 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/955 Reviewed-by: Darek Stojaczyk Reviewed-by: Ben Walker Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- examples/nvme/perf/perf.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/examples/nvme/perf/perf.c b/examples/nvme/perf/perf.c index 28ebb2d56..76f602808 100644 --- a/examples/nvme/perf/perf.c +++ b/examples/nvme/perf/perf.c @@ -633,27 +633,42 @@ static const struct ns_fn_table nvme_fn_table = { .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) { const struct spdk_nvme_transport_id *trid; + int res = 0; trid = spdk_nvme_ctrlr_get_transport_id(ctrlr); switch (trid->trtype) { case SPDK_NVME_TRANSPORT_PCIE: - snprintf(name, length, "PCIE (%s)", trid->traddr); + res = snprintf(name, length, "PCIE (%s)", trid->traddr); break; 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; 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; + default: fprintf(stderr, "Unknown transport type %d\n", trid->trtype); 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 @@ -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; } - 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++; entry->next = g_namespaces;