[dpdk-dev] [PATCH] mempool: try to get objects from cache when the mempool is single consumer and multiple producer
Ananyev, Konstantin
konstantin.ananyev at intel.com
Mon Jan 9 11:36:09 CET 2017
Hi,
> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Wenfeng Liu
> Sent: Monday, January 9, 2017 10:25 AM
> To: olivier.matz at 6wind.com
> Cc: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH] mempool: try to get objects from cache when the mempool is single consumer and multiple producer
>
> We put objects to cache when the mempool is multiple producer, however the cache will not be used when it is single consumer.
> With this patch we can get objects from cache when the single consumer is happen to be one of the producers, and this improves
> performance.
>
> Signed-off-by: Wenfeng Liu <liuwf at arraynetworks.com.cn>
> ---
> lib/librte_mempool/rte_mempool.h | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h
> index d315d42..4ab5a95 100644
> --- a/lib/librte_mempool/rte_mempool.h
> +++ b/lib/librte_mempool/rte_mempool.h
> @@ -1250,8 +1250,9 @@ __mempool_generic_get(struct rte_mempool *mp, void **obj_table,
> uint32_t index, len;
> void **cache_objs;
>
> - /* No cache provided or single consumer */
> - if (unlikely(cache == NULL || flags & MEMPOOL_F_SC_GET ||
> + /* No cache provided or single consumer and single producer */
> + if (unlikely(cache == NULL ||
> + (flags & MEMPOOL_F_SC_GET) && (flags & MEMPOOL_F_SP_PUT) ||
I suppose that's a good thing to do...
Might be go one step further and don't check flags at all?
if (unlikely(cache == NULL || n >= cache->size)
goto ring_dequeue;
If people don't want to have a mempool with cache,
they can just specify it at mempool creation time.
Again cache might improve performance even for SC|SP case.
Konstantin
> n >= cache->size))
> goto ring_dequeue;
>
> --
> 2.7.4
More information about the dev
mailing list