From patchwork Tue Oct 8 19:19:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 175552 Delivered-To: patch@linaro.org Received: by 2002:a92:7e96:0:0:0:0:0 with SMTP id q22csp6116034ill; Tue, 8 Oct 2019 12:19:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqw1HgOwRiZzbEdHmd4aEwIVHmHbURmIAhgwrpvV9t44VY0JPYvWRBc5Wwe3z5BLbj0hLsvv X-Received: by 2002:a17:906:ecf9:: with SMTP id qt25mr28850443ejb.249.1570562361153; Tue, 08 Oct 2019 12:19:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570562361; cv=none; d=google.com; s=arc-20160816; b=k5SQuzKPO0CmCalfkvTYVeTz9sEh6drwuFSNKhKXH3zdWpUo3yFlr9LDZ5FoHt1uBf ESns6EtB8fJ25am8H1QeTgbDZLamfhalEVYzOgu/0Cj/ywm2v+AfXN6SjciDOHjvBa5W xF4UB7LjRW8YMwXk3jhs3rqsjNACrJVQ/39dHXYdV9H0maEd7FWMylBj5q8kpf3sQXXU +W+3hofwWrX5MAle2MDYKNdajlfiQknKralh876ytQp3G4Ph8QfnbTbyffWLeDCBdFVY qHKHbHmCKOFT3UCacySqm3UdG7TiXCMpwagnm6+HFnFCblwX8/HBD9cRnvV8Im1sT7H9 ox3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:cc:to:from; bh=mMO1F1vlw1jS1bi5dvIquJ0OFdAS9W4sj8rny/Ve4dU=; b=gX+lj+TIT7KXmJNJj+5tenWNjX86WFKHZ8hXo6BA+zed74ZXWg5nf6KRT4sDJAkgy1 X/qZmGqNa0JDul8Vu0EHvDO5M8aN9bM4ermq+tTo/oJsfqaLE44zkp/goV4u7z92zDYn DwntvS/tK2IMbfXcmIaFw0oiXeqoKEp3ELrop4bz6or6yYCkANy7/0/rZB+9JRgppSXy VdGje6I+3K7xDQiteNqhg/7GwsyIHYmrRQ6lBVKb98ucEAJXslpg/QHZeBxx6kxbgRYn Uo3HJ+akp0wK9DFkkxRC5No6FI96eDTwxypbSjvnU1NSuJwRKURL5LgITZcVq4xAulf3 5Hbw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id k53si3576832edb.303.2019.10.08.12.19.20; Tue, 08 Oct 2019 12:19:21 -0700 (PDT) Received-SPF: pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) client-ip=92.243.14.124; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 96A8F1C0C4; Tue, 8 Oct 2019 21:19:19 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 7C33C1C0C3 for ; Tue, 8 Oct 2019 21:19:18 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7552315BE; Tue, 8 Oct 2019 12:19:17 -0700 (PDT) Received: from qc2400f-1.austin.arm.com (qc2400f-1.austin.arm.com [10.118.12.34]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6AD753F6C4; Tue, 8 Oct 2019 12:19:17 -0700 (PDT) From: Honnappa Nagarahalli To: olivier.matz@6wind.com, sthemmin@microsoft.com, jerinj@marvell.com, bruce.richardson@intel.com, david.marchand@redhat.com, pbhagavatula@marvell.com, konstantin.ananyev@intel.com, honnappa.nagarahalli@arm.com Cc: dev@dpdk.org, dharmik.thakkar@arm.com, ruifeng.wang@arm.com, gavin.hu@arm.com Date: Tue, 8 Oct 2019 14:19:07 -0500 Message-Id: <20191008191909.361-1-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190906190510.11146-1-honnappa.nagarahalli@arm.com> References: <20190906190510.11146-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH v3 0/2] lib/ring: APIs to support custom element size 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The current rte_ring hard-codes the type of the ring element to 'void *', hence the size of the element is hard-coded to 32b/64b. Since the ring element type is not an input to rte_ring APIs, it results in couple of issues: 1) If an application requires to store an element which is not 64b, it needs to write its own ring APIs similar to rte_event_ring APIs. This creates additional burden on the programmers, who end up making work-arounds and often waste memory. 2) If there are multiple libraries that store elements of the same type, currently they would have to write their own rte_ring APIs. This results in code duplication. This patch adds new APIs to support configurable ring element size. The APIs support custom element sizes by allowing to define the ring element to be a multiple of 32b. The aim is to achieve same performance as the existing ring implementation. The patch adds same performance tests that are run for existing APIs. This allows for performance comparison. I also tested with memcpy. x86 shows significant improvements on bulk and burst tests. On the Arm platform, I used, there is a drop of 4% to 6% in few tests. May be this is something that we can explore later. Note that this version skips changes to other libraries as I would like to get an agreement on the implementation from the community. They will be added once there is agreement on the rte_ring changes. v3 - Removed macro-fest and used inline functions (Stephen, Bruce) v2 - Change Event Ring implementation to use ring templates (Jerin, Pavan) Honnappa Nagarahalli (2): lib/ring: apis to support configurable element size test/ring: add test cases for configurable element size ring app/test/Makefile | 1 + app/test/meson.build | 1 + app/test/test_ring_perf_elem.c | 419 ++++++++++++ lib/librte_ring/Makefile | 3 +- lib/librte_ring/meson.build | 3 + lib/librte_ring/rte_ring.c | 45 +- lib/librte_ring/rte_ring.h | 1 + lib/librte_ring/rte_ring_elem.h | 946 +++++++++++++++++++++++++++ lib/librte_ring/rte_ring_version.map | 2 + 9 files changed, 1412 insertions(+), 9 deletions(-) create mode 100644 app/test/test_ring_perf_elem.c create mode 100644 lib/librte_ring/rte_ring_elem.h -- 2.17.1