From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 914E0A04B1; Wed, 4 Nov 2020 20:34:59 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 48EC428EE; Wed, 4 Nov 2020 20:34:57 +0100 (CET) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id BDFFBF90; Wed, 4 Nov 2020 20:34:53 +0100 (CET) IronPort-SDR: bWZLehyftW0z47BwVtPgPVNvmPcEJApSj0n0tocOp9ftrfo/4eS1MUX/VafbdT8jdr7WSKHmA7 qOM7Mfdca6zQ== X-IronPort-AV: E=McAfee;i="6000,8403,9795"; a="148556806" X-IronPort-AV: E=Sophos;i="5.77,451,1596524400"; d="scan'208";a="148556806" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Nov 2020 11:34:51 -0800 IronPort-SDR: +i30WZzDxiPD7lMhor5scNVzq6fTwb7J7DzraxeDksmXl6/f2aVOfPVApPJv2pZB6mgE3TNfjE jq0I/nAIklBw== X-IronPort-AV: E=Sophos;i="5.77,451,1596524400"; d="scan'208";a="529049555" Received: from vmedvedk-mobl.ger.corp.intel.com (HELO [10.252.23.60]) ([10.252.23.60]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Nov 2020 11:34:50 -0800 To: Dharmik Thakkar , Bruce Richardson , Gavin Hu , Ruifeng Wang , Honnappa Nagarahalli Cc: dev@dpdk.org, nd@arm.com, stable@dpdk.org References: <20201103222352.11566-1-dharmik.thakkar@arm.com> <20201104185858.18397-1-dharmik.thakkar@arm.com> <20201104185858.18397-2-dharmik.thakkar@arm.com> From: "Medvedkin, Vladimir" Message-ID: Date: Wed, 4 Nov 2020 19:34:48 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <20201104185858.18397-2-dharmik.thakkar@arm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v5 1/4] test/lpm: fix cycle calculation in rcu qsbr perf 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" On 04/11/2020 18:58, Dharmik Thakkar wrote: > Fix incorrect calculations for LPM adds, LPM deletes, > and average cycles in RCU QSBR perf tests > > Since, rcu qsbr tests run for 'RCU_ITERATIONS' and not > 'ITERATIONS', replace 'ITERATIONS' with 'RCU_ITERATIONS' > for calculating adds, deletes, and cycles. > > Also, for multi-writer perf test, each writer only writes > half of NUM_LDEPTH_ROUTE_ENTRIES. > For 2 writers, total adds (or deletes) should be > (RCU_ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES) instead of > (2 * RCU_ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES). > > Since, for both the single and multi writer tests, total adds/deletes > is equal to (RCU_ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES), > this has been replaced with a macro 'TOTAL_WRITES' and furthermore, > 'g_writes' has been removed since it is always a fixed value > equal to TOTAL_WRITES. > > Fixes: eff30b59cc2e ("test/lpm: add RCU performance tests") > Cc: honnappa.nagarahalli@arm.com > Cc: stable@dpdk.org > > Signed-off-by: Dharmik Thakkar > Reviewed-by: Ruifeng Wang > Reviewed-by: Honnappa Nagarahalli > --- > app/test/test_lpm_perf.c | 45 ++++++++++++++-------------------------- > 1 file changed, 16 insertions(+), 29 deletions(-) > > diff --git a/app/test/test_lpm_perf.c b/app/test/test_lpm_perf.c > index c5a238b9d1e8..45164b23214b 100644 > --- a/app/test/test_lpm_perf.c > +++ b/app/test/test_lpm_perf.c > @@ -23,7 +23,6 @@ static struct rte_rcu_qsbr *rv; > static volatile uint8_t writer_done; > static volatile uint32_t thr_id; > static uint64_t gwrite_cycles; > -static uint64_t gwrites; > /* LPM APIs are not thread safe, use mutex to provide thread safety */ > static pthread_mutex_t lpm_mutex = PTHREAD_MUTEX_INITIALIZER; > > @@ -60,6 +59,8 @@ static uint32_t num_ldepth_route_entries; > #define NUM_ROUTE_ENTRIES num_route_entries > #define NUM_LDEPTH_ROUTE_ENTRIES num_ldepth_route_entries > > +#define TOTAL_WRITES (RCU_ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES) > + > enum { > IP_CLASS_A, > IP_CLASS_B, > @@ -432,7 +433,6 @@ test_lpm_rcu_qsbr_writer(void *arg) > uint8_t core_id = (uint8_t)((uintptr_t)arg); > uint32_t next_hop_add = 0xAA; > > - RTE_SET_USED(arg); > /* 2 writer threads are used */ > if (core_id % 2 == 0) { > si = 0; > @@ -472,9 +472,6 @@ test_lpm_rcu_qsbr_writer(void *arg) > total_cycles = rte_rdtsc_precise() - begin; > > __atomic_fetch_add(&gwrite_cycles, total_cycles, __ATOMIC_RELAXED); > - __atomic_fetch_add(&gwrites, > - 2 * NUM_LDEPTH_ROUTE_ENTRIES * RCU_ITERATIONS, > - __ATOMIC_RELAXED); > > return 0; > } > @@ -528,7 +525,6 @@ test_lpm_rcu_perf_multi_writer(void) > > writer_done = 0; > __atomic_store_n(&gwrite_cycles, 0, __ATOMIC_RELAXED); > - __atomic_store_n(&gwrites, 0, __ATOMIC_RELAXED); > > __atomic_store_n(&thr_id, 0, __ATOMIC_SEQ_CST); > > @@ -548,14 +544,11 @@ test_lpm_rcu_perf_multi_writer(void) > if (rte_eal_wait_lcore(enabled_core_ids[i]) < 0) > goto error; > > - printf("Total LPM Adds: %d\n", > - 2 * ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES); > - printf("Total LPM Deletes: %d\n", > - 2 * ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES); > + printf("Total LPM Adds: %d\n", TOTAL_WRITES); > + printf("Total LPM Deletes: %d\n", TOTAL_WRITES); > printf("Average LPM Add/Del: %"PRIu64" cycles\n", > - __atomic_load_n(&gwrite_cycles, __ATOMIC_RELAXED) / > - __atomic_load_n(&gwrites, __ATOMIC_RELAXED) > - ); > + __atomic_load_n(&gwrite_cycles, __ATOMIC_RELAXED) > + / TOTAL_WRITES); > > /* Wait and check return value from reader threads */ > writer_done = 1; > @@ -581,7 +574,6 @@ test_lpm_rcu_perf_multi_writer(void) > > writer_done = 0; > __atomic_store_n(&gwrite_cycles, 0, __ATOMIC_RELAXED); > - __atomic_store_n(&gwrites, 0, __ATOMIC_RELAXED); > __atomic_store_n(&thr_id, 0, __ATOMIC_SEQ_CST); > > /* Launch reader threads */ > @@ -600,14 +592,11 @@ test_lpm_rcu_perf_multi_writer(void) > if (rte_eal_wait_lcore(enabled_core_ids[i]) < 0) > goto error; > > - printf("Total LPM Adds: %d\n", > - 2 * ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES); > - printf("Total LPM Deletes: %d\n", > - 2 * ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES); > + printf("Total LPM Adds: %d\n", TOTAL_WRITES); > + printf("Total LPM Deletes: %d\n", TOTAL_WRITES); > printf("Average LPM Add/Del: %"PRIu64" cycles\n", > - __atomic_load_n(&gwrite_cycles, __ATOMIC_RELAXED) / > - __atomic_load_n(&gwrites, __ATOMIC_RELAXED) > - ); > + __atomic_load_n(&gwrite_cycles, __ATOMIC_RELAXED) > + / TOTAL_WRITES); > > writer_done = 1; > /* Wait and check return value from reader threads */ > @@ -711,11 +700,10 @@ test_lpm_rcu_perf(void) > } > total_cycles = rte_rdtsc_precise() - begin; > > - printf("Total LPM Adds: %d\n", ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES); > - printf("Total LPM Deletes: %d\n", > - ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES); > + printf("Total LPM Adds: %d\n", TOTAL_WRITES); > + printf("Total LPM Deletes: %d\n", TOTAL_WRITES); > printf("Average LPM Add/Del: %g cycles\n", > - (double)total_cycles / (NUM_LDEPTH_ROUTE_ENTRIES * ITERATIONS)); > + (double)total_cycles / TOTAL_WRITES); > > writer_done = 1; > /* Wait and check return value from reader threads */ > @@ -771,11 +759,10 @@ test_lpm_rcu_perf(void) > } > total_cycles = rte_rdtsc_precise() - begin; > > - printf("Total LPM Adds: %d\n", ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES); > - printf("Total LPM Deletes: %d\n", > - ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES); > + printf("Total LPM Adds: %d\n", TOTAL_WRITES); > + printf("Total LPM Deletes: %d\n", TOTAL_WRITES); > printf("Average LPM Add/Del: %g cycles\n", > - (double)total_cycles / (NUM_LDEPTH_ROUTE_ENTRIES * ITERATIONS)); > + (double)total_cycles / TOTAL_WRITES); > > writer_done = 1; > /* Wait and check return value from reader threads */ > Acked-by: Vladimir Medvedkin -- Regards, Vladimir