[ovs-dev] [PATCH] dpif-netdev-perf: Fix double update of perf histograms.

Ilya Maximets i.maximets at samsung.com
Mon Mar 18 13:01:13 UTC 2019


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