On Thu, 2018-12-27 at 12:13 +0800, Gavin Hu wrote: > ------------------------------------------------------------------- > --- > To precisely benchmark the spinlock performance, uses the precise > version of getting timestamps, which enforces the timestamps are > obtained at the expected places. > > Signed-off-by: Gavin Hu <gavin...@arm.com> > Reviewed-by: Phil Yang <phil.y...@arm.com> > --- > test/test/test_spinlock.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/test/test/test_spinlock.c b/test/test/test_spinlock.c > index 6795195ae..648474833 100644 > --- a/test/test/test_spinlock.c > +++ b/test/test/test_spinlock.c > @@ -113,14 +113,14 @@ load_loop_fn(void *func_param) > if (lcore != rte_get_master_lcore()) > while (rte_atomic32_read(&synchro) == 0); > > - begin = rte_get_timer_cycles(); > + begin = rte_rdtsc_precise(); > while (time_diff < hz * TIME_MS / 1000) { > if (use_lock) > rte_spinlock_lock(&lk); > lcount++; > if (use_lock) > rte_spinlock_unlock(&lk); > - time_diff = rte_get_timer_cycles() - begin; > + time_diff = rte_rdtsc_precise() - begin;
Since _precise() versions add a full barrier, time_diff would include delay of a full barrier also. As mentioned in the commit message, Do you see rte_get_timer_cycles() called in unexpected places? Is there difference in time_diff apart from delay in rte_mb() when using with _precise() version? > } > lock_count[lcore] = lcount; > return 0;