Hi, Jerin Sorry to disturb you. Would you please help review this patch when you are free? Thanks very much.
Best Regards Feifei > -----邮件原件----- > 发件人: Feifei Wang <feifei.wa...@arm.com> > 发送时间: 2021年2月25日 17:32 > 收件人: jer...@marvell.com; Sunil Kumar Kori <sk...@marvell.com>; David > Marchand <david.march...@redhat.com> > 抄送: dev@dpdk.org; nd <n...@arm.com>; Feifei Wang > <feifei.wa...@arm.com>; sta...@dpdk.org; Honnappa Nagarahalli > <honnappa.nagaraha...@arm.com>; Honnappa Nagarahalli > <honnappa.nagaraha...@arm.com>; Ruifeng Wang > <ruifeng.w...@arm.com> > 主题: [PATCH v2 1/1] app/test: collect perf data after worker threads exit > > The measure_perf function should be executed after worker threads exit to > collect correct perf data. Otherwise, while workers are running, the main > thread may get incomplete data from workers. > > In the meanwhile, remove unnecessary barrier in the test. > For signal variables "ldata.done" and "ldata.start", no operations should keep > the order that being executed after them. So the wmb after them can be > moved. > > Fixes: 16a277a24c9f ("test/trace: add performance test cases") > Cc: jer...@marvell.com > Cc: sta...@dpdk.org > > Suggested-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com> > Signed-off-by: Feifei Wang <feifei.wa...@arm.com> > Reviewed-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com> > Reviewed-by: Ruifeng Wang <ruifeng.w...@arm.com> > --- > app/test/test_trace_perf.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/app/test/test_trace_perf.c b/app/test/test_trace_perf.c index > e1ad8e6f5..46ae7d807 100644 > --- a/app/test/test_trace_perf.c > +++ b/app/test/test_trace_perf.c > @@ -79,7 +79,6 @@ signal_workers_to_finish(struct test_data *data) > > for (workers = 0; workers < data->nb_workers; workers++) { > data->ldata[workers].done = 1; > - rte_smp_wmb(); > } > } > > @@ -102,7 +101,6 @@ worker_fn_##func(void *arg) \ { \ > struct lcore_data *ldata = arg; \ > ldata->started = 1; \ > - rte_smp_wmb(); \ > __worker_##func(ldata); \ > return 0; \ > } > @@ -137,11 +135,12 @@ run_test(const char *str, lcore_function_t f, struct > test_data *data, size_t sz) > > wait_till_workers_are_ready(data); > rte_delay_ms(100); /* Wait for some time to accumulate the stats */ > - measure_perf(str, data); > signal_workers_to_finish(data); > > RTE_LCORE_FOREACH_WORKER(id) > rte_eal_wait_lcore(id); > + > + measure_perf(str, data); > } > > static int > -- > 2.25.1