[dpdk-dev] [PATCH v5 18/19] ring: add sched_yield to avoid spin forever

Liang, Cunming cunming.liang at intel.com
Thu Feb 12 14:05:27 CET 2015


Hi,

> -----Original Message-----
> From: Olivier MATZ [mailto:olivier.matz at 6wind.com]
> Sent: Thursday, February 12, 2015 7:16 PM
> To: Liang, Cunming; dev at dpdk.org
> Cc: Ananyev, Konstantin
> Subject: Re: [PATCH v5 18/19] ring: add sched_yield to avoid spin forever
> 
> Hi,
> 
> On 02/12/2015 09:16 AM, Cunming Liang wrote:
> > Add a sched_yield() syscall if the thread spins for too long, waiting other thread
> to finish its operations on the ring.
> > That gives pre-empted thread a chance to proceed and finish with ring
> enqnue/dequeue operation.
> > The purpose is to reduce contention on the ring. By ring_perf_test, it doesn't
> shows additional perf penalty.
> >
> > Signed-off-by: Cunming Liang <cunming.liang at intel.com>
> > ---
> >   v5 changes:
> >     add RTE_RING_PAUSE_REP to config file
> >
> >   v4 changes:
> >     update and add more comments on sched_yield()
> >
> >   v3 changes:
> >     new patch adding sched_yield() in rte_ring to avoid long spin
> >
> >   config/common_bsdapp       |  1 +
> >   config/common_linuxapp     |  1 +
> >   lib/librte_ring/rte_ring.h | 31 +++++++++++++++++++++++++++----
> >   3 files changed, 29 insertions(+), 4 deletions(-)
> >
> > diff --git a/config/common_bsdapp b/config/common_bsdapp
> > index 57bacb8..52c5143 100644
> > --- a/config/common_bsdapp
> > +++ b/config/common_bsdapp
> > @@ -234,6 +234,7 @@ CONFIG_RTE_PMD_PACKET_PREFETCH=y
> >   CONFIG_RTE_LIBRTE_RING=y
> >   CONFIG_RTE_LIBRTE_RING_DEBUG=n
> >   CONFIG_RTE_RING_SPLIT_PROD_CONS=n
> > +CONFIG_RTE_RING_PAUSE_REP=n
> 
> Maybe it's better to use CONFIG_RTE_RING_PAUSE_REP=0 instead?
> If I understand well, it has to be set to an integer value to
> enable it, am I correct?
[LCM] If RTE_RING_PAUSE_REP=N (no define), by default will use 0. If it's set to 'y'(=1), will issue yield in the most frequent rate.
It also can set as integer to assign any number. All cases works for this configure.
One point is in configure file, just demonstrate the default way to use it.
It can't prevent to use anything unexpected. Except we rule the n & y illegal for this option.
The meaningful value of it can write in the doc.
> 
> Thanks,
> Olivier



More information about the dev mailing list