[v2] app/testpmd: fix CPU cycles per pkt stats on transmit modes
Checks
Commit Message
In txonly and flowgen forwarding mode, calculating CPU per packets with
total received packets is not accurate. Use total transmitted packets
for these cases.
The error output under txonly mode:
testpmd> show fwd stats all
---------------------- Forward statistics for port 0 -------------------
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 3582891927 TX-dropped: 401965824 TX-total: 3984857751
TX-bursts : 86381636 [0% of 0 pkts + 85% of 64 pkts + 15% of 32 pkts]
-------------------------------------------------------------------------
---------------------- Forward statistics for port 1 -------------------
RX-packets: 1 RX-dropped: 394351696 RX-total: 394351697
TX-packets: 3582890632 TX-dropped: 401965568 TX-total: 3984856200
TX-bursts : 86381679 [0% of 0 pkts + 85% of 64 pkts + 15% of 32 pkts]
-------------------------------------------------------------------------
+++++++++++++++ Accumulated forward statistics for all ports+++++++++++++
RX-packets: 1 RX-dropped: 394351696 RX-total: 394351697
TX-packets: 7165782559 TX-dropped: 803931392 TX-total: 7969713951
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CPU cycles/packet=54984156291.00 \
(total cycles=54984156291 / total RX packets=1) at 200 MHz Clock
Signed-off-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Fixes: 53324971a14e ("app/testpmd: display/clear forwarding stats on demand")
Cc: stable@dpdk.org
Cc: david.marchand@redhat.com
---
v2:
Consolidate the output into a single printf. (Honnappa Nagarahalli)
app/test-pmd/testpmd.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
Comments
<snip>
> Subject: [PATCH v2] app/testpmd: fix CPU cycles per pkt stats on transmit
> modes
>
> In txonly and flowgen forwarding mode, calculating CPU per packets with
> total received packets is not accurate. Use total transmitted packets for
> these cases.
>
> The error output under txonly mode:
> testpmd> show fwd stats all
>
> ---------------------- Forward statistics for port 0 -------------------
> RX-packets: 0 RX-dropped: 0 RX-total: 0
> TX-packets: 3582891927 TX-dropped: 401965824 TX-total: 3984857751
> TX-bursts : 86381636 [0% of 0 pkts + 85% of 64 pkts + 15% of 32 pkts]
> -------------------------------------------------------------------------
>
> ---------------------- Forward statistics for port 1 -------------------
> RX-packets: 1 RX-dropped: 394351696 RX-total: 394351697
> TX-packets: 3582890632 TX-dropped: 401965568 TX-total: 3984856200
> TX-bursts : 86381679 [0% of 0 pkts + 85% of 64 pkts + 15% of 32 pkts]
> -------------------------------------------------------------------------
>
> +++++++++++++++ Accumulated forward statistics for all
> +++++++++++++++ ports+++++++++++++
> RX-packets: 1 RX-dropped: 394351696 RX-total: 394351697
> TX-packets: 7165782559 TX-dropped: 803931392 TX-total: 7969713951
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++
>
> CPU cycles/packet=54984156291.00 \
> (total cycles=54984156291 / total RX packets=1) at 200 MHz Clock
>
> Signed-off-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Fixes: 53324971a14e ("app/testpmd: display/clear forwarding stats on
> demand")
> Cc: stable@dpdk.org
> Cc: david.marchand@redhat.com
> ---
> v2:
> Consolidate the output into a single printf. (Honnappa Nagarahalli)
>
> app/test-pmd/testpmd.c | 21 +++++++++++++++------
> 1 file changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
> 4989d22..826d7dd 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -1961,13 +1961,22 @@ fwd_stats_display(void)
> acc_stats_border, acc_stats_border); #ifdef
> RTE_TEST_PMD_RECORD_CORE_CYCLES #define CYC_PER_MHZ 1E6
> - if (total_recv > 0)
> + if (total_recv > 0 || total_xmit > 0) {
> + uint8_t ingress;
> + if (strcmp(cur_fwd_eng->fwd_mode_name, "txonly") == 0 ||
> + strcmp(cur_fwd_eng->fwd_mode_name, "flowgen") == 0)
> + ingress = 0;
This can be 'total_pkts = total_recv'
> + else
> + ingress = 1;
This can be 'total_pkts = total_xmit'
> +
> printf("\n CPU cycles/packet=%.2F (total cycles="
> - "%"PRIu64" / total RX packets=%"PRIu64") at %"PRIu64
> - " MHz Clock\n",
> - (double) fwd_cycles / total_recv,
> - fwd_cycles, total_recv,
> - (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ));
> + "%"PRIu64" / total %s packets=%"PRIu64") at %"
> + PRIu64" MHz Clock\n", ((double) fwd_cycles /
> + (ingress ? total_recv : total_xmit)),
Can be just 'total_pkts'.
> + fwd_cycles, cur_fwd_eng->fwd_mode_name,
> + (ingress ? total_recv : total_xmit),
Can be just 'total_pkts'.
> + (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ));
> + }
> #endif
> }
Otherwise,
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
>
> --
> 2.7.4
> -----Original Message-----
> From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Sent: Monday, June 22, 2020 11:40 AM
> To: Phil Yang <Phil.Yang@arm.com>; dev@dpdk.org
> Cc: ferruh.yigit@intel.com; maxime.coquelin@redhat.com; Ruifeng Wang
> <Ruifeng.Wang@arm.com>; nd <nd@arm.com>; stable@dpdk.org;
> david.marchand@redhat.com; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com>
> Subject: RE: [PATCH v2] app/testpmd: fix CPU cycles per pkt stats on transmit
> modes
>
> <snip>
>
> > Subject: [PATCH v2] app/testpmd: fix CPU cycles per pkt stats on transmit
> > modes
> >
> > In txonly and flowgen forwarding mode, calculating CPU per packets with
> > total received packets is not accurate. Use total transmitted packets for
> > these cases.
> >
> > The error output under txonly mode:
> > testpmd> show fwd stats all
> >
> > ---------------------- Forward statistics for port 0 -------------------
> > RX-packets: 0 RX-dropped: 0 RX-total: 0
> > TX-packets: 3582891927 TX-dropped: 401965824 TX-total: 3984857751
> > TX-bursts : 86381636 [0% of 0 pkts + 85% of 64 pkts + 15% of 32 pkts]
> > -------------------------------------------------------------------------
> >
> > ---------------------- Forward statistics for port 1 -------------------
> > RX-packets: 1 RX-dropped: 394351696 RX-total: 394351697
> > TX-packets: 3582890632 TX-dropped: 401965568 TX-total: 3984856200
> > TX-bursts : 86381679 [0% of 0 pkts + 85% of 64 pkts + 15% of 32 pkts]
> > -------------------------------------------------------------------------
> >
> > +++++++++++++++ Accumulated forward statistics for all
> > +++++++++++++++ ports+++++++++++++
> > RX-packets: 1 RX-dropped: 394351696 RX-total: 394351697
> > TX-packets: 7165782559 TX-dropped: 803931392 TX-total: 7969713951
> >
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++
> > ++++++++++
> >
> > CPU cycles/packet=54984156291.00 \
> > (total cycles=54984156291 / total RX packets=1) at 200 MHz Clock
> >
> > Signed-off-by: Phil Yang <phil.yang@arm.com>
> > Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
> > Fixes: 53324971a14e ("app/testpmd: display/clear forwarding stats on
> > demand")
> > Cc: stable@dpdk.org
> > Cc: david.marchand@redhat.com
> > ---
> > v2:
> > Consolidate the output into a single printf. (Honnappa Nagarahalli)
> >
> > app/test-pmd/testpmd.c | 21 +++++++++++++++------
> > 1 file changed, 15 insertions(+), 6 deletions(-)
> >
> > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
> > 4989d22..826d7dd 100644
> > --- a/app/test-pmd/testpmd.c
> > +++ b/app/test-pmd/testpmd.c
> > @@ -1961,13 +1961,22 @@ fwd_stats_display(void)
> > acc_stats_border, acc_stats_border); #ifdef
> > RTE_TEST_PMD_RECORD_CORE_CYCLES #define CYC_PER_MHZ 1E6
> > - if (total_recv > 0)
> > + if (total_recv > 0 || total_xmit > 0) {
> > + uint8_t ingress;
> > + if (strcmp(cur_fwd_eng->fwd_mode_name, "txonly") == 0
> ||
> > + strcmp(cur_fwd_eng->fwd_mode_name, "flowgen") == 0)
> > + ingress = 0;
> This can be 'total_pkts = total_recv'
>
> > + else
> > + ingress = 1;
> This can be 'total_pkts = total_xmit'
Agree. Much better.
Updated in V3.
Thanks,
Phil
>
> > +
> > printf("\n CPU cycles/packet=%.2F (total cycles="
> > - "%"PRIu64" / total RX packets=%"PRIu64") at %"PRIu64
> > - " MHz Clock\n",
> > - (double) fwd_cycles / total_recv,
> > - fwd_cycles, total_recv,
> > - (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ));
> > + "%"PRIu64" / total %s packets=%"PRIu64") at %"
> > + PRIu64" MHz Clock\n", ((double) fwd_cycles /
> > + (ingress ? total_recv : total_xmit)),
> Can be just 'total_pkts'.
>
> > + fwd_cycles, cur_fwd_eng->fwd_mode_name,
> > + (ingress ? total_recv : total_xmit),
> Can be just 'total_pkts'.
>
> > + (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ));
> > + }
> > #endif
> > }
> Otherwise,
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
>
> >
> > --
> > 2.7.4
@@ -1961,13 +1961,22 @@ fwd_stats_display(void)
acc_stats_border, acc_stats_border);
#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
#define CYC_PER_MHZ 1E6
- if (total_recv > 0)
+ if (total_recv > 0 || total_xmit > 0) {
+ uint8_t ingress;
+ if (strcmp(cur_fwd_eng->fwd_mode_name, "txonly") == 0 ||
+ strcmp(cur_fwd_eng->fwd_mode_name, "flowgen") == 0)
+ ingress = 0;
+ else
+ ingress = 1;
+
printf("\n CPU cycles/packet=%.2F (total cycles="
- "%"PRIu64" / total RX packets=%"PRIu64") at %"PRIu64
- " MHz Clock\n",
- (double) fwd_cycles / total_recv,
- fwd_cycles, total_recv,
- (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ));
+ "%"PRIu64" / total %s packets=%"PRIu64") at %"
+ PRIu64" MHz Clock\n", ((double) fwd_cycles /
+ (ingress ? total_recv : total_xmit)),
+ fwd_cycles, cur_fwd_eng->fwd_mode_name,
+ (ingress ? total_recv : total_xmit),
+ (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ));
+ }
#endif
}