Commit daf08e3b authored by Ben Walker's avatar Ben Walker Committed by Tomasz Zawadzki
Browse files

bdevperf: Print each job's results separately



As we move to more complex job definitions, it will make more sense to
print the stats for each job separately, rather than grouping by
reactor.

Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Change-Id: I1a94c36a5d272ae406b0b201dc05ec020ab651a0
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1848


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
parent 5eb39c80
Loading
Loading
Loading
Loading
+21 −14
Original line number Diff line number Diff line
@@ -913,6 +913,26 @@ _performance_dump_done(struct spdk_io_channel_iter *i, int status)
	free(ctx);
}

static void
_performance_dump_job(struct perf_dump_ctx *ctx, struct bdevperf_job *job)
{
	double io_per_second, mb_per_second;

	printf("\r Thread name: %s\n", spdk_thread_get_name(job->reactor->thread));
	printf("\r Core Mask: 0x%s\n", spdk_cpuset_fmt(spdk_thread_get_cpumask(job->reactor->thread)));

	if (ctx->ema_period == 0) {
		io_per_second = get_cma_io_per_second(job, ctx->io_time_in_usec);
	} else {
		io_per_second = get_ema_io_per_second(job, ctx->ema_period);
	}
	mb_per_second = io_per_second * g_io_size / (1024 * 1024);
	printf("\r %-20s: %10.2f IOPS %10.2f MiB/s\n",
	       job->name, io_per_second, mb_per_second);
	ctx->total_io_per_second += io_per_second;
	ctx->total_mb_per_second += mb_per_second;
}

static void
_performance_dump(struct spdk_io_channel_iter *i)
{
@@ -920,7 +940,6 @@ _performance_dump(struct spdk_io_channel_iter *i)
	struct spdk_io_channel *ch;
	struct bdevperf_reactor *reactor;
	struct bdevperf_job *job;
	double io_per_second, mb_per_second;

	ctx = spdk_io_channel_iter_get_ctx(i);
	ch = spdk_io_channel_iter_get_channel(i);
@@ -930,20 +949,8 @@ _performance_dump(struct spdk_io_channel_iter *i)
		goto exit;
	}

	printf("\r Thread name: %s\n", spdk_thread_get_name(spdk_get_thread()));
	printf("\r Logical core: %u\n", reactor->lcore);

	TAILQ_FOREACH(job, &reactor->jobs, link) {
		if (ctx->ema_period == 0) {
			io_per_second = get_cma_io_per_second(job, ctx->io_time_in_usec);
		} else {
			io_per_second = get_ema_io_per_second(job, ctx->ema_period);
		}
		mb_per_second = io_per_second * g_io_size / (1024 * 1024);
		printf("\r %-20s: %10.2f IOPS %10.2f MiB/s\n",
		       job->name, io_per_second, mb_per_second);
		ctx->total_io_per_second += io_per_second;
		ctx->total_mb_per_second += mb_per_second;
		_performance_dump_job(ctx, job);
	}

	fflush(stdout);