On Tue, Mar 9, 2021 at 2:36 PM Feifei Wang <feifei.wa...@arm.com> wrote: > > Hi, Jerin > > Sorry to disturb you. Would you please help review this patch when you are > free?
Sure. See below. > 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> Please change to test/trace: .... The rest looks good to me. Acked-by: Jerin Jacob <jer...@marvell.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 >