On Tue, Mar 9, 2021 at 2:36 PM Feifei Wang <[email protected]> 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 <[email protected]> > > 发送时间: 2021年2月25日 17:32 > > 收件人: [email protected]; Sunil Kumar Kori <[email protected]>; David > > Marchand <[email protected]> > > 抄送: [email protected]; nd <[email protected]>; Feifei Wang > > <[email protected]>; [email protected]; Honnappa Nagarahalli > > <[email protected]>; Honnappa Nagarahalli > > <[email protected]>; Ruifeng Wang > > <[email protected]> > > 主题: [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: [email protected] > > Cc: [email protected] > > > > Suggested-by: Honnappa Nagarahalli <[email protected]> > > Signed-off-by: Feifei Wang <[email protected]> > > Reviewed-by: Honnappa Nagarahalli <[email protected]> > > Reviewed-by: Ruifeng Wang <[email protected]> Please change to test/trace: .... The rest looks good to me. Acked-by: Jerin Jacob <[email protected]> > > --- > > 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 >

