get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/83449/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 83449,
    "url": "https://patches.dpdk.org/api/patches/83449/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20201102235203.6342-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": "<20201102235203.6342-2-dharmik.thakkar@arm.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201102235203.6342-2-dharmik.thakkar@arm.com",
    "date": "2020-11-02T23:52:00",
    "name": "[v2,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/20201102235203.6342-2-dharmik.thakkar@arm.com/mbox/",
    "series": [
        {
            "id": 13584,
            "url": "https://patches.dpdk.org/api/series/13584/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=13584",
            "date": "2020-11-02T23:51:59",
            "name": "test/lpm: fix rcu qsbr perf test",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/13584/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/83449/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/83449/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 EDB95A04E7;\n\tTue,  3 Nov 2020 00:55:44 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 54AAD5946;\n\tTue,  3 Nov 2020 00:54:51 +0100 (CET)",
            "from foss.arm.com (foss.arm.com [217.140.110.172])\n by dpdk.org (Postfix) with ESMTP id EF083378B;\n Tue,  3 Nov 2020 00:54:43 +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 5B3331424;\n Mon,  2 Nov 2020 15:54:42 -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 53C133F718;\n Mon,  2 Nov 2020 15:54:42 -0800 (PST)"
        ],
        "From": "Dharmik Thakkar <dharmik.thakkar@arm.com>",
        "To": "Bruce Richardson <bruce.richardson@intel.com>,\n Vladimir Medvedkin <vladimir.medvedkin@intel.com>,\n Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,\n Ruifeng Wang <ruifeng.wang@arm.com>, Gavin Hu <gavin.hu@arm.com>",
        "Cc": "dev@dpdk.org, nd@arm.com, Dharmik Thakkar <dharmik.thakkar@arm.com>,\n stable@dpdk.org",
        "Date": "Mon,  2 Nov 2020 17:52:00 -0600",
        "Message-Id": "<20201102235203.6342-2-dharmik.thakkar@arm.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20201102235203.6342-1-dharmik.thakkar@arm.com>",
        "References": "<20201029153634.10647-1-dharmik.thakkar@arm.com>\n <20201102235203.6342-1-dharmik.thakkar@arm.com>",
        "Subject": "[dpdk-dev] [PATCH v2 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>\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": [
        "v2",
        "1/4"
    ]
}