Messages in this thread | | | Subject | Re: [PATCHv7 18/33] lib/vdso: Add unlikely() hint into vdso_read_begin() | From | Vincenzo Frascino <> | Date | Wed, 16 Oct 2019 12:24:14 +0100 |
| |
On 10/11/19 2:23 AM, Dmitry Safonov wrote: > From: Andrei Vagin <avagin@gmail.com> > > Place the branch with no concurrent write before contended case. > > Performance numbers for Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz > (more clock_gettime() cycles - the better): > | before | after > ----------------------------------- > | 150252214 | 153242367 > | 150301112 | 153324800 > | 150392773 | 153125401 > | 150373957 | 153399355 > | 150303157 | 153489417 > | 150365237 | 153494270 > ----------------------------------- > avg | 150331408 | 153345935 > diff % | 2 | 0 > ----------------------------------- > stdev % | 0.3 | 0.1 > > Signed-off-by: Andrei Vagin <avagin@gmail.com> > Co-developed-by: Dmitry Safonov <dima@arista.com> > Signed-off-by: Dmitry Safonov <dima@arista.com>
Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Tested-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> --- > include/vdso/helpers.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/vdso/helpers.h b/include/vdso/helpers.h > index 01641dbb68ef..9a2af9fca45e 100644 > --- a/include/vdso/helpers.h > +++ b/include/vdso/helpers.h > @@ -10,7 +10,7 @@ static __always_inline u32 vdso_read_begin(const struct vdso_data *vd) > { > u32 seq; > > - while ((seq = READ_ONCE(vd->seq)) & 1) > + while (unlikely((seq = READ_ONCE(vd->seq)) & 1)) > cpu_relax(); > > smp_rmb(); >
-- Regards, Vincenzo
| |