From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wenfeng Liu Subject: [PATCH] mempool: try to get objects from cache when the mempool is single consumer and multiple producer Date: Mon, 9 Jan 2017 10:24:47 +0000 Message-ID: <1483957487-92635-1-git-send-email-liuwf@arraynetworks.com.cn> Mime-Version: 1.0 Content-Type: text/plain Cc: To: Return-path: Received: from mail01.arraynetworks.com.cn (mail.arraynetworks.com.cn [124.42.99.121]) by dpdk.org (Postfix) with ESMTP id 46FCA2C58 for ; Mon, 9 Jan 2017 11:22:32 +0100 (CET) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- 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) || n >= cache->size)) goto ring_dequeue; -- 2.7.4