From patchwork Fri Jun 26 22:09:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 191924 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp878978ilg; Fri, 26 Jun 2020 15:10:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZkbbQoj3uSZit71t8WR6Od6z3nzWQU+Etv1o94lucX6gqo/EsSfjCaKtb056OmTfYs07j X-Received: by 2002:a17:906:2e4b:: with SMTP id r11mr4391015eji.227.1593209402445; Fri, 26 Jun 2020 15:10:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593209402; cv=none; d=google.com; s=arc-20160816; b=gRl+DzxpCqeNf8vRDFb5TqCxfe07jKzudWVLm5zbl4Op9YpR6dpB0sCE/C2u4oMJ7j YZLljiKvadcNkvfbCc7zXr1/EQoQUMziSEXg9KHBbpmW9uzosPRFLOM6CjvdJB3byu+e 91siLORFF0RCvPkcvq33SRORq8W3Q8C1OqELaCDFJjP0G0lJoCYQx8G7tATrrwLkt058 YzJ3KOTlmcGoTKny/0GQgkF3z75MuecSf9+o1Ukh3qCDguL8fdmoaei3wM2SSOLoE3Nr PFMJajKTqBbng08jnmXEqgkRXPlDpoJC2O8XKHaLoQlkudDR7gHXf+/54G3vGVJzm4as xORw== 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=CuXGQz6lzUXZtuD02RMRyRZhAvmeT+kbE/r2uoYf3yM=; b=kDgUSsTL7mN9U6esKMEmbyMTRQfQJO9Y7u3jq0MXwUKMJ/vV5ulvXoxmjskqt6Tiyh xccxNEY/aOYszgcF8JTwaU4EQkXYFkZ+w1sdFgmYb2MYqvmhd9Wdm+JknzRUUaUcnvA7 KWu5T//oleX8n0E/lmY1zas5GDQNYP7vltZpywzex13XvaUI8O+HAEVftco+9POux5JZ SsLXPzeoVsDTbz4XGeq3CRZdJVbOljVEf2uD0GecBlnLW8eNA4kneXa2uL8tJSpxluxT OPOU4HeIa9W3vKKYlp8JA5XDRqFQoyTcZom+ByE+HslYWiHzL6cAxu1K/w9Xch7/EH3L 1sCg== 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 Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id p5si34713ejx.318.2020.06.26.15.10.01; Fri, 26 Jun 2020 15:10:02 -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 Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A12A81BEAC; Sat, 27 Jun 2020 00:09:59 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 1AB2F1BEA3; Sat, 27 Jun 2020 00:09:58 +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 68EE3D6E; Fri, 26 Jun 2020 15:09:57 -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 51AAE3F6CF; Fri, 26 Jun 2020 15:09:57 -0700 (PDT) From: Honnappa Nagarahalli To: dev@dpdk.org, honnappa.nagarahalli@arm.com, alialnu@mellanox.com, orgerlitz@mellanox.com, wenzhuo.lu@intel.com, beilei.xing@intel.com, bernard.iremonger@intel.com, ferruh.yigit@intel.com Cc: hemant.agrawal@nxp.com, jerinj@marvell.com, viacheslavo@mellanox.com, thomas@monjalon.net, ruifeng.wang@arm.com, phil.yang@arm.com, nd@arm.com, zhihong.wang@intel.com, stable@dpdk.org Date: Fri, 26 Jun 2020 17:09:39 -0500 Message-Id: <20200626220943.22526-1-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200617144307.9961-1-honnappa.nagarahalli@arm.com> References: <20200617144307.9961-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH v2 1/5] app/testpmd: clock gettime call in throughput calculation 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" The throughput calculation requires a counter that measures passing of time. However, the kernel saves and restores the PMU state when a thread is unscheduled and scheduled. This ensures that the PMU cycles are not counted towards a thread that is not scheduled. Hence, when RTE_ARM_EAL_RDTSC_USE_PMU is enabled, the PMU cycles do not represent the passing of time. This results in incorrect calculation of throughput numbers. Use clock_gettime system call to calculate the time passed since last call. Bugzilla ID: 450 Fixes: 0e106980301d ("app/testpmd: show throughput in port stats") Cc: zhihong.wang@intel.com Cc: stable@dpdk.org Signed-off-by: Honnappa Nagarahalli Reviewed-by: Phil Yang Reviewed-by: Ruifeng Wang Tested-by: Phil Yang Tested-by: Ali Alnubani --- v2: Updated commit log in 1/5 (Jerin) app/test-pmd/config.c | 44 +++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) -- 2.17.1 Reviewed-by: Ferruh Yigit diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 016bcb09c..91fbf99f8 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -54,6 +54,14 @@ #define ETHDEV_FWVERS_LEN 32 +#ifdef CLOCK_MONOTONIC_RAW /* Defined in glibc bits/time.h */ +#define CLOCK_TYPE_ID CLOCK_MONOTONIC_RAW +#else +#define CLOCK_TYPE_ID CLOCK_MONOTONIC +#endif + +#define NS_PER_SEC 1E9 + static char *flowtype_to_str(uint16_t flow_type); static const struct { @@ -136,9 +144,10 @@ nic_stats_display(portid_t port_id) static uint64_t prev_pkts_tx[RTE_MAX_ETHPORTS]; static uint64_t prev_bytes_rx[RTE_MAX_ETHPORTS]; static uint64_t prev_bytes_tx[RTE_MAX_ETHPORTS]; - static uint64_t prev_cycles[RTE_MAX_ETHPORTS]; + static uint64_t prev_ns[RTE_MAX_ETHPORTS]; + struct timespec cur_time; uint64_t diff_pkts_rx, diff_pkts_tx, diff_bytes_rx, diff_bytes_tx, - diff_cycles; + diff_ns; uint64_t mpps_rx, mpps_tx, mbps_rx, mbps_tx; struct rte_eth_stats stats; struct rte_port *port = &ports[port_id]; @@ -195,10 +204,17 @@ nic_stats_display(portid_t port_id) } } - diff_cycles = prev_cycles[port_id]; - prev_cycles[port_id] = rte_rdtsc(); - if (diff_cycles > 0) - diff_cycles = prev_cycles[port_id] - diff_cycles; + diff_ns = 0; + if (clock_gettime(CLOCK_TYPE_ID, &cur_time) == 0) { + uint64_t ns; + + ns = cur_time.tv_sec * NS_PER_SEC; + ns += cur_time.tv_nsec; + + if (prev_ns[port_id] != 0) + diff_ns = ns - prev_ns[port_id]; + prev_ns[port_id] = ns; + } diff_pkts_rx = (stats.ipackets > prev_pkts_rx[port_id]) ? (stats.ipackets - prev_pkts_rx[port_id]) : 0; @@ -206,10 +222,10 @@ nic_stats_display(portid_t port_id) (stats.opackets - prev_pkts_tx[port_id]) : 0; prev_pkts_rx[port_id] = stats.ipackets; prev_pkts_tx[port_id] = stats.opackets; - mpps_rx = diff_cycles > 0 ? - diff_pkts_rx * rte_get_tsc_hz() / diff_cycles : 0; - mpps_tx = diff_cycles > 0 ? - diff_pkts_tx * rte_get_tsc_hz() / diff_cycles : 0; + mpps_rx = diff_ns > 0 ? + (double)diff_pkts_rx / diff_ns * NS_PER_SEC : 0; + mpps_tx = diff_ns > 0 ? + (double)diff_pkts_tx / diff_ns * NS_PER_SEC : 0; diff_bytes_rx = (stats.ibytes > prev_bytes_rx[port_id]) ? (stats.ibytes - prev_bytes_rx[port_id]) : 0; @@ -217,10 +233,10 @@ nic_stats_display(portid_t port_id) (stats.obytes - prev_bytes_tx[port_id]) : 0; prev_bytes_rx[port_id] = stats.ibytes; prev_bytes_tx[port_id] = stats.obytes; - mbps_rx = diff_cycles > 0 ? - diff_bytes_rx * rte_get_tsc_hz() / diff_cycles : 0; - mbps_tx = diff_cycles > 0 ? - diff_bytes_tx * rte_get_tsc_hz() / diff_cycles : 0; + mbps_rx = diff_ns > 0 ? + (double)diff_bytes_rx / diff_ns * NS_PER_SEC : 0; + mbps_tx = diff_ns > 0 ? + (double)diff_bytes_tx / diff_ns * NS_PER_SEC : 0; printf("\n Throughput (since last show)\n"); printf(" Rx-pps: %12"PRIu64" Rx-bps: %12"PRIu64"\n Tx-pps: %12" From patchwork Fri Jun 26 22:09:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 191925 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp879098ilg; Fri, 26 Jun 2020 15:10:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkHihw5xcdxzLq2M6K1MugpvtLucNaFIw1Mx6s4IWEgvFQfVAhV/aY+VsNqGFE/QeOwu9k X-Received: by 2002:a17:906:4c48:: with SMTP id d8mr4194738ejw.331.1593209411991; Fri, 26 Jun 2020 15:10:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593209411; cv=none; d=google.com; s=arc-20160816; b=LjfV7FjyxxxT6/Lf+PKqxFlm3o5GO0JkLd+6c948/EcCHy7mGCHgaL6sskPEOEkoM4 WojpzE3IeTy4Sod/GWu4eeVL0+UHqbxkaen7ob+hFrMrD1Cf7p2cSmBGAcVzKc/M3REA SmWDEm5BkQnwigxHLLjwMHbwquCu9aw71DZ1c14dceHSLrMA3iIwwCJElvGCWclQo2uC iL8+1fSxyt/Ujrl9mzAC/mgXxpbQrBhHUxpg9Sae647+2R3+Txu0C7zIyEyY8dQzFWw6 xy7AA7rVE1ptXXvRQdfdM5nLrbdtnPJu8efuUBNoHtL43bQST3OP6FWs4RtSaiSGHvFU mcng== 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=BQki19TnL1TvmPP7+RE4ZlP57yzdboD/d/UWCJX5jno=; b=cJn3pATIJArNITP8d6LVyJw3YnpF3t1Xw3hTlv89R4mmnc8IyhQuhmjK1CulVLXiSj GJHo4u8CkAxdxeCCGL9pq3tOAleVHqQ420PQCN23l9Bliprq3p+pmVgTNVfy0i7wUTt4 GVOumcmyh1MkpyRFKGXqRwfSn6Lf7j9sXt99TxYUJjR6NJB5Z1inDRzwnY0h1B7vdfp8 aLpgMye0IbZF6GhRz0wsBIrIXKfgeZJ15jXOWCm6ujDR16gMZVPBz/7gIOHD0y9KUOzG SVadJfQT08KyjAKsWeE3v334i2mOHajWZxs7VRN1WOt1N1RcQqCD3Q4+ewC3zsGPA/dl f+nQ== 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 Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id f15si8782598edt.552.2020.06.26.15.10.11; Fri, 26 Jun 2020 15:10:11 -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 Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D4D4E1BECC; Sat, 27 Jun 2020 00:10:02 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 9110C1BEA3; Sat, 27 Jun 2020 00:09:59 +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 10CD71042; Fri, 26 Jun 2020 15:09:59 -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 F0DBF3F6CF; Fri, 26 Jun 2020 15:09:58 -0700 (PDT) From: Honnappa Nagarahalli To: dev@dpdk.org, honnappa.nagarahalli@arm.com, alialnu@mellanox.com, orgerlitz@mellanox.com, wenzhuo.lu@intel.com, beilei.xing@intel.com, bernard.iremonger@intel.com, ferruh.yigit@intel.com Cc: hemant.agrawal@nxp.com, jerinj@marvell.com, viacheslavo@mellanox.com, thomas@monjalon.net, ruifeng.wang@arm.com, phil.yang@arm.com, nd@arm.com, stable@dpdk.org Date: Fri, 26 Jun 2020 17:09:40 -0500 Message-Id: <20200626220943.22526-2-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200626220943.22526-1-honnappa.nagarahalli@arm.com> References: <20200617144307.9961-1-honnappa.nagarahalli@arm.com> <20200626220943.22526-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH v2 2/5] app/testpmd: enable burst stats for flowgen mode rx path 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" Enable missing burst stats for rx path for flowgen mode. Fixes: e9e23a617eb8 ("app/testpmd: add flowgen forwarding engine") Cc: stable@dpdk.org Signed-off-by: Honnappa Nagarahalli Reviewed-by: Phil Yang Reviewed-by: Ruifeng Wang Tested-by: Phil Yang --- app/test-pmd/flowgen.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.17.1 diff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c index 4bd351e67..011887c61 100644 --- a/app/test-pmd/flowgen.c +++ b/app/test-pmd/flowgen.c @@ -111,6 +111,10 @@ pkt_burst_flow_gen(struct fwd_stream *fs) /* Receive a burst of packets and discard them. */ nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst, nb_pkt_per_burst); +#ifdef RTE_TEST_PMD_RECORD_BURST_STATS + fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; +#endif + fs->rx_packets += nb_rx; for (i = 0; i < nb_rx; i++) From patchwork Fri Jun 26 22:09:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 191926 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp879192ilg; Fri, 26 Jun 2020 15:10:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxZRBnNcapUVeQNCZia6mi7rK19S5ITzC/hzQ9LWlq1cZ0P6D6VwRudMllmo7c01ZmDpGrW X-Received: by 2002:a17:906:6b8d:: with SMTP id l13mr4453508ejr.136.1593209419316; Fri, 26 Jun 2020 15:10:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593209419; cv=none; d=google.com; s=arc-20160816; b=EZkBseRF6FJwUGfpnkSyVdcD4Hu+A5bxy2dobEVkdnuVrW6CENfUKUkJyksQRhATLm vaIMeOhluyfrt/Xbz+NRVheYr8Dd3Drq+OCZDdRzHN7QIgU8savWzHleZbdDgqCbvKIT GrgTJaFyrR5SyQ1dALtotMwTjJBYU3qKyKI4x6Uf6Mo4wjqRdDukYzFese3ey4gJJx+r rzwMZE4Vgy5fesjtqdt2AzPEy8mxm+avNt8TG8ffO6X7ylNikRxf/po+S02qgS9T/SNw JgaBCgWBy77XcGWsf2EsyCUADyQW3EiXloKLPdEuIlVYVhaKnzGmrTCamamekvIelLxg X0VA== 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=20X9jR38vF47IrNdnIscUw+u14JjEKHIPi5GxIWTrYw=; b=LU10ANPLXQCAZdwSfAZ8FdH901hkwUAuh7uRIpresKEUbr8FOgki+QjKW68O0VWXzS J3VrhZsg9Ryo1nn8fe388WbXf6zkRRF+0FUquNJIGtpbd3oKXvrmot5qzJqYxN6tqlc8 cUbcQSJfNsTFTrQYhOKdfVjRKSGSQD6zMvp6xoEffKRqt0fIHOKAzI3USNRAXGyjSxZE ENWc2Remfq+SCrRMrsuNt+RQ9hoJhzQH9ztD8vLnfl5KpIg3hO5Fe1LkhQfw55odmyis o+6VBrnKSNxK7sbkWGd+SZGuOAD25yAhEDc5qp8AHj1JGdM9kZ8PKZJhgLf9bUYsyX2B y/9g== 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 Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id y16si9643573ejq.260.2020.06.26.15.10.19; Fri, 26 Jun 2020 15:10:19 -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 Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 70BC11BED7; Sat, 27 Jun 2020 00:10:04 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 572771BEA3; Sat, 27 Jun 2020 00:10:00 +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 D4E5D1396; Fri, 26 Jun 2020 15:09:59 -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 C01B43F6CF; Fri, 26 Jun 2020 15:09:59 -0700 (PDT) From: Honnappa Nagarahalli To: dev@dpdk.org, honnappa.nagarahalli@arm.com, alialnu@mellanox.com, orgerlitz@mellanox.com, wenzhuo.lu@intel.com, beilei.xing@intel.com, bernard.iremonger@intel.com, ferruh.yigit@intel.com Cc: hemant.agrawal@nxp.com, jerinj@marvell.com, viacheslavo@mellanox.com, thomas@monjalon.net, ruifeng.wang@arm.com, phil.yang@arm.com, nd@arm.com, stable@dpdk.org, jfreimann@redhat.com Date: Fri, 26 Jun 2020 17:09:41 -0500 Message-Id: <20200626220943.22526-3-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200626220943.22526-1-honnappa.nagarahalli@arm.com> References: <20200617144307.9961-1-honnappa.nagarahalli@arm.com> <20200626220943.22526-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH v2 3/5] app/testpmd: enable burst stats for noisy vnf mode 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" From: Phil Yang Add burst stats for noisy vnf mode. Fixes: 3c156061b938 ("app/testpmd: add noisy neighbour forwarding mode") Cc: stable@dpdk.org Cc: jfreimann@redhat.com Signed-off-by: Phil Yang Reviewed-by: Honnappa Nagarahalli Reviewed-by: Ruifeng Wang Reviewed-by: Jens Freimann --- app/test-pmd/noisy_vnf.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -- 2.17.1 diff --git a/app/test-pmd/noisy_vnf.c b/app/test-pmd/noisy_vnf.c index 58c4ee925..24f286da6 100644 --- a/app/test-pmd/noisy_vnf.c +++ b/app/test-pmd/noisy_vnf.c @@ -154,6 +154,9 @@ pkt_burst_noisy_vnf(struct fwd_stream *fs) nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst, nb_pkt_per_burst); +#ifdef RTE_TEST_PMD_RECORD_BURST_STATS + fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; +#endif if (unlikely(nb_rx == 0)) goto flush; fs->rx_packets += nb_rx; @@ -164,6 +167,9 @@ pkt_burst_noisy_vnf(struct fwd_stream *fs) pkts_burst, nb_rx); if (unlikely(nb_tx < nb_rx) && fs->retry_enabled) nb_tx += do_retry(nb_rx, nb_tx, pkts_burst, fs); +#ifdef RTE_TEST_PMD_RECORD_BURST_STATS + fs->tx_burst_stats.pkt_burst_spread[nb_tx]++; +#endif fs->tx_packets += nb_tx; fs->fwd_dropped += drop_pkts(pkts_burst, nb_rx, nb_tx); return; @@ -187,6 +193,9 @@ pkt_burst_noisy_vnf(struct fwd_stream *fs) nb_deqd); if (unlikely(nb_tx < nb_rx) && fs->retry_enabled) nb_tx += do_retry(nb_rx, nb_tx, tmp_pkts, fs); +#ifdef RTE_TEST_PMD_RECORD_BURST_STATS + fs->tx_burst_stats.pkt_burst_spread[nb_tx]++; +#endif fs->fwd_dropped += drop_pkts(tmp_pkts, nb_deqd, nb_tx); } } @@ -211,6 +220,9 @@ pkt_burst_noisy_vnf(struct fwd_stream *fs) tmp_pkts, nb_deqd); if (unlikely(sent < nb_deqd) && fs->retry_enabled) nb_tx += do_retry(nb_rx, nb_tx, tmp_pkts, fs); +#ifdef RTE_TEST_PMD_RECORD_BURST_STATS + fs->tx_burst_stats.pkt_burst_spread[nb_tx]++; +#endif fs->fwd_dropped += drop_pkts(tmp_pkts, nb_deqd, sent); ncf->prev_time = rte_get_timer_cycles(); } From patchwork Fri Jun 26 22:09:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 191927 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp879303ilg; Fri, 26 Jun 2020 15:10:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz8ycOrB6n22SMan15jAyVPuFijR2y81TZC1Hj6tOY/DR206arxvwjNeX9UnklKJ2z8fjBZ X-Received: by 2002:a17:906:3407:: with SMTP id c7mr4383882ejb.284.1593209428677; Fri, 26 Jun 2020 15:10:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593209428; cv=none; d=google.com; s=arc-20160816; b=XC7CMWz5YdYE5fEOLDnYgUIx3uILiqcWpWScJzm5RyxUTqvWSyqGiapanYEstFobR/ 7OweM611dBzahYddELzE+Sp6D1Q7rNbvKwAZbHhKE0biy7nsQvE6WioZ6qFsDly81GAM t1AeQYbrNAuZGWwJFEOu25z2E80tNhwVK9RppX6GypTP9exgXWH6RXB+YT4oPbWgpWIU +u0wu1QL9qag2BRetY5sZG7B1cNTzqf6olF2fESi+zpHKaLqBT1rfOdPClQnpSzwP893 dNeMjqeYalWMCmrWHr5HgwTKK44wxE5KJMZBMFnq3lG9kZVTH4+beuNEBrEGsOyhbe8Y FL0Q== 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=MzsFSxQkkokR+KG4NBHkPzsqc8ktwpTEVK3I43HQLfE=; b=eo5T2JJl/6brKaDtmgv0sQA4KdelAMesTUM5PvdgNEh/UJu+gNOzcn7NGzeUf+elQt 3KYUiwW+ONKIweILoC+wwoVUR2i9y4uNSNw8FqxqTiTjCVXlJe+s/BUkFxKpBeOy//d3 i47DYkwUr7IDHKV5p886MnndCYAC33P+1pFlpGFXIDnNslmv6oSGoVedDb+pkK/pnpiZ FyCOxTltStmaA3RYUs1bzmMC5Dl6cx72qcFwRqm5z3gWEskEnU4SuxO0IcLMOHtCweB9 drZ1oCzAcsXSqdV+H/z1dDAUW0Zk13FzxPqOCMATXa/qnlRuH+Hfa10fdVmQ+7G+8Tj/ VSiw== 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 Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id c68si11017567edf.428.2020.06.26.15.10.28; Fri, 26 Jun 2020 15:10:28 -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 Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 003B21BEE6; Sat, 27 Jun 2020 00:10:07 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 5E9281BEB3; Sat, 27 Jun 2020 00:10:01 +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 D8DC9101E; Fri, 26 Jun 2020 15:10:00 -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 CE4023F6CF; Fri, 26 Jun 2020 15:10:00 -0700 (PDT) From: Honnappa Nagarahalli To: dev@dpdk.org, honnappa.nagarahalli@arm.com, alialnu@mellanox.com, orgerlitz@mellanox.com, wenzhuo.lu@intel.com, beilei.xing@intel.com, bernard.iremonger@intel.com, ferruh.yigit@intel.com Cc: hemant.agrawal@nxp.com, jerinj@marvell.com, viacheslavo@mellanox.com, thomas@monjalon.net, ruifeng.wang@arm.com, phil.yang@arm.com, nd@arm.com, stable@dpdk.org Date: Fri, 26 Jun 2020 17:09:42 -0500 Message-Id: <20200626220943.22526-4-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200626220943.22526-1-honnappa.nagarahalli@arm.com> References: <20200617144307.9961-1-honnappa.nagarahalli@arm.com> <20200626220943.22526-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH v2 4/5] app/testpmd: fix burst percentage calculation 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" The burst % calculation can over flow due to multiplication. Fix the multiplication and increase the size of variables to 64b. Fixes: af75078fece3 ("first public release") Cc: stable@dpdk.org Signed-off-by: Honnappa Nagarahalli Reviewed-by: Phil Yang Reviewed-by: Ruifeng Wang Tested-by: Phil Yang Tested-by: Ali Alnubani --- app/test-pmd/testpmd.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) -- 2.17.1 Reviewed-by: Ferruh Yigit diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 4989d22ca..2e1493da2 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1692,9 +1692,9 @@ init_fwd_streams(void) static void pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs) { - unsigned int total_burst; - unsigned int nb_burst; - unsigned int burst_stats[3]; + uint64_t total_burst; + uint64_t nb_burst; + uint64_t burst_stats[3]; uint16_t pktnb_stats[3]; uint16_t nb_pkt; int burst_percent[3]; @@ -1723,8 +1723,8 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs) } if (total_burst == 0) return; - burst_percent[0] = (burst_stats[0] * 100) / total_burst; - printf(" %s-bursts : %u [%d%% of %d pkts", rx_tx, total_burst, + burst_percent[0] = (double)burst_stats[0] / total_burst * 100; + printf(" %s-bursts : %"PRIu64" [%d%% of %d pkts", rx_tx, total_burst, burst_percent[0], (int) pktnb_stats[0]); if (burst_stats[0] == total_burst) { printf("]\n"); @@ -1735,7 +1735,7 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs) 100 - burst_percent[0], pktnb_stats[1]); return; } - burst_percent[1] = (burst_stats[1] * 100) / total_burst; + burst_percent[1] = (double)burst_stats[1] / total_burst * 100; burst_percent[2] = 100 - (burst_percent[0] + burst_percent[1]); if ((burst_percent[1] == 0) || (burst_percent[2] == 0)) { printf(" + %d%% of others]\n", 100 - burst_percent[0]); From patchwork Fri Jun 26 22:09:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 191928 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp879407ilg; Fri, 26 Jun 2020 15:10:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwmmbpaSWyyVvGrtWZD4t1Ml3BQ2gFKKTQR5ldB/WOtyumFmS/2e4hn7wn6Tv03GFPGFdUp X-Received: by 2002:a17:906:abca:: with SMTP id kq10mr4388954ejb.242.1593209438216; Fri, 26 Jun 2020 15:10:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593209438; cv=none; d=google.com; s=arc-20160816; b=NeOL1IrG08pTgd7zq0AySImS9HTvnQryXF+2TJC37G+zvT6FwOn0M8/a8a9QBHozu5 PltvghwbvRMdfkcnzmb+tDWD0X2BTRz2+e2rC7Lc/VXUNtaP6GIRsN3Ec/oisr6JtMuD +1b7kmJzmIkcw4N8V73PFMXRmsYaeru5sAxoxqkwKpWjQ1OPykV/CroRTAKc9ApfHDCU 3gXWtVPrGhiTSpcKnY3ept/P4pPNRsH0kf3Q1fuBiONhpTxblP9HLgGEGwj6taKoE5iH Cjeq4F5kP7BRdkftV1zYFhZWdpUtks+jVVeQq+oXd903/LBOHLCjPmho0zM2b6jp+z8L H7kg== 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=wdKEcOzUDH55DZkc0yNFCjIgDQxAiuUzAFGcpITckQg=; b=zK5oHkQr1BpNxRPkrxAN85Y0y9mLIF2EQHJhWg7mL0pfplzlFwwDgxUQWoZcvm2Nu3 ry4yiVxdgHcPKc7k5vJ4A9bvK6YjrtAl+xwxLHTkNjJLmcE0QGowyaV3t5H1tVU8BU0Y 3U7+2uzUHDi83DZDpsTjjKV7FdVe5lvAS9lYP2Pp5MrBJLuNyAaItTgdGyZ5TKuh2E66 YVhg/B9xYC/+JEZe3QNDfGYPIvh72hU21NU1CZWu1cZVq9Cad1KYjXeaxvVYh9Ky4xaP miFp4hvG9eLI5BNE3mlQ86QYKw3dYsI46RA+cDVFolcI1mNtgyp2Lcf+2DlbffGhAtxe aO/w== 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 Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id i24si17591825eds.397.2020.06.26.15.10.38; Fri, 26 Jun 2020 15:10:38 -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 Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6064A1BF5B; Sat, 27 Jun 2020 00:10:09 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 23A321BEB3 for ; Sat, 27 Jun 2020 00:10:02 +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 9E67B1042; Fri, 26 Jun 2020 15:10:01 -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 87EA13F6CF; Fri, 26 Jun 2020 15:10:01 -0700 (PDT) From: Honnappa Nagarahalli To: dev@dpdk.org, honnappa.nagarahalli@arm.com, alialnu@mellanox.com, orgerlitz@mellanox.com, wenzhuo.lu@intel.com, beilei.xing@intel.com, bernard.iremonger@intel.com, ferruh.yigit@intel.com Cc: hemant.agrawal@nxp.com, jerinj@marvell.com, viacheslavo@mellanox.com, thomas@monjalon.net, ruifeng.wang@arm.com, phil.yang@arm.com, nd@arm.com Date: Fri, 26 Jun 2020 17:09:43 -0500 Message-Id: <20200626220943.22526-5-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200626220943.22526-1-honnappa.nagarahalli@arm.com> References: <20200617144307.9961-1-honnappa.nagarahalli@arm.com> <20200626220943.22526-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH v2 5/5] app/testpmd: enable empty polls in burst stats 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" The number of empty polls provides information about available CPU head room in the presence of continuous polling. Signed-off-by: Honnappa Nagarahalli Reviewed-by: Phil Yang Reviewed-by: Ruifeng Wang Tested-by: Phil Yang Tested-by: Ali Alnubani --- app/test-pmd/csumonly.c | 5 +-- app/test-pmd/icmpecho.c | 6 ++-- app/test-pmd/iofwd.c | 6 ++-- app/test-pmd/macfwd.c | 6 ++-- app/test-pmd/macswap.c | 6 ++-- app/test-pmd/rxonly.c | 6 ++-- app/test-pmd/testpmd.c | 74 ++++++++++++++++++++++++----------------- 7 files changed, 61 insertions(+), 48 deletions(-) -- 2.17.1 Reviewed-by: Ferruh Yigit diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index 862622379..0a96b24eb 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -802,11 +802,12 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) /* receive a burst of packet */ nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst, nb_pkt_per_burst); - if (unlikely(nb_rx == 0)) - return; #ifdef RTE_TEST_PMD_RECORD_BURST_STATS fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; #endif + if (unlikely(nb_rx == 0)) + return; + fs->rx_packets += nb_rx; rx_bad_ip_csum = 0; rx_bad_l4_csum = 0; diff --git a/app/test-pmd/icmpecho.c b/app/test-pmd/icmpecho.c index 65aece16c..78e3adf2c 100644 --- a/app/test-pmd/icmpecho.c +++ b/app/test-pmd/icmpecho.c @@ -308,12 +308,12 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) */ nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst, nb_pkt_per_burst); - if (unlikely(nb_rx == 0)) - return; - #ifdef RTE_TEST_PMD_RECORD_BURST_STATS fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; #endif + if (unlikely(nb_rx == 0)) + return; + fs->rx_packets += nb_rx; nb_replies = 0; for (i = 0; i < nb_rx; i++) { diff --git a/app/test-pmd/iofwd.c b/app/test-pmd/iofwd.c index 9dce76efe..22b59bbda 100644 --- a/app/test-pmd/iofwd.c +++ b/app/test-pmd/iofwd.c @@ -66,13 +66,13 @@ pkt_burst_io_forward(struct fwd_stream *fs) */ nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst, nb_pkt_per_burst); +#ifdef RTE_TEST_PMD_RECORD_BURST_STATS + fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; +#endif if (unlikely(nb_rx == 0)) return; fs->rx_packets += nb_rx; -#ifdef RTE_TEST_PMD_RECORD_BURST_STATS - fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; -#endif nb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_rx); /* diff --git a/app/test-pmd/macfwd.c b/app/test-pmd/macfwd.c index d2ebb1105..0a89d94be 100644 --- a/app/test-pmd/macfwd.c +++ b/app/test-pmd/macfwd.c @@ -71,12 +71,12 @@ pkt_burst_mac_forward(struct fwd_stream *fs) */ nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst, nb_pkt_per_burst); - if (unlikely(nb_rx == 0)) - return; - #ifdef RTE_TEST_PMD_RECORD_BURST_STATS fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; #endif + if (unlikely(nb_rx == 0)) + return; + fs->rx_packets += nb_rx; txp = &ports[fs->tx_port]; tx_offloads = txp->dev_conf.txmode.offloads; diff --git a/app/test-pmd/macswap.c b/app/test-pmd/macswap.c index 8428c26d8..fbe8cb39e 100644 --- a/app/test-pmd/macswap.c +++ b/app/test-pmd/macswap.c @@ -72,12 +72,12 @@ pkt_burst_mac_swap(struct fwd_stream *fs) */ nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst, nb_pkt_per_burst); - if (unlikely(nb_rx == 0)) - return; - #ifdef RTE_TEST_PMD_RECORD_BURST_STATS fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; #endif + if (unlikely(nb_rx == 0)) + return; + fs->rx_packets += nb_rx; txp = &ports[fs->tx_port]; diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c index 5c65fc42d..18d59a68d 100644 --- a/app/test-pmd/rxonly.c +++ b/app/test-pmd/rxonly.c @@ -63,12 +63,12 @@ pkt_burst_receive(struct fwd_stream *fs) */ nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst, nb_pkt_per_burst); - if (unlikely(nb_rx == 0)) - return; - #ifdef RTE_TEST_PMD_RECORD_BURST_STATS fs->rx_burst_stats.pkt_burst_spread[nb_rx]++; #endif + if (unlikely(nb_rx == 0)) + return; + fs->rx_packets += nb_rx; for (i = 0; i < nb_rx; i++) rte_pktmbuf_free(pkts_burst[i]); diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 2e1493da2..9075143b7 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1692,57 +1692,69 @@ init_fwd_streams(void) static void pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs) { - uint64_t total_burst; + uint64_t total_burst, sburst; uint64_t nb_burst; - uint64_t burst_stats[3]; - uint16_t pktnb_stats[3]; + uint64_t burst_stats[4]; + uint16_t pktnb_stats[4]; uint16_t nb_pkt; - int burst_percent[3]; + int burst_percent[4], sburstp; + int i; /* * First compute the total number of packet bursts and the * two highest numbers of bursts of the same number of packets. */ total_burst = 0; - burst_stats[0] = burst_stats[1] = burst_stats[2] = 0; - pktnb_stats[0] = pktnb_stats[1] = pktnb_stats[2] = 0; + memset(&burst_stats, 0x0, sizeof(burst_stats)); + memset(&pktnb_stats, 0x0, sizeof(pktnb_stats)); + for (nb_pkt = 0; nb_pkt < MAX_PKT_BURST; nb_pkt++) { nb_burst = pbs->pkt_burst_spread[nb_pkt]; - if (nb_burst == 0) - continue; total_burst += nb_burst; - if (nb_burst > burst_stats[0]) { - burst_stats[1] = burst_stats[0]; - pktnb_stats[1] = pktnb_stats[0]; + + /* Show empty poll stats always */ + if (nb_pkt == 0) { burst_stats[0] = nb_burst; pktnb_stats[0] = nb_pkt; - } else if (nb_burst > burst_stats[1]) { + continue; + } + + if (nb_burst == 0) + continue; + + if (nb_burst > burst_stats[1]) { + burst_stats[2] = burst_stats[1]; + pktnb_stats[2] = pktnb_stats[1]; burst_stats[1] = nb_burst; pktnb_stats[1] = nb_pkt; + } else if (nb_burst > burst_stats[2]) { + burst_stats[2] = nb_burst; + pktnb_stats[2] = nb_pkt; } } if (total_burst == 0) return; - burst_percent[0] = (double)burst_stats[0] / total_burst * 100; - printf(" %s-bursts : %"PRIu64" [%d%% of %d pkts", rx_tx, total_burst, - burst_percent[0], (int) pktnb_stats[0]); - if (burst_stats[0] == total_burst) { - printf("]\n"); - return; - } - if (burst_stats[0] + burst_stats[1] == total_burst) { - printf(" + %d%% of %d pkts]\n", - 100 - burst_percent[0], pktnb_stats[1]); - return; - } - burst_percent[1] = (double)burst_stats[1] / total_burst * 100; - burst_percent[2] = 100 - (burst_percent[0] + burst_percent[1]); - if ((burst_percent[1] == 0) || (burst_percent[2] == 0)) { - printf(" + %d%% of others]\n", 100 - burst_percent[0]); - return; + + printf(" %s-bursts : %"PRIu64" [", rx_tx, total_burst); + for (i = 0, sburst = 0, sburstp = 0; i < 4; i++) { + if (i == 3) { + printf("%d%% of other]\n", 100 - sburstp); + return; + } + + sburst += burst_stats[i]; + if (sburst == total_burst) { + printf("%d%% of %d pkts]\n", + 100 - sburstp, (int) pktnb_stats[i]); + return; + } + + burst_percent[i] = + (double)burst_stats[i] / total_burst * 100; + printf("%d%% of %d pkts + ", + burst_percent[i], (int) pktnb_stats[i]); + sburstp += burst_percent[i]; } - printf(" + %d%% of %d pkts + %d%% of others]\n", - burst_percent[1], (int) pktnb_stats[1], burst_percent[2]); } #endif /* RTE_TEST_PMD_RECORD_BURST_STATS */