From patchwork Wed May 6 21:58:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dharmik Thakkar X-Patchwork-Id: 69885 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3A74FA034E; Wed, 6 May 2020 23:59:30 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BF06A1DB33; Wed, 6 May 2020 23:59:29 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id BE4491DB2F for ; Wed, 6 May 2020 23:59:28 +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 266E1D6E; Wed, 6 May 2020 14:59:28 -0700 (PDT) Received: from dp6132.usa.Arm.com (dp6132.usa.arm.com [10.118.91.150]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1D1DD3F305; Wed, 6 May 2020 14:59:28 -0700 (PDT) From: Dharmik Thakkar To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger Cc: dev@dpdk.org, nd@arm.com, Dharmik Thakkar Date: Wed, 6 May 2020 21:58:43 +0000 Message-Id: <20200506215847.7628-1-dharmik.thakkar@arm.com> X-Mailer: git-send-email 2.17.1 Subject: [dpdk-dev] [PATCH 1/5] app/testpmd: print clock with CPU cycles per pkt 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 aarch64 platforms, the cycles are counted using either a low-resolution generic counter or a high-resolution PMU cycle counter. Print the clock frequency along with CPU cycles/packet to identify which cycle counter is being used. Signed-off-by: Dharmik Thakkar Reviewed-by: Honnappa Nagarahalli Reviewed-by: Phil Yang --- app/test-pmd/testpmd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 99bacddbfdca..9a8cbbd6fc7c 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1953,11 +1953,12 @@ fwd_stats_display(void) "%s\n", acc_stats_border, acc_stats_border); #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES +#define CYC_PER_MHZ 1E6 if (total_recv > 0) printf("\n CPU cycles/packet=%u (total cycles=" - "%"PRIu64" / total RX packets=%"PRIu64")\n", + "%"PRIu64" / total RX packets=%"PRIu64") at %lu MHz Clock\n", (unsigned int)(fwd_cycles / total_recv), - fwd_cycles, total_recv); + fwd_cycles, total_recv, (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ)); #endif } From patchwork Wed May 6 21:58:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dharmik Thakkar X-Patchwork-Id: 69886 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 004C2A034E; Wed, 6 May 2020 23:59:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 755DE1DB44; Wed, 6 May 2020 23:59:31 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id C3B6F1DB33 for ; Wed, 6 May 2020 23:59:28 +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 33EF6101E; Wed, 6 May 2020 14:59:28 -0700 (PDT) Received: from dp6132.usa.Arm.com (dp6132.usa.arm.com [10.118.91.150]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2E1973F305; Wed, 6 May 2020 14:59:28 -0700 (PDT) From: Dharmik Thakkar To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger Cc: dev@dpdk.org, nd@arm.com, Dharmik Thakkar Date: Wed, 6 May 2020 21:58:44 +0000 Message-Id: <20200506215847.7628-2-dharmik.thakkar@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200506215847.7628-1-dharmik.thakkar@arm.com> References: <20200506215847.7628-1-dharmik.thakkar@arm.com> Subject: [dpdk-dev] [PATCH 2/5] app/testpmd: print fractional part in CPU cycles 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" Change printing of CPU cycles/packet to include fractional part for accurateness. Example: Without patch: CPU cycles/packet=14 (total cycles=4899533541 / total RX packets=343031966) With patch: CPU cycles/packet=14.28 (total cycles=4899533541 / total RX packets=343031966) Signed-off-by: Dharmik Thakkar Reviewed-by: Honnappa Nagarahalli Reviewed-by: Phil Yang --- app/test-pmd/testpmd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 9a8cbbd6fc7c..9444a730a153 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1955,9 +1955,9 @@ fwd_stats_display(void) #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES #define CYC_PER_MHZ 1E6 if (total_recv > 0) - printf("\n CPU cycles/packet=%u (total cycles=" + printf("\n CPU cycles/packet=%.2f (total cycles=" "%"PRIu64" / total RX packets=%"PRIu64") at %lu MHz Clock\n", - (unsigned int)(fwd_cycles / total_recv), + (double)(fwd_cycles / (double)total_recv), fwd_cycles, total_recv, (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ)); #endif } From patchwork Wed May 6 21:58:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Dharmik Thakkar X-Patchwork-Id: 69889 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2F4CEA034E; Wed, 6 May 2020 23:59:58 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2A4C41DB5D; Wed, 6 May 2020 23:59:35 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id C8F5E1DB39 for ; Wed, 6 May 2020 23:59:28 +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 455381042; Wed, 6 May 2020 14:59:28 -0700 (PDT) Received: from dp6132.usa.Arm.com (dp6132.usa.arm.com [10.118.91.150]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3EC803F305; Wed, 6 May 2020 14:59:28 -0700 (PDT) From: Dharmik Thakkar To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic Cc: dev@dpdk.org, nd@arm.com, Dharmik Thakkar Date: Wed, 6 May 2020 21:58:45 +0000 Message-Id: <20200506215847.7628-3-dharmik.thakkar@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200506215847.7628-1-dharmik.thakkar@arm.com> References: <20200506215847.7628-1-dharmik.thakkar@arm.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 3/5] doc: add cycles per packet in testpmd user guide 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" Update documentation for 'show fwd' testpmd runtime function to show CPU cycles/packet example. Signed-off-by: Dharmik Thakkar Reviewed-by: Honnappa Nagarahalli Reviewed-by: Phil Yang --- doc/guides/testpmd_app_ug/testpmd_funcs.rst | 51 +++++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index a360ecccfd3f..2e565ccdbcd4 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -351,26 +351,37 @@ Example for the io forwarding engine, with some packet drops on the tx side:: testpmd> show fwd stats all - ------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 1/Queue= 0 ------- - RX-packets: 274293770 TX-packets: 274293642 TX-dropped: 128 - - ------- Forward Stats for RX Port= 1/Queue= 0 -> TX Port= 0/Queue= 0 ------- - RX-packets: 274301850 TX-packets: 274301850 TX-dropped: 0 - - ---------------------- Forward statistics for port 0 ---------------------- - RX-packets: 274293802 RX-dropped: 0 RX-total: 274293802 - TX-packets: 274301862 TX-dropped: 0 TX-total: 274301862 - ---------------------------------------------------------------------------- - - ---------------------- Forward statistics for port 1 ---------------------- - RX-packets: 274301894 RX-dropped: 0 RX-total: 274301894 - TX-packets: 274293706 TX-dropped: 128 TX-total: 274293834 - ---------------------------------------------------------------------------- - - +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ - RX-packets: 548595696 RX-dropped: 0 RX-total: 548595696 - TX-packets: 548595568 TX-dropped: 128 TX-total: 548595696 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +   ------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 1/Queue= 0 ------- +   RX-packets: 43536504       TX-packets: 43536488       TX-dropped: 0 + +   ------- Forward Stats for RX Port= 1/Queue= 0 -> TX Port= 0/Queue= 0 ------- +   RX-packets: 149738504      TX-packets: 149738504      TX-dropped: 0 + +   ------- Forward Stats for RX Port= 1/Queue= 1 -> TX Port= 0/Queue= 1 ------- +   RX-packets: 149753052      TX-packets: 149753052      TX-dropped: 0 + +   ---------------------- Forward statistics for port 0  ---------------------- +   RX-packets: 43538881       RX-dropped: 72            RX-total: 43538953 +   TX-packets: 299491753      TX-dropped: 0             TX-total: 299491753 +   ---------------------------------------------------------------------------- + +   ---------------------- Forward statistics for port 1  ---------------------- +   RX-packets: 299493085      RX-dropped: 8357          RX-total: 299501442 +   TX-packets: 43539683       TX-dropped: 0             TX-total: 43539683 +   ---------------------------------------------------------------------------- + +   +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ +   RX-packets: 343031966      RX-dropped: 8429          RX-total: 343040395 +   TX-packets: 343031436      TX-dropped: 0             TX-total: 343031436 +   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +   CPU cycles/packet=14.28 (total cycles=4899533541 / total RX packets=343031966) at 200 MHz + +.. note:: + + Measuring CPU cycles/packet requires enabling CONFIG_RTE_TEST_PMD_RECORD_CORE_TX_CYCLES configuration option. + On aarch64 platforms, by default, the cycles are counted using generic counter which runs at a lower frequency than the CPU clock. + To get the cycles/packet at CPU clock frequency, please scale the cycles/packet to CPU clock frequency. Alternatively, use the PMU based cycle counter. clear fwd ~~~~~~~~~ From patchwork Wed May 6 21:58:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dharmik Thakkar X-Patchwork-Id: 69888 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3E6F7A034E; Wed, 6 May 2020 23:59:51 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F1AFF1DB55; Wed, 6 May 2020 23:59:33 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id DD0401DB3F for ; Wed, 6 May 2020 23:59:28 +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 561A51045; Wed, 6 May 2020 14:59:28 -0700 (PDT) Received: from dp6132.usa.Arm.com (dp6132.usa.arm.com [10.118.91.150]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4FFF33F305; Wed, 6 May 2020 14:59:28 -0700 (PDT) From: Dharmik Thakkar To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic Cc: dev@dpdk.org, nd@arm.com, Dharmik Thakkar Date: Wed, 6 May 2020 21:58:46 +0000 Message-Id: <20200506215847.7628-4-dharmik.thakkar@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200506215847.7628-1-dharmik.thakkar@arm.com> References: <20200506215847.7628-1-dharmik.thakkar@arm.com> Subject: [dpdk-dev] [PATCH 4/5] doc: include config options in testpmd user guide 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" Update testpmd documentation to include RECORD configuration options, CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES and CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS. Signed-off-by: Dharmik Thakkar Reviewed-by: Honnappa Nagarahalli Reviewed-by: Phil Yang --- doc/guides/testpmd_app_ug/build_app.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/guides/testpmd_app_ug/build_app.rst b/doc/guides/testpmd_app_ug/build_app.rst index d1ca9f3d19a9..caebb33849e3 100644 --- a/doc/guides/testpmd_app_ug/build_app.rst +++ b/doc/guides/testpmd_app_ug/build_app.rst @@ -21,6 +21,18 @@ The basic compilation steps are: export RTE_TARGET=x86_64-native-linux-gcc +##. If required, enable configuration options. For example: + + .. code-block:: console + + cd to the top-level DPDK directory + sed -i 's,\(CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES\)=n,\1=y,' config/common_base + sed -i 's,\(CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS\)=n,\1=y,' config/common_base + + Enabling CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES enables measurement of CPU cycles. + + Enabling CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS enables display of RX and TX bursts. + #. Build the application: .. code-block:: console From patchwork Wed May 6 21:58:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dharmik Thakkar X-Patchwork-Id: 69887 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0E235A034E; Wed, 6 May 2020 23:59:44 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B3F9C1DB4D; Wed, 6 May 2020 23:59:32 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id D75B21DB3C for ; Wed, 6 May 2020 23:59:28 +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 6609411D4; Wed, 6 May 2020 14:59:28 -0700 (PDT) Received: from dp6132.usa.Arm.com (dp6132.usa.arm.com [10.118.91.150]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6080D3F305; Wed, 6 May 2020 14:59:28 -0700 (PDT) From: Dharmik Thakkar To: John McNamara , Marko Kovacevic Cc: dev@dpdk.org, nd@arm.com, Dharmik Thakkar Date: Wed, 6 May 2020 21:58:47 +0000 Message-Id: <20200506215847.7628-5-dharmik.thakkar@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200506215847.7628-1-dharmik.thakkar@arm.com> References: <20200506215847.7628-1-dharmik.thakkar@arm.com> Subject: [dpdk-dev] [PATCH 5/5] doc: add aarch64 generic counter section 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 a separate section for low-resolution generic counter for ARM64 profiling methods. Signed-off-by: Dharmik Thakkar Reviewed-by: Honnappa Nagarahalli Reviewed-by: Phil Yang Acked-by: Jerin Jacob --- doc/guides/prog_guide/profile_app.rst | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/doc/guides/prog_guide/profile_app.rst b/doc/guides/prog_guide/profile_app.rst index a36ebef4db99..e5d0e9079e11 100644 --- a/doc/guides/prog_guide/profile_app.rst +++ b/doc/guides/prog_guide/profile_app.rst @@ -57,11 +57,16 @@ For more derails refer to the `ARM64 specific PMU events enumeration `_. -High-resolution cycle counter -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Low-resolution generic counter +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The default ``cntvct_el0`` based ``rte_rdtsc()`` provides a portable means to -get a wall clock counter in user space. Typically it runs at <= 100MHz. +get a wall clock counter in user space. Typically it runs at a lower clock frequency than the CPU clock frequency. +Cycles counted using this method should be scaled to CPU clock frequency. + + +High-resolution cycle counter +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The alternative method to enable ``rte_rdtsc()`` for a high resolution wall clock counter is through the ARMv8 PMU subsystem. The PMU cycle counter runs