Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/83478/?format=api
https://patches.dpdk.org/api/patches/83478/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/20201103051224.12620-2-dharmik.thakkar@arm.com/", "project": { "id": 1, "url": "https://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20201103051224.12620-2-dharmik.thakkar@arm.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20201103051224.12620-2-dharmik.thakkar@arm.com", "date": "2020-11-03T05:12:21", "name": "[v3,1/4] test/lpm: fix cycle calculation in rcu qsbr perf", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "24f54fdadcc567df5794053bc324118ee35a013d", "submitter": { "id": 1108, "url": "https://patches.dpdk.org/api/people/1108/?format=api", "name": "Dharmik Thakkar", "email": "dharmik.thakkar@arm.com" }, "delegate": { "id": 24651, "url": "https://patches.dpdk.org/api/users/24651/?format=api", "username": "dmarchand", "first_name": "David", "last_name": "Marchand", "email": "david.marchand@redhat.com" }, "mbox": "https://patches.dpdk.org/project/dpdk/patch/20201103051224.12620-2-dharmik.thakkar@arm.com/mbox/", "series": [ { "id": 13591, "url": "https://patches.dpdk.org/api/series/13591/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=13591", "date": "2020-11-03T05:12:20", "name": "test/lpm: fix rcu qsbr perf test", "version": 3, "mbox": "https://patches.dpdk.org/series/13591/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/83478/comments/", "check": "success", "checks": "https://patches.dpdk.org/api/patches/83478/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 7976DA0521;\n\tTue, 3 Nov 2020 06:13:48 +0100 (CET)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A59D4BE69;\n\tTue, 3 Nov 2020 06:12:45 +0100 (CET)", "from foss.arm.com (foss.arm.com [217.140.110.172])\n by dpdk.org (Postfix) with ESMTP id 1287AA8E9;\n Tue, 3 Nov 2020 06:12:38 +0100 (CET)", "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7261F1424;\n Mon, 2 Nov 2020 21:12:36 -0800 (PST)", "from localhost.localdomain (2p2660v4-1.austin.arm.com\n [10.118.13.220])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 694023F718;\n Mon, 2 Nov 2020 21:12:36 -0800 (PST)" ], "From": "Dharmik Thakkar <dharmik.thakkar@arm.com>", "To": "Bruce Richardson <bruce.richardson@intel.com>,\n Vladimir Medvedkin <vladimir.medvedkin@intel.com>,\n Gavin Hu <gavin.hu@arm.com>,\n Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,\n Ruifeng Wang <ruifeng.wang@arm.com>", "Cc": "dev@dpdk.org, nd@arm.com, Dharmik Thakkar <dharmik.thakkar@arm.com>,\n stable@dpdk.org", "Date": "Mon, 2 Nov 2020 23:12:21 -0600", "Message-Id": "<20201103051224.12620-2-dharmik.thakkar@arm.com>", "X-Mailer": "git-send-email 2.17.1", "In-Reply-To": "<20201103051224.12620-1-dharmik.thakkar@arm.com>", "References": "<20201102235203.6342-1-dharmik.thakkar@arm.com>\n <20201103051224.12620-1-dharmik.thakkar@arm.com>", "Subject": "[dpdk-dev] [PATCH v3 1/4] test/lpm: fix cycle calculation in rcu\n\tqsbr perf", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "Fix incorrect calculations for LPM adds, LPM deletes,\nand average cycles in RCU QSBR perf tests\n\nSince, rcu qsbr tests run for 'RCU_ITERATIONS' and not\n'ITERATIONS', replace 'ITERATIONS' with 'RCU_ITERATIONS'\nfor calculating adds, deletes, and cycles.\n\nAlso, for multi-writer perf test, each writer only writes\nhalf of NUM_LDEPTH_ROUTE_ENTRIES.\nFor 2 writers, total adds (or deletes) should be\n(RCU_ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES) instead of\n(2 * RCU_ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES).\n\nSince, for both the single and multi writer tests, total adds/deletes\nis equal to (RCU_ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES),\nthis has been replaced with a macro 'TOTAL_WRITES' and furthermore,\n'g_writes' has been removed since it is always a fixed value\nequal to TOTAL_WRITES.\n\nFixes: eff30b59cc2e (\"test/lpm: add RCU performance tests\")\nCc: honnappa.nagarahalli@arm.com\nCc: stable@dpdk.org\n\nSigned-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>\nReviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>\nReviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>\n---\n app/test/test_lpm_perf.c | 45 ++++++++++++++--------------------------\n 1 file changed, 16 insertions(+), 29 deletions(-)", "diff": "diff --git a/app/test/test_lpm_perf.c b/app/test/test_lpm_perf.c\nindex c5a238b9d1e8..45164b23214b 100644\n--- a/app/test/test_lpm_perf.c\n+++ b/app/test/test_lpm_perf.c\n@@ -23,7 +23,6 @@ static struct rte_rcu_qsbr *rv;\n static volatile uint8_t writer_done;\n static volatile uint32_t thr_id;\n static uint64_t gwrite_cycles;\n-static uint64_t gwrites;\n /* LPM APIs are not thread safe, use mutex to provide thread safety */\n static pthread_mutex_t lpm_mutex = PTHREAD_MUTEX_INITIALIZER;\n \n@@ -60,6 +59,8 @@ static uint32_t num_ldepth_route_entries;\n #define NUM_ROUTE_ENTRIES num_route_entries\n #define NUM_LDEPTH_ROUTE_ENTRIES num_ldepth_route_entries\n \n+#define TOTAL_WRITES (RCU_ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES)\n+\n enum {\n \tIP_CLASS_A,\n \tIP_CLASS_B,\n@@ -432,7 +433,6 @@ test_lpm_rcu_qsbr_writer(void *arg)\n \tuint8_t core_id = (uint8_t)((uintptr_t)arg);\n \tuint32_t next_hop_add = 0xAA;\n \n-\tRTE_SET_USED(arg);\n \t/* 2 writer threads are used */\n \tif (core_id % 2 == 0) {\n \t\tsi = 0;\n@@ -472,9 +472,6 @@ test_lpm_rcu_qsbr_writer(void *arg)\n \ttotal_cycles = rte_rdtsc_precise() - begin;\n \n \t__atomic_fetch_add(&gwrite_cycles, total_cycles, __ATOMIC_RELAXED);\n-\t__atomic_fetch_add(&gwrites,\n-\t\t\t2 * NUM_LDEPTH_ROUTE_ENTRIES * RCU_ITERATIONS,\n-\t\t\t__ATOMIC_RELAXED);\n \n \treturn 0;\n }\n@@ -528,7 +525,6 @@ test_lpm_rcu_perf_multi_writer(void)\n \n \twriter_done = 0;\n \t__atomic_store_n(&gwrite_cycles, 0, __ATOMIC_RELAXED);\n-\t__atomic_store_n(&gwrites, 0, __ATOMIC_RELAXED);\n \n \t__atomic_store_n(&thr_id, 0, __ATOMIC_SEQ_CST);\n \n@@ -548,14 +544,11 @@ test_lpm_rcu_perf_multi_writer(void)\n \t\tif (rte_eal_wait_lcore(enabled_core_ids[i]) < 0)\n \t\t\tgoto error;\n \n-\tprintf(\"Total LPM Adds: %d\\n\",\n-\t\t2 * ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES);\n-\tprintf(\"Total LPM Deletes: %d\\n\",\n-\t\t2 * ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES);\n+\tprintf(\"Total LPM Adds: %d\\n\", TOTAL_WRITES);\n+\tprintf(\"Total LPM Deletes: %d\\n\", TOTAL_WRITES);\n \tprintf(\"Average LPM Add/Del: %\"PRIu64\" cycles\\n\",\n-\t\t__atomic_load_n(&gwrite_cycles, __ATOMIC_RELAXED) /\n-\t\t\t__atomic_load_n(&gwrites, __ATOMIC_RELAXED)\n-\t\t);\n+\t\t__atomic_load_n(&gwrite_cycles, __ATOMIC_RELAXED)\n+\t\t/ TOTAL_WRITES);\n \n \t/* Wait and check return value from reader threads */\n \twriter_done = 1;\n@@ -581,7 +574,6 @@ test_lpm_rcu_perf_multi_writer(void)\n \n \twriter_done = 0;\n \t__atomic_store_n(&gwrite_cycles, 0, __ATOMIC_RELAXED);\n-\t__atomic_store_n(&gwrites, 0, __ATOMIC_RELAXED);\n \t__atomic_store_n(&thr_id, 0, __ATOMIC_SEQ_CST);\n \n \t/* Launch reader threads */\n@@ -600,14 +592,11 @@ test_lpm_rcu_perf_multi_writer(void)\n \t\tif (rte_eal_wait_lcore(enabled_core_ids[i]) < 0)\n \t\t\tgoto error;\n \n-\tprintf(\"Total LPM Adds: %d\\n\",\n-\t\t2 * ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES);\n-\tprintf(\"Total LPM Deletes: %d\\n\",\n-\t\t2 * ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES);\n+\tprintf(\"Total LPM Adds: %d\\n\", TOTAL_WRITES);\n+\tprintf(\"Total LPM Deletes: %d\\n\", TOTAL_WRITES);\n \tprintf(\"Average LPM Add/Del: %\"PRIu64\" cycles\\n\",\n-\t\t__atomic_load_n(&gwrite_cycles, __ATOMIC_RELAXED) /\n-\t\t\t__atomic_load_n(&gwrites, __ATOMIC_RELAXED)\n-\t\t);\n+\t\t__atomic_load_n(&gwrite_cycles, __ATOMIC_RELAXED)\n+\t\t/ TOTAL_WRITES);\n \n \twriter_done = 1;\n \t/* Wait and check return value from reader threads */\n@@ -711,11 +700,10 @@ test_lpm_rcu_perf(void)\n \t}\n \ttotal_cycles = rte_rdtsc_precise() - begin;\n \n-\tprintf(\"Total LPM Adds: %d\\n\", ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES);\n-\tprintf(\"Total LPM Deletes: %d\\n\",\n-\t\tITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES);\n+\tprintf(\"Total LPM Adds: %d\\n\", TOTAL_WRITES);\n+\tprintf(\"Total LPM Deletes: %d\\n\", TOTAL_WRITES);\n \tprintf(\"Average LPM Add/Del: %g cycles\\n\",\n-\t\t(double)total_cycles / (NUM_LDEPTH_ROUTE_ENTRIES * ITERATIONS));\n+\t\t(double)total_cycles / TOTAL_WRITES);\n \n \twriter_done = 1;\n \t/* Wait and check return value from reader threads */\n@@ -771,11 +759,10 @@ test_lpm_rcu_perf(void)\n \t}\n \ttotal_cycles = rte_rdtsc_precise() - begin;\n \n-\tprintf(\"Total LPM Adds: %d\\n\", ITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES);\n-\tprintf(\"Total LPM Deletes: %d\\n\",\n-\t\tITERATIONS * NUM_LDEPTH_ROUTE_ENTRIES);\n+\tprintf(\"Total LPM Adds: %d\\n\", TOTAL_WRITES);\n+\tprintf(\"Total LPM Deletes: %d\\n\", TOTAL_WRITES);\n \tprintf(\"Average LPM Add/Del: %g cycles\\n\",\n-\t\t(double)total_cycles / (NUM_LDEPTH_ROUTE_ENTRIES * ITERATIONS));\n+\t\t(double)total_cycles / TOTAL_WRITES);\n \n \twriter_done = 1;\n \t/* Wait and check return value from reader threads */\n", "prefixes": [ "v3", "1/4" ] }{ "id": 83478, "url": "