From e39512ec18df545e15e895e6cf62abfe03e7e008 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Tue, 13 Dec 2022 16:13:12 -0700 Subject: [PATCH] nvmf: add completed_nvme_io to nvmf_poll_group_stat Basic IO completion counting can be done at the common layer, to enable some level of stat tracking even for transports that don't have transport-specific tracking yet. Signed-off-by: Jim Harris Change-Id: If04f854b97440089b8ad149b64cb59173c73975c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15912 Tested-by: SPDK CI Jenkins Reviewed-by: Aleksey Marchuk Reviewed-by: Shuhei Matsumoto Community-CI: Mellanox Build Bot --- include/spdk/nvmf.h | 2 ++ lib/nvmf/ctrlr.c | 3 +++ lib/nvmf/nvmf.c | 1 + 3 files changed, 6 insertions(+) diff --git a/include/spdk/nvmf.h b/include/spdk/nvmf.h index 545c88423..45a461ea9 100644 --- a/include/spdk/nvmf.h +++ b/include/spdk/nvmf.h @@ -128,6 +128,8 @@ struct spdk_nvmf_poll_group_stat { /* current io qpair count */ uint32_t current_io_qpairs; uint64_t pending_bdev_io; + /* NVMe IO commands completed (excludes admin commands) */ + uint64_t completed_nvme_io; }; /** diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index a5099b336..58cc22e28 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -4137,6 +4137,9 @@ _nvmf_request_complete(void *ctx) sgroup = &qpair->group->sgroups[qpair->ctrlr->subsys->id]; assert(sgroup != NULL); is_aer = req->cmd->nvme_cmd.opc == SPDK_NVME_OPC_ASYNC_EVENT_REQUEST; + if (spdk_likely(qpair->qid != 0)) { + qpair->group->stat.completed_nvme_io++; + } /* * Set the crd value. diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index 0efeda94b..579e52d09 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -1676,6 +1676,7 @@ spdk_nvmf_poll_group_dump_stat(struct spdk_nvmf_poll_group *group, struct spdk_j spdk_json_write_named_uint32(w, "current_admin_qpairs", group->stat.current_admin_qpairs); spdk_json_write_named_uint32(w, "current_io_qpairs", group->stat.current_io_qpairs); spdk_json_write_named_uint64(w, "pending_bdev_io", group->stat.pending_bdev_io); + spdk_json_write_named_uint64(w, "completed_nvme_io", group->stat.completed_nvme_io); spdk_json_write_named_array_begin(w, "transports");