Commit c43d8008 authored by Avri Altman's avatar Avri Altman Committed by Tomasz Zawadzki
Browse files

app/spdk_nvme_perf: Move number_ios to per-namespace



This change adds a `number_ios` field to `struct ns_worker_ctx` and
updates the I/O submission logic to use this per-namespace value instead
of the global `g_number_ios`.

This refactoring prepares the codebase for future enhancements, such as
supporting percent-based number of I/Os per namespace, by allowing each
namespace worker to track its own I/O limit independently.

No functional change for users specifying an absolute number of I/Os,
but this lays the groundwork for more flexible exit criteria.

Change-Id: I132a1ffb3873a6f2d453b9038ad4f5b70ae2e7d7
Signed-off-by: default avatarAvri Altman <avri.altman@sandisk.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26439


Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarAnkit Kumar <ankit.kumar@samsung.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
parent 1a1b8c98
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -131,6 +131,7 @@ struct ns_worker_ctx {
	struct ns_entry		*entry;
	struct ns_worker_stats	stats;
	uint64_t		current_queue_depth;
	uint64_t		number_ios;
	uint64_t		offset_in_ios;
	bool			is_draining;

@@ -1484,7 +1485,7 @@ submit_single_io(struct perf_task *task)
		ns_ctx->stats.io_submitted++;
	}

	if (spdk_unlikely(g_number_ios && ns_ctx->stats.io_submitted >= g_number_ios)) {
	if (spdk_unlikely(ns_ctx->number_ios && ns_ctx->stats.io_submitted >= ns_ctx->number_ios)) {
		ns_ctx->is_draining = true;
	}
}
@@ -3010,6 +3011,7 @@ allocate_ns_worker(struct ns_entry *entry, struct worker_thread *worker)
	ns_ctx->stats.min_tsc = UINT64_MAX;
	ns_ctx->entry = entry;
	ns_ctx->histogram = spdk_histogram_data_alloc();
	ns_ctx->number_ios = g_number_ios;
	TAILQ_INSERT_TAIL(&worker->ns_ctx, ns_ctx, link);

	return 0;