X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-compress-perf%2Fcomp_perf_options_parse.c;h=019eddb7bd334ca4d39b721edd386765f0129eb4;hb=1e9221ae38dddb4abe75a7b3afaecbaa4b8e0523;hp=01e19eafb0ed6ec93d614f9d694b3ad81e6379a3;hpb=8c7a31317b0ec128d25b30cd56db94c144ceaaa2;p=dpdk.git diff --git a/app/test-compress-perf/comp_perf_options_parse.c b/app/test-compress-perf/comp_perf_options_parse.c index 01e19eafb0..019eddb7bd 100644 --- a/app/test-compress-perf/comp_perf_options_parse.c +++ b/app/test-compress-perf/comp_perf_options_parse.c @@ -28,6 +28,10 @@ #define CPERF_HUFFMAN_ENC ("huffman-enc") #define CPERF_LEVEL ("compress-level") #define CPERF_WINDOW_SIZE ("window-sz") +#define CPERF_EXTERNAL_MBUFS ("external-mbufs") + +/* cyclecount-specific options */ +#define CPERF_CYCLECOUNT_DELAY_US ("cc-delay-us") struct name_id_map { const char *name; @@ -38,7 +42,7 @@ static void usage(char *progname) { printf("%s [EAL options] --\n" - " --ptest benchmark / verify :" + " --ptest throughput / verify / pmd-cyclecount\n" " --driver-name NAME: compress driver to use\n" " --input-file NAME: file to compress and decompress\n" " --extended-input-sz N: extend file data up to this size (default: no extension)\n" @@ -58,6 +62,10 @@ usage(char *progname) " (default: range between 1 and 9)\n" " --window-sz N: base two log value of compression window size\n" " (e.g.: 15 => 32k, default: max supported by PMD)\n" + " --external-mbufs: use memzones as external buffers instead of\n" + " keeping the data directly in mbuf area\n" + " --cc-delay-us N: delay between enqueue and dequeue operations in microseconds\n" + " valid only for cyclecount perf test (default: 500 us)\n" " -h: prints this help\n", progname); } @@ -82,12 +90,16 @@ parse_cperf_test_type(struct comp_test_data *test_data, const char *arg) { struct name_id_map cperftest_namemap[] = { { - cperf_test_type_strs[CPERF_TEST_TYPE_BENCHMARK], - CPERF_TEST_TYPE_BENCHMARK + comp_perf_test_type_strs[CPERF_TEST_TYPE_THROUGHPUT], + CPERF_TEST_TYPE_THROUGHPUT }, { - cperf_test_type_strs[CPERF_TEST_TYPE_VERIFY], + comp_perf_test_type_strs[CPERF_TEST_TYPE_VERIFY], CPERF_TEST_TYPE_VERIFY + }, + { + comp_perf_test_type_strs[CPERF_TEST_TYPE_PMDCC], + CPERF_TEST_TYPE_PMDCC } }; @@ -520,17 +532,36 @@ parse_level(struct comp_test_data *test_data, const char *arg) return 0; } +static int +parse_external_mbufs(struct comp_test_data *test_data, + const char *arg __rte_unused) +{ + test_data->use_external_mbufs = 1; + return 0; +} + +static int +parse_cyclecount_delay_us(struct comp_test_data *test_data, + const char *arg) +{ + int ret = parse_uint32_t(&(test_data->cyclecount_delay), arg); + + if (ret) { + RTE_LOG(ERR, USER1, "Failed to parse cyclecount delay\n"); + return -1; + } + return 0; +} + typedef int (*option_parser_t)(struct comp_test_data *test_data, const char *arg); struct long_opt_parser { const char *lgopt_name; option_parser_t parser_fn; - }; static struct option lgopts[] = { - { CPERF_PTEST_TYPE, required_argument, 0, 0 }, { CPERF_DRIVER_NAME, required_argument, 0, 0 }, { CPERF_TEST_FILE, required_argument, 0, 0 }, @@ -544,8 +575,11 @@ static struct option lgopts[] = { { CPERF_HUFFMAN_ENC, required_argument, 0, 0 }, { CPERF_LEVEL, required_argument, 0, 0 }, { CPERF_WINDOW_SIZE, required_argument, 0, 0 }, + { CPERF_EXTERNAL_MBUFS, 0, 0, 0 }, + { CPERF_CYCLECOUNT_DELAY_US, required_argument, 0, 0 }, { NULL, 0, 0, 0 } }; + static int comp_perf_opts_parse_long(int opt_idx, struct comp_test_data *test_data) { @@ -563,6 +597,8 @@ comp_perf_opts_parse_long(int opt_idx, struct comp_test_data *test_data) { CPERF_HUFFMAN_ENC, parse_huffman_enc }, { CPERF_LEVEL, parse_level }, { CPERF_WINDOW_SIZE, parse_window_sz }, + { CPERF_EXTERNAL_MBUFS, parse_external_mbufs }, + { CPERF_CYCLECOUNT_DELAY_US, parse_cyclecount_delay_us }, }; unsigned int i; @@ -584,7 +620,7 @@ comp_perf_options_parse(struct comp_test_data *test_data, int argc, char **argv) switch (opt) { case 'h': usage(argv[0]); - rte_exit(EXIT_SUCCESS, "Displayed help\n"); + exit(EXIT_SUCCESS); break; /* long options */ case 0: @@ -617,7 +653,9 @@ comp_perf_options_default(struct comp_test_data *test_data) test_data->level_lst.min = RTE_COMP_LEVEL_MIN; test_data->level_lst.max = RTE_COMP_LEVEL_MAX; test_data->level_lst.inc = 1; - test_data->test = CPERF_TEST_TYPE_BENCHMARK; + test_data->test = CPERF_TEST_TYPE_THROUGHPUT; + test_data->use_external_mbufs = 0; + test_data->cyclecount_delay = 500; } int