[dpdk-dev] [PATCH v3 3/9] ring: introduce RTS ring mode

David Marchand david.marchand at redhat.com
Mon Apr 13 16:29:30 CEST 2020


On Sat, Apr 11, 2020 at 1:10 AM Honnappa Nagarahalli
<Honnappa.Nagarahalli at arm.com> wrote:
>
> <snip>
>
> > Subject: RE: [PATCH v3 3/9] ring: introduce RTS ring mode
> >
> > > > Introduce relaxed tail sync (RTS) mode for MT ring synchronization.
> > > > Aim to reduce stall times in case when ring is used on overcommited
> > > > cpus (multiple active threads on the same cpu).
> > > > The main difference from original MP/MC algorithm is that tail value
> > > > is increased not by every thread that finished enqueue/dequeue, but
> > > > only by the last one.
> > > > That allows threads to avoid spinning on ring tail value, leaving
> > > > actual tail value change to the last thread in the update queue.
> > > >
> > > > check-abi.sh reports what I believe is a false-positive about ring
> > > > cons/prod changes. As a workaround, devtools/libabigail.abignore is
> > > > updated to suppress *struct ring* related errors.
> > > This can be removed from the commit message.
> > >
> > > >
> > > > Signed-off-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
> > > > ---
> > > >  devtools/libabigail.abignore           |   7 +
> > > >  lib/librte_ring/Makefile               |   5 +-
> > > >  lib/librte_ring/meson.build            |   5 +-
> > > >  lib/librte_ring/rte_ring.c             | 100 +++++++-
> > > >  lib/librte_ring/rte_ring.h             | 110 ++++++++-
> > > >  lib/librte_ring/rte_ring_elem.h        |  86 ++++++-
> > > >  lib/librte_ring/rte_ring_rts.h         | 316 +++++++++++++++++++++++++
> > > >  lib/librte_ring/rte_ring_rts_elem.h    | 205 ++++++++++++++++
> > > >  lib/librte_ring/rte_ring_rts_generic.h | 210 ++++++++++++++++
> > > >  9 files changed, 1015 insertions(+), 29 deletions(-)  create mode
> > > > 100644 lib/librte_ring/rte_ring_rts.h  create mode 100644
> > > > lib/librte_ring/rte_ring_rts_elem.h
> > > >  create mode 100644 lib/librte_ring/rte_ring_rts_generic.h
> > > >
> > > > diff --git a/devtools/libabigail.abignore
> > > > b/devtools/libabigail.abignore index a59df8f13..cd86d89ca 100644
> > > > --- a/devtools/libabigail.abignore
> > > > +++ b/devtools/libabigail.abignore
> > > > @@ -11,3 +11,10 @@
> > > >          type_kind = enum
> > > >          name = rte_crypto_asym_xform_type
> > > >          changed_enumerators =
> > RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END
> > > > +; Ignore updates of ring prod/cons
> > > > +[suppress_type]
> > > > +        type_kind = struct
> > > > +        name = rte_ring
> > > > +[suppress_type]
> > > > +        type_kind = struct
> > > > +        name = rte_event_ring
> > > Does this block the reporting of these structures forever?
> >
> > Till we'll have a fix in libabigail, then we can remove these lines.
> > I don't know any better alternative.
> David, does this block all issues in the future for rte_ring library?

These two "suppression rules" make libabigail consider as harmless any
change on the structures rte_ring and rte_event_ring.
With those suppression rules, you won't get any complaint from
libabigail (if this is what you call issues :-)).

Reviews on those structures must be extra careful, as we are blind
with those rules in place.


-- 
David Marchand



More information about the dev mailing list