All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olivier Matz <olivier.matz@6wind.com>
To: "Eads, Gage" <gage.eads@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [PATCH v3] mempool: remove non-EAL thread note from header
Date: Thu, 30 Mar 2017 17:12:54 +0200	[thread overview]
Message-ID: <20170330171254.3ad8ff1e@platinum> (raw)
In-Reply-To: <9184057F7FC11744A2107296B6B8EB1E01E97BAD@FMSMSX108.amr.corp.intel.com>

Hi Gage,

On Wed, 29 Mar 2017 15:30:49 +0000, "Eads, Gage" <gage.eads@intel.com> wrote:
> >  -----Original Message-----
> >  From: Olivier Matz [mailto:olivier.matz@6wind.com]
> >  Sent: Friday, March 24, 2017 9:05 AM
> >  To: Eads, Gage <gage.eads@intel.com>
> >  Cc: dev@dpdk.org
> >  Subject: Re: [PATCH v3] mempool: remove non-EAL thread note from header
> >  
> >  Hi Gage,
> >  
> >  On Thu, 23 Mar 2017 09:20:58 -0500, Gage Eads <gage.eads@intel.com>
> >  wrote:  
> >  > Commit 30e6399892276 ("mempool: support non-EAL thread") added the
> >  > capability for non-EAL threads to use the mempool library. This commit
> >  > removes the note indicating that the mempool library cannot be used
> >  > safely by non-EAL threads.
> >  >
> >  > Also, fix a typo.
> >  >
> >  > Signed-off-by: Gage Eads <gage.eads@intel.com>
> >  > ---
> >  > v2: Changed commit message to referenced commit 30e63998 instead of
> >  > 4b5062755
> >  > v3: Fix checkpatch error
> >  >
> >  >  lib/librte_mempool/rte_mempool.h | 6 +-----
> >  >  1 file changed, 1 insertion(+), 5 deletions(-)
> >  >
> >  > diff --git a/lib/librte_mempool/rte_mempool.h
> >  > b/lib/librte_mempool/rte_mempool.h
> >  > index 991feaa..b1186fd 100644
> >  > --- a/lib/librte_mempool/rte_mempool.h
> >  > +++ b/lib/librte_mempool/rte_mempool.h
> >  > @@ -53,11 +53,7 @@
> >  >   *
> >  >   * Note: the mempool implementation is not preemptable. A lcore must
> >  >   * not be interrupted by another task that uses the same mempool
> >  > - * (because it uses a ring which is not preemptable). Also, mempool
> >  > - * functions must not be used outside the DPDK environment: for
> >  > - * example, in linuxapp environment, a thread that is not created by
> >  > - * the EAL must not use mempools. This is due to the per-lcore cache
> >  > - * that won't work as rte_lcore_id() will not return a correct value.
> >  > + * (because it uses a ring which is not preemptible).
> >  >   */
> >  >
> >  >  #include <stdio.h>  
> >  
> >  I agree the comment is not correct today. But I think we should still highlight
> >  that usual functions [ex: rte_mempool_get(), rte_mempool_put()] won't work
> >  when called on a non-EAL thread.  
> 
> My understanding is that non-EAL threads can call those functions, but their performance will suffer since they go directly to the underlying ring. Is that correct?

Yes, that's more correct than what I wrote :)


> 
> >  
> >  Maybe it could be reworded in that way:
> >  
> >  """
> >  Note: the mempool implementation is not preemptable. A lcore must not be
> >  interrupted by another task that uses the same mempool (because it uses a ring
> >  which is not preemptible). Also, usual mempool functions like
> >  rte_mempool_get() or rte_mempool_put() are designed to be called from an
> >  EAL thread due to the internal per-lcore cache. When using a mempool from a
> >  non-EAL thread, a user cache has to be provided to
> >  rte_mempool_generic_get() or rte_mempool_generic_put().
> >  """
> >  
> >  What do you think?  
> 
> Agreed, this looks better. If indeed non-EAL threads can call rte_mempool_get() and _put(), perhaps the last sentence can be reworked like so?
> 
> Due to the lack of caching, rte_mempool_get() or rte_mempool_put() performance
> will suffer when called by non-EAL threads. Instead, non-EAL threads should call
> rte_mempool_generic_get() or rte_mempool_generic_put() with a user cache
> created with rte_mempool_cache_create().

Looks good, thanks!

Olivier


> 
> >  
> >  Thanks,
> >  Olivier  

  reply	other threads:[~2017-03-30 15:12 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-21  2:34 [PATCH] mempool: remove non-EAL thread note from header Gage Eads
2017-03-22 17:04 ` [PATCH v2] " Gage Eads
2017-03-23 14:20   ` [PATCH v3] " Gage Eads
2017-03-24 14:04     ` Olivier Matz
2017-03-29 15:30       ` Eads, Gage
2017-03-30 15:12         ` Olivier Matz [this message]
2017-03-30 23:02     ` [PATCH v4] mempool: update non-EAL thread note in the header Gage Eads
2017-03-31 13:51       ` Olivier Matz
2017-04-03 16:32         ` Thomas Monjalon

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=20170330171254.3ad8ff1e@platinum \
    --to=olivier.matz@6wind.com \
    --cc=dev@dpdk.org \
    --cc=gage.eads@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.