[dpdk-dev,v2] rte_ring: clarify preemptible nature of ring algorithm

Message ID 1527571694-121047-1-git-send-email-honnappa.nagarahalli@arm.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Honnappa Nagarahalli May 29, 2018, 5:28 a.m. UTC
  rte_ring implementation is not preemptible only under certain
circumstances. This clarification is helpful for data plane and
control plane communication using rte_ring.

Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
---
v2:
* Fixed checkpatch warnings

 lib/librte_ring/rte_ring.h | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
  

Comments

Anatoly Burakov May 29, 2018, 9:09 a.m. UTC | #1
On 29-May-18 6:28 AM, Honnappa Nagarahalli wrote:
> rte_ring implementation is not preemptible only under certain
> circumstances. This clarification is helpful for data plane and
> control plane communication using rte_ring.
> 
> Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
> ---
> v2:
> * Fixed checkpatch warnings
> 
>   lib/librte_ring/rte_ring.h | 9 +++++++--
>   1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/librte_ring/rte_ring.h b/lib/librte_ring/rte_ring.h
> index d3d3f7f..2f9c945 100644
> --- a/lib/librte_ring/rte_ring.h
> +++ b/lib/librte_ring/rte_ring.h
> @@ -26,8 +26,13 @@
>    * - Bulk dequeue.
>    * - Bulk enqueue.
>    *
> - * Note: the ring implementation is not preemptable. A lcore must not
> - * be interrupted by another task that uses the same ring.
> + * Note: the ring implementation can block threads from completing their
> + * operation under the following circumstances.
> + * A preempted thread can block other threads (operating on the same ring)
> + * from completing their operations, only if those threads are performing
> + * the same ring operation (enqueue/dequeue) as the preempted thread.
> + * In other words, a preempted consumer thread will not block any producer
> + * threads and vice versa.
>    *
>    */
>   
> 

Similar clarification is already present in Programmer's Guide for 
rte_ring section. Perhaps it would be good to reference it here?
  
Honnappa Nagarahalli May 29, 2018, 4:36 p.m. UTC | #2
I do not see the documentation regarding this in programmer's guide.

-----Original Message-----
From: Burakov, Anatoly <anatoly.burakov@intel.com>

Sent: Tuesday, May 29, 2018 4:10 AM
To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; olivier.matz@6wind.com
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2] rte_ring: clarify preemptible nature of ring algorithm

On 29-May-18 6:28 AM, Honnappa Nagarahalli wrote:
> rte_ring implementation is not preemptible only under certain

> circumstances. This clarification is helpful for data plane and

> control plane communication using rte_ring.

>

> Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

> Reviewed-by: Gavin Hu <gavin.hu@arm.com>

> Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>

> ---

> v2:

> * Fixed checkpatch warnings

>

>   lib/librte_ring/rte_ring.h | 9 +++++++--

>   1 file changed, 7 insertions(+), 2 deletions(-)

>

> diff --git a/lib/librte_ring/rte_ring.h b/lib/librte_ring/rte_ring.h

> index d3d3f7f..2f9c945 100644

> --- a/lib/librte_ring/rte_ring.h

> +++ b/lib/librte_ring/rte_ring.h

> @@ -26,8 +26,13 @@

>    * - Bulk dequeue.

>    * - Bulk enqueue.

>    *

> - * Note: the ring implementation is not preemptable. A lcore must not

> - * be interrupted by another task that uses the same ring.

> + * Note: the ring implementation can block threads from completing

> + their

> + * operation under the following circumstances.

> + * A preempted thread can block other threads (operating on the same

> + ring)

> + * from completing their operations, only if those threads are

> + performing

> + * the same ring operation (enqueue/dequeue) as the preempted thread.

> + * In other words, a preempted consumer thread will not block any

> + producer

> + * threads and vice versa.

>    *

>    */

>

>


Similar clarification is already present in Programmer's Guide for rte_ring section. Perhaps it would be good to reference it here?

--
Thanks,
Anatoly
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
  
Anatoly Burakov May 30, 2018, 7:47 a.m. UTC | #3
On 29-May-18 5:36 PM, Honnappa Nagarahalli wrote:
> I do not see the documentation regarding this in programmer's guide.

Hi

Apologies, it's not in rte_ring section, it's in programmer's guide for EAL:

http://www.dpdk.org/doc/guides/prog_guide/env_abstraction_layer.html#known-issues

Perhaps this could be referenced in the rte_ring (or indeed copied/moved 
there)?
  
Honnappa Nagarahalli May 31, 2018, 4:53 a.m. UTC | #4
No problem, it is still in programmer's guide :). I will rework the patch.
Thank you,
Honnappa

-----Original Message-----
From: Burakov, Anatoly <anatoly.burakov@intel.com>

Sent: Wednesday, May 30, 2018 2:48 AM
To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; olivier.matz@6wind.com
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2] rte_ring: clarify preemptible nature of ring algorithm

On 29-May-18 5:36 PM, Honnappa Nagarahalli wrote:
> I do not see the documentation regarding this in programmer's guide.


Hi

Apologies, it's not in rte_ring section, it's in programmer's guide for EAL:

http://www.dpdk.org/doc/guides/prog_guide/env_abstraction_layer.html#known-issues

Perhaps this could be referenced in the rte_ring (or indeed copied/moved there)?

--
Thanks,
Anatoly
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
  
Olivier Matz June 25, 2018, 3:37 p.m. UTC | #5
Hi Honnappa,

On Thu, May 31, 2018 at 04:53:01AM +0000, Honnappa Nagarahalli wrote:
> > -----Original Message-----
> > From: Burakov, Anatoly <anatoly.burakov@intel.com>
> > Sent: Wednesday, May 30, 2018 2:48 AM
> > To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; olivier.matz@6wind.com
> > Cc: dev@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH v2] rte_ring: clarify preemptible nature of ring algorithm
> > 
> > On 29-May-18 5:36 PM, Honnappa Nagarahalli wrote:
> > > I do not see the documentation regarding this in programmer's guide.
> > 
> > Hi
> > 
> > Apologies, it's not in rte_ring section, it's in programmer's guide for EAL:
> > 
> > http://www.dpdk.org/doc/guides/prog_guide/env_abstraction_layer.html#known-issues
> > 
> > Perhaps this could be referenced in the rte_ring (or indeed copied/moved there)?
>
> No problem, it is still in programmer's guide :). I will rework the patch.
> Thank you,
> Honnappa

Thank you for your patch proposal. Do you still plan to submit a new version?

I think the description from
http://www.dpdk.org/doc/guides/prog_guide/env_abstraction_layer.html#known-issues
should be moved in rte_ring.h header.

Thanks,
Olivier
  
Honnappa Nagarahalli July 10, 2018, 12:16 a.m. UTC | #6
-----Original Message-----
From: Olivier Matz <olivier.matz@6wind.com> 
Sent: Monday, June 25, 2018 10:37 AM
To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Cc: Burakov, Anatoly <anatoly.burakov@intel.com>; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2] rte_ring: clarify preemptible nature of ring algorithm

Hi Honnappa,

On Thu, May 31, 2018 at 04:53:01AM +0000, Honnappa Nagarahalli wrote:
> > -----Original Message-----
> > From: Burakov, Anatoly <anatoly.burakov@intel.com>
> > Sent: Wednesday, May 30, 2018 2:48 AM
> > To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; olivier.matz@6wind.com
> > Cc: dev@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH v2] rte_ring: clarify preemptible nature of ring algorithm
> > 
> > On 29-May-18 5:36 PM, Honnappa Nagarahalli wrote:
> > > I do not see the documentation regarding this in programmer's guide.
> > 
> > Hi
> > 
> > Apologies, it's not in rte_ring section, it's in programmer's guide for EAL:
> > 
> > http://www.dpdk.org/doc/guides/prog_guide/env_abstraction_layer.html#known-issues
> > 
> > Perhaps this could be referenced in the rte_ring (or indeed copied/moved there)?
>
> No problem, it is still in programmer's guide :). I will rework the patch.
> Thank you,
> Honnappa

Thank you for your patch proposal. Do you still plan to submit a new version?

I think the description from
http://www.dpdk.org/doc/guides/prog_guide/env_abstraction_layer.html#known-issues
should be moved in rte_ring.h header.

Apologies for the late reply, have been on vacation.

I have a patch ready, it took time undergoing internal review, will send it out soon.

Thanks,
Olivier
  

Patch

diff --git a/lib/librte_ring/rte_ring.h b/lib/librte_ring/rte_ring.h
index d3d3f7f..2f9c945 100644
--- a/lib/librte_ring/rte_ring.h
+++ b/lib/librte_ring/rte_ring.h
@@ -26,8 +26,13 @@ 
  * - Bulk dequeue.
  * - Bulk enqueue.
  *
- * Note: the ring implementation is not preemptable. A lcore must not
- * be interrupted by another task that uses the same ring.
+ * Note: the ring implementation can block threads from completing their
+ * operation under the following circumstances.
+ * A preempted thread can block other threads (operating on the same ring)
+ * from completing their operations, only if those threads are performing
+ * the same ring operation (enqueue/dequeue) as the preempted thread.
+ * In other words, a preempted consumer thread will not block any producer
+ * threads and vice versa.
  *
  */