From patchwork Fri Oct 23 04:43:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 318906 Delivered-To: patch@linaro.org Received: by 2002:a92:d1d1:0:0:0:0:0 with SMTP id u17csp125529ilg; Thu, 22 Oct 2020 21:44:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwKvOxMmVSMHBzKI4ZfzCSyna7u0ryHmhcG6AvH7qWbuRjvqTmW5IptLxuvTqMrk9aL3Rid X-Received: by 2002:a05:6402:c6:: with SMTP id i6mr472482edu.363.1603428249624; Thu, 22 Oct 2020 21:44:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603428249; cv=none; d=google.com; s=arc-20160816; b=dZDJ3US9u8wZNWMjZEsj7eiGfCckLDMraWJqtyBNLAvvjl394gdIG7AXAR7210K/Xq V0cKpTHOoCDGkLAf50dqN9pykLZTGHR7yaArZdPgprnek/IM8Amm8v58viQ0F2u8nC+k gnCmEy+lxbGBxzm5Q0yfnYIYSArsy/ygzB7XItTukYcKp+oamd8IESROtnPXj9Y9mtK0 y+LVAC9nl5WM6HQhPEYAnZVTJvGqd3mPLPZd5HBamhsQkUkQ/E1iFE3PKt32DeozRXv5 waUTubAFYU8WKTyElzGIarn7WMvIntBLHMEzXSMMPOtencfTUPEfK2TPZps8ZsDfLzum VURw== 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=z7+/NqpFhVh+lbH+Bo0wtsfYr2by74xrNE/ZdfI1xdE=; b=GpwSRTzZpFDaOv2+OTHls5h33TTD1wQFgUCCjt8COHvXf+oiAqPkbFfyKHFScXWp/q ntTv6MUTSU1fwhmV7llKnJrDZB8tFvVh+6VftkmYMm3jHLQkyn8De8Yeqou1a48H1kP1 zQguiRzyfYNzIfTB+GzujJseOhin8e+ePV+2nxDCGT7XH4+xt0/qc5KbXWw9UMIwuuLQ r+oLBrQ9yna0aba9WTvbjFamfs1MTahdnPgkaj4msdaz9iK47oivjtyFQBNFmbkhGyGm kig8PpqIV+B++8+eCHsuohlFO4p7SLQ2VZiKbLsyVfqCLyX1LbF2EvkX2DDh44fmf5xe hqGQ== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id o21si88215edv.240.2020.10.22.21.44.09; Thu, 22 Oct 2020 21:44:09 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DA2066966; Fri, 23 Oct 2020 06:44:03 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 1D40F677C for ; Fri, 23 Oct 2020 06:44:02 +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 8B800101E; Thu, 22 Oct 2020 21:44:00 -0700 (PDT) Received: from qc2400f-1.austin.arm.com (qc2400f-1.austin.arm.com [10.118.12.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7EFBB3F66B; Thu, 22 Oct 2020 21:44:00 -0700 (PDT) From: Honnappa Nagarahalli To: dev@dpdk.org, honnappa.nagarahalli@arm.com, konstantin.ananyev@intel.com Cc: olivier.matz@6wind.com, david.marchand@redhat.com, dharmik.thakkar@arm.com, ruifeng.wang@arm.com, nd@arm.com Date: Thu, 22 Oct 2020 23:43:38 -0500 Message-Id: <20201023044343.13462-1-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200224203931.21256-1-honnappa.nagarahalli@arm.com> References: <20200224203931.21256-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH v3 0/5] lib/ring: add zero copy APIs 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" It is pretty common for the DPDK applications to be deployed in semi-pipeline model. In these models, a small number of cores (typically 1) are designated as I/O cores. The I/O cores work on receiving and transmitting packets from the NIC and several packet processing cores. The IO core and the packet processing cores exchange the packets over a ring. Typically, such applications receive the mbufs in a temporary array and copy the mbufs on to the ring. Depending on the requirements the packets could be copied in batches of 32, 64 etc resulting in 256B, 512B etc memory copy. The zero copy APIs help avoid intermediate copies by exposing the space on the ring directly to the application. v3: 1) Changed the name of the APIs to 'zero-copy (zc)' 2) Made the address calculation simpler 3) Structure to return the data to the user is aligned on cache line boundary. 4) Added functional and stress test cases v2: changed the patch to use the SP-SC and HTS modes v1: Initial version Honnappa Nagarahalli (5): test/ring: fix the memory dump size lib/ring: add zero copy APIs test/ring: move common function to header file test/ring: add functional tests for zero copy APIs test/ring: add stress tests for zero copy APIs app/test/meson.build | 2 + app/test/test_ring.c | 207 +++++++++- app/test/test_ring.h | 53 +++ app/test/test_ring_mt_peek_stress_zc.c | 56 +++ app/test/test_ring_st_peek_stress_zc.c | 65 +++ app/test/test_ring_stress.c | 6 + app/test/test_ring_stress.h | 2 + app/test/test_ring_stress_impl.h | 2 +- lib/librte_ring/meson.build | 1 + lib/librte_ring/rte_ring_elem.h | 1 + lib/librte_ring/rte_ring_peek_zc.h | 542 +++++++++++++++++++++++++ 11 files changed, 925 insertions(+), 12 deletions(-) create mode 100644 app/test/test_ring_mt_peek_stress_zc.c create mode 100644 app/test/test_ring_st_peek_stress_zc.c create mode 100644 lib/librte_ring/rte_ring_peek_zc.h -- 2.17.1