[ovs-dev] [PATCH] dpif-netdev-perf: Fix double update of perf histograms.
Jan Scheurich
jan.scheurich at ericsson.com
Mon Mar 18 13:48:06 UTC 2019
Hi Ilya,
Thanks for spotting this. I believe your fix is correct.
BR, Jan
> -----Original Message-----
> From: Ilya Maximets <i.maximets at samsung.com>
> Sent: Monday, 18 March, 2019 14:01
> To: ovs-dev at openvswitch.org; Ian Stokes <ian.stokes at intel.com>
> Cc: Kevin Traynor <ktraynor at redhat.com>; Ilya Maximets
> <i.maximets at samsung.com>; Jan Scheurich <jan.scheurich at ericsson.com>
> Subject: [PATCH] dpif-netdev-perf: Fix double update of perf histograms.
>
> Real values of 'packets per batch' and 'cycles per upcall' already added to
> histograms in 'dpif-netdev' on receive. Adding the averages makes statistics
> wrong. We should not add to histograms values that never really appeared.
>
> For exmaple, in current code following situation is possible:
>
> pmd thread numa_id 0 core_id 5:
> ...
> Rx packets: 83 (0 Kpps, 13873 cycles/pkt)
> ...
> - Upcalls: 3 ( 3.6 %, 248.6 us/upcall)
>
> Histograms
> packets/it pkts/batch upcalls/it cycles/upcall
> 1 83 1 166 1 3 ...
> 15848 2
> 19952 2
> ...
> 50118 2
>
> i.e. all the packets counted twice in 'pkts/batch' column and all the upcalls
> counted twice in 'cycles/upcall' column.
>
> CC: Jan Scheurich <jan.scheurich at ericsson.com>
> Fixes: 79f368756ce8 ("dpif-netdev: Detailed performance stats for PMDs")
> Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
> ---
> lib/dpif-netdev-perf.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/lib/dpif-netdev-perf.c b/lib/dpif-netdev-perf.c index
> 8f0c9bc4f..52324858d 100644
> --- a/lib/dpif-netdev-perf.c
> +++ b/lib/dpif-netdev-perf.c
> @@ -498,15 +498,7 @@ pmd_perf_end_iteration(struct pmd_perf_stats *s, int
> rx_packets,
> cycles_per_pkt = cycles / rx_packets;
> histogram_add_sample(&s->cycles_per_pkt, cycles_per_pkt);
> }
> - if (s->current.batches > 0) {
> - histogram_add_sample(&s->pkts_per_batch,
> - rx_packets / s->current.batches);
> - }
> histogram_add_sample(&s->upcalls, s->current.upcalls);
> - if (s->current.upcalls > 0) {
> - histogram_add_sample(&s->cycles_per_upcall,
> - s->current.upcall_cycles / s->current.upcalls);
> - }
> histogram_add_sample(&s->max_vhost_qfill, s->current.max_vhost_qfill);
>
> /* Add iteration samples to millisecond stats. */
> --
> 2.17.1
More information about the dev
mailing list