Commit ba87571d authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

bdevperf: Use RPC log file by opening a user specified file



RPC log file is available for SPDK applications. bdevperf is a good
candidate to use the RPC log file.

Signed-off-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Ic6ffb044080524761330d7420b25ccec293bd817
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18912


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent c5b91b13
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -101,6 +101,9 @@ static const double g_latency_cutoffs[] = {
	-1,
};

static const char *g_rpc_log_file_name = NULL;
static FILE *g_rpc_log_file = NULL;

struct latency_info {
	uint64_t	min;
	uint64_t	max;
@@ -2175,7 +2178,7 @@ read_job_config(void)
	struct job_config global_default_config;
	struct job_config global_config;
	struct spdk_conf_section *s;
	struct job_config *config;
	struct job_config *config = NULL;
	const char *cpumask;
	const char *rw;
	bool is_global;
@@ -2322,6 +2325,14 @@ read_job_config(void)
		}
	}

	if (g_rpc_log_file_name != NULL) {
		g_rpc_log_file = fopen(g_rpc_log_file_name, "a");
		if (g_rpc_log_file == NULL) {
			fprintf(stderr, "Failed to open %s\n", g_rpc_log_file_name);
			goto error;
		}
	}

	printf("Using job config with %d jobs\n", n);
	return 0;
error:
@@ -2466,6 +2477,8 @@ bdevperf_parse_arg(int ch, char *arg)
		g_random_map = true;
	} else if (ch == 'E') {
		g_one_thread_per_lcore = true;
	} else if (ch == 'J') {
		g_rpc_log_file_name = optarg;
	} else {
		tmp = spdk_strtoll(optarg, 10);
		if (tmp < 0) {
@@ -2532,12 +2545,18 @@ bdevperf_usage(void)
	printf(" -l                        display latency histogram, default: disable. -l display summary, -ll display details\n");
	printf(" -D                        use a random map for picking offsets not previously read or written (for all jobs)\n");
	printf(" -E                        share per lcore thread among jobs. Available only if -j is not used.\n");
	printf(" -J                        File name to open with append mode and log JSON RPC calls.\n");
}

static void
bdevperf_fini(void)
{
	free_job_config();

	if (g_rpc_log_file != NULL) {
		fclose(g_rpc_log_file);
		g_rpc_log_file = NULL;
	}
}

static int
@@ -2550,6 +2569,10 @@ verify_test_params(struct spdk_app_opts *opts)
		opts->rpc_addr = SPDK_DEFAULT_RPC_ADDR;
	}

	if (g_rpc_log_file != NULL) {
		opts->rpc_log_file = g_rpc_log_file;
	}

	if (!g_bdevperf_conf_file && g_queue_depth <= 0) {
		goto out;
	}
@@ -2664,7 +2687,7 @@ main(int argc, char **argv)
	opts.rpc_addr = NULL;
	opts.shutdown_cb = spdk_bdevperf_shutdown_cb;

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