From 8c3590a9839546ec38604e7860ea0fa19be0351c Mon Sep 17 00:00:00 2001 From: Evgeniy Kochetov Date: Mon, 22 Aug 2022 16:15:03 +0300 Subject: [PATCH] bdev: Add copy IO statistics Signed-off-by: Evgeniy Kochetov Change-Id: Id51ac80bce33a27a8ccea273c076f39019b98339 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14348 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Aleksey Marchuk Reviewed-by: Shuhei Matsumoto Community-CI: Mellanox Build Bot --- include/spdk/bdev.h | 3 +++ lib/bdev/bdev.c | 8 ++++++++ lib/bdev/bdev_rpc.c | 3 +++ 3 files changed, 14 insertions(+) diff --git a/include/spdk/bdev.h b/include/spdk/bdev.h index ec247255c..ebf491036 100644 --- a/include/spdk/bdev.h +++ b/include/spdk/bdev.h @@ -157,9 +157,12 @@ struct spdk_bdev_io_stat { uint64_t num_write_ops; uint64_t bytes_unmapped; uint64_t num_unmap_ops; + uint64_t bytes_copied; + uint64_t num_copy_ops; uint64_t read_latency_ticks; uint64_t write_latency_ticks; uint64_t unmap_latency_ticks; + uint64_t copy_latency_ticks; uint64_t ticks_rate; }; diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 510f44459..ad56d8e18 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -3654,9 +3654,12 @@ bdev_io_stat_add(struct spdk_bdev_io_stat *total, struct spdk_bdev_io_stat *add) total->num_write_ops += add->num_write_ops; total->bytes_unmapped += add->bytes_unmapped; total->num_unmap_ops += add->num_unmap_ops; + total->bytes_copied += add->bytes_copied; + total->num_copy_ops += add->num_copy_ops; total->read_latency_ticks += add->read_latency_ticks; total->write_latency_ticks += add->write_latency_ticks; total->unmap_latency_ticks += add->unmap_latency_ticks; + total->copy_latency_ticks += add->copy_latency_ticks; } static void @@ -6070,6 +6073,11 @@ bdev_io_complete(void *ctx) } } break; + case SPDK_BDEV_IO_TYPE_COPY: + bdev_io->internal.ch->stat.bytes_copied += bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; + bdev_io->internal.ch->stat.num_copy_ops++; + bdev_io->internal.ch->stat.copy_latency_ticks += tsc_diff; + break; default: break; } diff --git a/lib/bdev/bdev_rpc.c b/lib/bdev/bdev_rpc.c index 450cbc598..fbd87dd99 100644 --- a/lib/bdev/bdev_rpc.c +++ b/lib/bdev/bdev_rpc.c @@ -225,9 +225,12 @@ rpc_bdev_get_iostat_dump(struct spdk_json_write_ctx *w, spdk_json_write_named_uint64(w, "num_write_ops", stat->num_write_ops); spdk_json_write_named_uint64(w, "bytes_unmapped", stat->bytes_unmapped); spdk_json_write_named_uint64(w, "num_unmap_ops", stat->num_unmap_ops); + spdk_json_write_named_uint64(w, "bytes_copied", stat->bytes_copied); + spdk_json_write_named_uint64(w, "num_copy_ops", stat->num_copy_ops); spdk_json_write_named_uint64(w, "read_latency_ticks", stat->read_latency_ticks); spdk_json_write_named_uint64(w, "write_latency_ticks", stat->write_latency_ticks); spdk_json_write_named_uint64(w, "unmap_latency_ticks", stat->unmap_latency_ticks); + spdk_json_write_named_uint64(w, "copy_latency_ticks", stat->copy_latency_ticks); } static void