Commit fc3e1b6f authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Darek Stojaczyk
Browse files

bdevperf: target bdev selection



Allow the user to select target bdev to be used by bdevperf. It's useful
when the config contains multiple bdevs, but only one is supposed to be
utilized by bdevperf directly.

Change-Id: I51aa645dcf60a4413057d86f68fe24442b280367
Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/456787


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
parent 5012fcc1
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ static bool g_zcopy = true;
static unsigned g_master_core;
static int g_time_in_sec;
static bool g_mix_specified;
static const char *g_target_bdev_name;

static struct spdk_poller *g_perf_timer = NULL;

@@ -349,6 +350,15 @@ bdevperf_construct_targets(void)
	struct spdk_bdev *bdev;
	int rc;

	if (g_target_bdev_name != NULL) {
		bdev = spdk_bdev_get_by_name(g_target_bdev_name);
		if (!bdev) {
			fprintf(stderr, "Unable to find bdev '%s'\n", g_target_bdev_name);
			return;
		}

		bdevperf_construct_target(bdev);
	} else {
		bdev = spdk_bdev_first_leaf();
		while (bdev != NULL) {
			rc = bdevperf_construct_target(bdev);
@@ -359,6 +369,7 @@ bdevperf_construct_targets(void)
			bdev = spdk_bdev_next_leaf(bdev);
		}
	}
}

static void
end_run(void *arg1, void *arg2)
@@ -794,6 +805,7 @@ bdevperf_usage(void)
	printf("\t\t(Formula: M = 2 / (n + 1), EMA[i+1] = IO/s * M + (1 - M) * EMA[i])\n");
	printf("\t\t(only valid with -S)\n");
	printf(" -S <period>               show performance result in real time every <period> seconds\n");
	printf(" -T <target>               target bdev\n");
}

/*
@@ -1043,6 +1055,8 @@ bdevperf_parse_arg(int ch, char *arg)

	if (ch == 'w') {
		g_workload_type = optarg;
	} else if (ch == 'T') {
		g_target_bdev_name = optarg;
	} else {
		tmp = spdk_strtoll(optarg, 10);
		if (tmp < 0) {
@@ -1102,7 +1116,7 @@ main(int argc, char **argv)
	g_time_in_sec = 0;
	g_mix_specified = false;

	if ((rc = spdk_app_parse_args(argc, argv, &opts, "q:o:t:w:M:P:S:", NULL,
	if ((rc = spdk_app_parse_args(argc, argv, &opts, "q:o:t:w:M:P:S:T:", NULL,
				      bdevperf_parse_arg, bdevperf_usage)) !=
	    SPDK_APP_PARSE_ARGS_SUCCESS) {
		return rc;