From patchwork Thu Dec 20 17:42:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Hu X-Patchwork-Id: 49213 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1D29E1BDDC; Thu, 20 Dec 2018 18:42:51 +0100 (CET) Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 0473E5B2C for ; Thu, 20 Dec 2018 18:42:49 +0100 (CET) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3AE7780D; Thu, 20 Dec 2018 09:42:49 -0800 (PST) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id C1AA93F575; Thu, 20 Dec 2018 09:42:47 -0800 (PST) From: Gavin Hu To: dev@dpdk.org Cc: thomas@monjalon.net, bruce.richardson@intel.com, jerinj@marvell.com, hemant.agrawal@nxp.com, ferruh.yigit@intel.com, Honnappa.Nagarahalli@arm.com, nd@arm.com, Gavin Hu Date: Fri, 21 Dec 2018 01:42:24 +0800 Message-Id: <20181220174229.5834-1-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20181220104246.5590-1-gavin.hu@arm.com> References: <20181220104246.5590-1-gavin.hu@arm.com> Subject: [dpdk-dev] [PATCH v2 0/5] spinlock optimization and test case enhancements 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" V2: 1. FORCE_INTRINCIS is still an option for ppc/x86, although not is use by default, so don't remove it from generic file. 2. Fix the clang compiler error on x86 when the above FORCE_INTRINSICS is enabled. V1: 1. Remove the 1us delay outside of the locked region to really benchmark the spinlock acquire/release performance, not the delay API. 2. Use the precise version of getting timestamps for more precise benchmarking results. 3. Amortize the overhead of getting the timestamp by 10000 loops. 4. Move the arm specific implementation to arm folder to remove the hardcoded implementation. 5. Use atomic primitives, which translate to one-way barriers, instead of two-way sync primitives, to optimize for performance. Gavin Hu (5): test/spinlock: remove 1us delay for correct benchmarking test/spinlock: get timestamp more precisely test/spinlock: amortize the cost of getting time spinlock: reimplement with atomic one-way barrier builtins eal: fix clang compilation error on x86 lib/librte_eal/common/include/generic/rte_atomic.h | 6 ++-- .../common/include/generic/rte_spinlock.h | 18 ++++++++---- test/test/test_spinlock.c | 32 +++++++++++----------- 3 files changed, 32 insertions(+), 24 deletions(-)