From: Harris, James R <james.r.harris at intel.com>
To: spdk@lists.01.org
Subject: Re: [SPDK] SPDK Ring Enqueue/Dequeue Issue
Date: Wed, 19 Sep 2018 19:07:15 +0000 [thread overview]
Message-ID: <8C6480B2-5BD1-42D8-970F-DF40372A8A83@intel.com> (raw)
In-Reply-To: CANvN+eksjq5WQAAw+vMvyy6JH0cx=ZwE=PXEM2iio7RqyHzH6Q@mail.gmail.com
[-- Attachment #1: Type: text/plain, Size: 1970 bytes --]
On 9/19/18, 11:37 AM, "SPDK on behalf of Andrey Kuzmin" <spdk-bounces(a)lists.01.org on behalf of andrey.v.kuzmin(a)gmail.com> wrote:
On Wed, Sep 19, 2018 at 9:13 PM John Barnard <john.barnard(a)broadcom.com>
wrote:
<snip>
>
> It seems that the spdk_ring_enqueue function calls
> rte_ring_mp_enqueue_bulk(), while spdk_ring_dequeue function calls
> rte_ring_sc_dequeue_burst(). When we change it to call
> ret_ring_mp_dequeue_burst(), the problem went away. So my question is, why
> this difference in the rte calls made by the SPDK? Is this a bug or on
> purpose? Also, we noticed that there is no ring create flag (in
> include/spdk/env.h) for multi-producer, multi-consumer (i.e.
> SPDK_RING_TYPE_MP_MC), although it doesn't seem to matter if we pass the
> SPDK_RING_TYPE_MP_SC flag to spdk_ring_create() (i.e. it's the call to
> rte_ring_mp_dequeue_burst that's critical). Is there a reason this flag
> was left out?
>
The two issues above are interrelated. SPDK seemingly does not care for
MP/MC rings, so it neither defines the flag to create the respective ring
type, nor appreciates this ring type under ring_dequeue (for enqueue, it
uses MP flavor which works for SP case as well).
The definitive answer as to why belongs to the SPDK team, while my guess is
that rings in SPDK are primarily (and solely, to the best of my knowledge)
for passing messages between SPDK threads where MP/MC scenario does not
apply.
Andrey is correct. There hasn’t been a use case for MP/MC rings in SPDK yet. Rings are primarily used today for passing messages to a specific reactor – each reactor has its own ring (so it’s single consumer) but any thread may post messages to it.
I see no reason to not add MP/MC support if it’s needed for NVMe-oF FC.
John – is this something you’d like to tackle?
-Jim
next reply other threads:[~2018-09-19 19:07 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-19 19:07 Harris, James R [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-09-19 22:01 [SPDK] SPDK Ring Enqueue/Dequeue Issue Harris, James R
2018-09-19 21:38 John Barnard
2018-09-19 21:24 Harris, James R
2018-09-19 21:14 John Barnard
2018-09-19 19:48 Harris, James R
2018-09-19 19:42 Walker, Benjamin
2018-09-19 18:37 Andrey Kuzmin
2018-09-19 18:13 John Barnard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8C6480B2-5BD1-42D8-970F-DF40372A8A83@intel.com \
--to=spdk@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox