From patchwork Sun Oct 25 05:45:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 318957 Delivered-To: patch@linaro.org Received: by 2002:a92:d1d1:0:0:0:0:0 with SMTP id u17csp1695562ilg; Sat, 24 Oct 2020 22:47:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxKaVxiY3j2AMsjmjAuax8mMytJuwUG/O77qewury2UO3Zl8FXnXZe6sUemHAa6mBCtJhwF X-Received: by 2002:aa7:cf95:: with SMTP id z21mr9993715edx.346.1603604856126; Sat, 24 Oct 2020 22:47:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603604856; cv=none; d=google.com; s=arc-20160816; b=yqvER8sUoRMHNLkqscy1brb7e+Oa0U9d0K9yuc/fXZemLOtJgaSqesgGO/dGpeSw5t /t0LmM/oKEqQYOqxHlOOx8UXexm9iOq17aAJJUdwOpfSkpM0eHIArpAQvJQtJawjJ3XF sByhInOXWkc1iAeFApkbhV3RJyHRTF97mYzk9FxX4YfQCqimzUyil7AoBBTYt8qNYLlE GgiwQZdhZVzVYdP+bqqTdguuiO/Dg32TCXj3fGtHOAWzjwlKc685VsmYAk7gpzQhgDfw wTjR6QUpDmfEU3LJT34PF8E9vrMOarwZ1WmdWAkHOxrxSOMOvFJfoAqD3iWMBij7RKot Zxuw== 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=giAs+iaos8h2xeilTXRLQGZ0i98r5pwb3FkL4CccAcQ=; b=0jLTI4w76wG/J1sbW/HKocF5QlofO+olwYi5fIEu2a9ZXCBsQFYaZN03rRtPl0l7h3 EZS7sULkDHmy654BNBRsj/1AlCRzjQegDaaDx2eqdptR+otyyuvDhPKUuOSrXMRQgZlC Dt8JLpBEqGXrdIvQHhBnti1gY2fN4d87xDq7zaG77gyfgQ2ZsX/+TZqxxkrTJZuwJ6M0 IRRQp8xHASl+0n7jxQCZe8tcg12s80vSv9EdYkGhJLBv24Crdv0VNMgE1JP6niI1dD6E 2MRJZ8reUXnYnrNMxfVnpo/LtNstdL+qZzClvsNE5V79yF7y+PDykvZNHc9fCZWg5AbZ zTuQ== 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 d10si4638337edm.314.2020.10.24.22.47.35; Sat, 24 Oct 2020 22:47:36 -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 53F8C2BA3; Sun, 25 Oct 2020 06:46:19 +0100 (CET) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 38B1B2A63 for ; Sun, 25 Oct 2020 06:46:11 +0100 (CET) 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 9CCB11435; Sat, 24 Oct 2020 22:46:09 -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 925923F66B; Sat, 24 Oct 2020 22:46:09 -0700 (PDT) From: Honnappa Nagarahalli To: dev@dpdk.org, honnappa.nagarahalli@arm.com, konstantin.ananyev@intel.com, stephen@networkplumber.org Cc: dharmik.thakkar@arm.com, ruifeng.wang@arm.com, olivier.matz@6wind.com, david.marchand@redhat.com, nd@arm.com Date: Sun, 25 Oct 2020 00:45:52 -0500 Message-Id: <20201025054556.14277-5-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201025054556.14277-1-honnappa.nagarahalli@arm.com> References: <20200224203931.21256-1-honnappa.nagarahalli@arm.com> <20201025054556.14277-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH v5 4/8] test/ring: add stress tests for 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" Add stress tests for zero copy API. Signed-off-by: Honnappa Nagarahalli Reviewed-by: Dharmik Thakkar Acked-by: Konstantin Ananyev --- app/test/meson.build | 2 + app/test/test_ring_mt_peek_stress_zc.c | 56 +++++++++++++++++++++++ app/test/test_ring_st_peek_stress_zc.c | 63 ++++++++++++++++++++++++++ app/test/test_ring_stress.c | 6 +++ app/test/test_ring_stress.h | 2 + 5 files changed, 129 insertions(+) create mode 100644 app/test/test_ring_mt_peek_stress_zc.c create mode 100644 app/test/test_ring_st_peek_stress_zc.c -- 2.17.1 diff --git a/app/test/meson.build b/app/test/meson.build index 8bfb02890..88c831a92 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -108,9 +108,11 @@ test_sources = files('commands.c', 'test_ring_mpmc_stress.c', 'test_ring_hts_stress.c', 'test_ring_mt_peek_stress.c', + 'test_ring_mt_peek_stress_zc.c', 'test_ring_perf.c', 'test_ring_rts_stress.c', 'test_ring_st_peek_stress.c', + 'test_ring_st_peek_stress_zc.c', 'test_ring_stress.c', 'test_rwlock.c', 'test_sched.c', diff --git a/app/test/test_ring_mt_peek_stress_zc.c b/app/test/test_ring_mt_peek_stress_zc.c new file mode 100644 index 000000000..7e0bd511a --- /dev/null +++ b/app/test/test_ring_mt_peek_stress_zc.c @@ -0,0 +1,56 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2020 Arm Limited + */ + +#include "test_ring.h" +#include "test_ring_stress_impl.h" +#include + +static inline uint32_t +_st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, + uint32_t *avail) +{ + uint32_t m; + struct rte_ring_zc_data zcd; + + m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); + n = (m == n) ? n : 0; + if (n != 0) { + /* Copy the data from the ring */ + test_ring_copy_from(&zcd, obj, -1, n); + rte_ring_dequeue_zc_finish(r, n); + } + + return n; +} + +static inline uint32_t +_st_ring_enqueue_bulk(struct rte_ring *r, void * const *obj, uint32_t n, + uint32_t *free) +{ + uint32_t m; + struct rte_ring_zc_data zcd; + + m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); + n = (m == n) ? n : 0; + if (n != 0) { + /* Copy the data from the ring */ + test_ring_copy_to(&zcd, obj, -1, n); + rte_ring_enqueue_zc_finish(r, n); + } + + return n; +} + +static int +_st_ring_init(struct rte_ring *r, const char *name, uint32_t num) +{ + return rte_ring_init(r, name, num, + RING_F_MP_HTS_ENQ | RING_F_MC_HTS_DEQ); +} + +const struct test test_ring_mt_peek_stress_zc = { + .name = "MT_PEEK_ZC", + .nb_case = RTE_DIM(tests), + .cases = tests, +}; diff --git a/app/test/test_ring_st_peek_stress_zc.c b/app/test/test_ring_st_peek_stress_zc.c new file mode 100644 index 000000000..b9dbd4a6f --- /dev/null +++ b/app/test/test_ring_st_peek_stress_zc.c @@ -0,0 +1,63 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2020 Arm Limited + */ + +#include "test_ring.h" +#include "test_ring_stress_impl.h" +#include + +static inline uint32_t +_st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, + uint32_t *avail) +{ + uint32_t m; + struct rte_ring_zc_data zcd; + + static rte_spinlock_t lck = RTE_SPINLOCK_INITIALIZER; + + rte_spinlock_lock(&lck); + + m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); + if (m != 0) { + /* Copy the data from the ring */ + test_ring_copy_from(&zcd, obj, -1, m); + rte_ring_dequeue_zc_finish(r, m); + } + + rte_spinlock_unlock(&lck); + return m; +} + +static inline uint32_t +_st_ring_enqueue_bulk(struct rte_ring *r, void * const *obj, uint32_t n, + uint32_t *free) +{ + uint32_t m; + struct rte_ring_zc_data zcd; + + static rte_spinlock_t lck = RTE_SPINLOCK_INITIALIZER; + + rte_spinlock_lock(&lck); + + m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); + if (m != 0) { + /* Copy the data from the ring */ + test_ring_copy_to(&zcd, obj, -1, m); + rte_ring_enqueue_zc_finish(r, m); + } + + rte_spinlock_unlock(&lck); + return m; +} + +static int +_st_ring_init(struct rte_ring *r, const char *name, uint32_t num) +{ + return rte_ring_init(r, name, num, RING_F_SP_ENQ | RING_F_SC_DEQ); +} + +const struct test test_ring_st_peek_stress_zc = { + .name = "ST_PEEK_ZC", + .nb_case = RTE_DIM(tests), + .cases = tests, +}; diff --git a/app/test/test_ring_stress.c b/app/test/test_ring_stress.c index c4f82ea56..1af45e0fc 100644 --- a/app/test/test_ring_stress.c +++ b/app/test/test_ring_stress.c @@ -49,9 +49,15 @@ test_ring_stress(void) n += test_ring_mt_peek_stress.nb_case; k += run_test(&test_ring_mt_peek_stress); + n += test_ring_mt_peek_stress_zc.nb_case; + k += run_test(&test_ring_mt_peek_stress_zc); + n += test_ring_st_peek_stress.nb_case; k += run_test(&test_ring_st_peek_stress); + n += test_ring_st_peek_stress_zc.nb_case; + k += run_test(&test_ring_st_peek_stress_zc); + printf("Number of tests:\t%u\nSuccess:\t%u\nFailed:\t%u\n", n, k, n - k); return (k != n); diff --git a/app/test/test_ring_stress.h b/app/test/test_ring_stress.h index c85d6fa92..416d68c9a 100644 --- a/app/test/test_ring_stress.h +++ b/app/test/test_ring_stress.h @@ -36,4 +36,6 @@ extern const struct test test_ring_mpmc_stress; extern const struct test test_ring_rts_stress; extern const struct test test_ring_hts_stress; extern const struct test test_ring_mt_peek_stress; +extern const struct test test_ring_mt_peek_stress_zc; extern const struct test test_ring_st_peek_stress; +extern const struct test test_ring_st_peek_stress_zc;