> -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Artur Trybula > Sent: Monday, June 3, 2019 3:54 PM > To: dev@dpdk.org; fiona.tr...@intel.com; arturx.tryb...@intel.com; > adamx.dybkow...@intel.com > Subject: [dpdk-dev] [PATCH] app/test-compress-perf: report header > improvement > > This patch adds extra features to the compress performance test. Some > important parameters (memory allocation, number of ops, number of > segments) are calculated and printed out on the screen. > > Signed-off-by: Artur Trybula <arturx.tryb...@intel.com> > --- > app/test-compress-perf/main.c | 105 > +++++++++++++++++++++++++++++++--- > 1 file changed, 98 insertions(+), 7 deletions(-) > ...... > > - > +static void > +print_report_header(void) > +{ > + uint32_t opt_total_segs = DIV_CEIL(tests_res.input_data_sz, > + MAX_SEG_SIZE); > + > + if (tests_res.total_buffs > 1) { > + printf("\nWarning: for the current input parameters number" > + " of ops is higher than one, which may result" > + " in sub-optimal performance.\n"); > + printf("To improve the performance (for the current" > + " input data) following parameters are" > + " suggested:\n"); > + printf(" • Segment size: %d\n", MAX_SEG_SIZE); > + printf(" • Number of segments: %u\n", opt_total_segs); > + } else if (tests_res.total_buffs == 1) { > + printf("\nWarning: There is only one op with %u segments –" > + " the compression ratio is the best.\n", > + tests_res.segments_per_last_buff); > + if (tests_res.segment_sz < MAX_SEG_SIZE) > + printf("To reduce compression time, please use" > + " bigger segment size: %d.\n", > + MAX_SEG_SIZE); > + else if (tests_res.segment_sz == MAX_SEG_SIZE) > + printf("Segment size is optimal for the best" > + " performance.\n");
[Shally] Why these kind of warnings? If total_bufs > 1, then, how behavior would change? Same question for segment size as well? > + } else > + printf("Warning: something wrong happened!!\n"); > + > + printf("\nFor the current input parameters (segment size = %u," > + " segments number = %u):\n", > + tests_res.segment_sz, > + tests_res.segments_per_buff); > + printf(" • Total number of segments: %d\n", > + tests_res.total_segments); > + printf(" • %u segments %u bytes long, last segment %u" > + " byte(s) long\n", > + tests_res.total_segments - 1, > + tests_res.segment_sz, > + tests_res.last_segment_sz); > + printf(" • Number of ops: %u\n", tests_res.total_buffs); > + printf(" • Total memory allocation: %u\n", > + (tests_res.total_segments - 1) * tests_res.segment_sz > + + tests_res.last_segment_sz); > + if (tests_res.total_buffs > 1) > + printf(" • %u ops: %u segments in each," > + " segment size %u\n", > + tests_res.total_buffs - 1, > + tests_res.segments_per_buff, > + tests_res.segment_sz); > + if (tests_res.segments_per_last_buff > 1) { > + printf(" • 1 op %u segments:\n", > + tests_res.segments_per_last_buff); > + printf(" o %u segment size %u\n", > + tests_res.segments_per_last_buff - 1, > + tests_res.segment_sz); > + printf(" o last segment size %u\n", > + tests_res.last_segment_sz); > + } else if (tests_res.segments_per_last_buff == 1) { > + printf(" • 1 op (the last one): %u segment %u" > + " byte(s) long\n\n", > + tests_res.segments_per_last_buff, > + tests_res.last_segment_sz); > + } > +} > > int > main(int argc, char **argv) > @@ -533,8 +622,9 @@ main(int argc, char **argv) > else > level = test_data->level.list[0]; > > + print_report_header(); > + [Shally] looks like we're printing input characteristics and possible performance behavior. Is that the intention of this API? > printf("Burst size = %u\n", test_data->burst_sz); > - printf("File size = %zu\n", test_data->input_data_sz); > > printf("%6s%12s%17s%19s%21s%15s%21s%23s%16s\n", > "Level", "Comp size", "Comp ratio [%]", @@ -612,3 +702,4 > @@ main(int argc, char **argv) > } > return ret; > } > + > -- > 2.17.1