From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id B9FD32B83 for ; Fri, 24 Nov 2017 17:07:05 +0100 (CET) Received: from pure.maildistiller.com (dispatch1.mdlocal [10.7.20.164]) by dispatch1-us1.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with ESMTP id 6660060ED6; Fri, 24 Nov 2017 16:07:05 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us3.ppe-hosted.com (us4-filterqueue.mdlocal [10.7.20.246]) by pure.maildistiller.com (Proofpoint Essentials ESMTP Server) with ESMTPS id C29EA22004F; Fri, 24 Nov 2017 16:07:04 +0000 (UTC) Received: from webmail.solarflare.com (webmail.solarflare.com [12.187.104.26]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1-us3.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with ESMTPS id ABDFBB4006E; Fri, 24 Nov 2017 16:07:04 +0000 (UTC) Received: from ocex03.SolarFlarecom.com (10.20.40.36) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25; Fri, 24 Nov 2017 08:07:02 -0800 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via Frontend Transport; Fri, 24 Nov 2017 08:07:01 -0800 Received: from uklogin.uk.solarflarecom.com (uklogin.uk.solarflarecom.com [10.17.10.10]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id vAOG707R019658; Fri, 24 Nov 2017 16:07:00 GMT Received: from uklogin.uk.solarflarecom.com (localhost.localdomain [127.0.0.1]) by uklogin.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id vAOG70S7021131; Fri, 24 Nov 2017 16:07:00 GMT From: Andrew Rybchenko To: CC: Olivier Matz Date: Fri, 24 Nov 2017 16:06:25 +0000 Message-ID: <1511539591-20966-1-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.2.3 MIME-Version: 1.0 Content-Type: text/plain X-MDID: 1511539625-0l4kp8BJuZ4x Subject: [dpdk-dev] [RFC PATCH 0/6] mempool: add bucket mempool driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Nov 2017 16:07:07 -0000 The patch series adds bucket mempool driver which allows to allocate (both physically and virtually) contiguous blocks of objects and adds mempool API to do it. It is still capable to provide separate objects, but it is definitely more heavy-weight than ring/stack drivers. The target usecase is dequeue in blocks and enqueue separate objects back (which are collected in buckets to be dequeued). So, the memory pool with bucket driver is created by an application and provided to networking PMD receive queue. The choice of bucket driver is done using rte_eth_dev_pool_ops_supported(). A PMD that relies upon contiguous block allocation should report the bucket driver as the only supported and preferred one. The number of objects in the contiguous block is a function of bucket memory size (.config option) and total element size. As I understand it breaks ABI so it requires 3 acks in accordance with policy, deprecation notice and mempool shared library version bump. If there is a way to avoid ABI breakage, please, let us know. In any case we would like to start from RFC discussion. Comments and ideas are welcome. The target DPDK release is 18.05. Artem V. Andreev (6): mempool: implement abstract mempool info API mempool: implement clustered object allocation mempool/bucket: implement bucket mempool manager mempool: add a function to flush default cache mempool: support block dequeue operation mempool/bucket: implement block dequeue operation MAINTAINERS | 9 + config/common_base | 2 + drivers/mempool/Makefile | 1 + drivers/mempool/bucket/Makefile | 49 ++ drivers/mempool/bucket/rte_mempool_bucket.c | 559 +++++++++++++++++++++ .../mempool/bucket/rte_mempool_bucket_version.map | 4 + lib/librte_mempool/rte_mempool.c | 41 +- lib/librte_mempool/rte_mempool.h | 179 ++++++- lib/librte_mempool/rte_mempool_ops.c | 16 + mk/rte.app.mk | 1 + test/test/test_mempool.c | 2 +- 11 files changed, 857 insertions(+), 6 deletions(-) create mode 100644 drivers/mempool/bucket/Makefile create mode 100644 drivers/mempool/bucket/rte_mempool_bucket.c create mode 100644 drivers/mempool/bucket/rte_mempool_bucket_version.map -- 2.7.4