The run-time performance of PMDs is often difficult to understand and 
trouble-shoot. The existing PMD statistics counters only provide a coarse 
grained average picture. At packet rates of several Mpps sporadic drops of 
packet bursts happen at sub-millisecond time scales and are impossible to 
capture and analyze with existing tools.

This patch set refactors the existing PMD statistics into a dedicated submodule 
and collects a large number of important PMD performance metrics per PMD 
iteration, maintaining histograms and circular histories for iteration metrics 
and millisecond averages. To capture sporadic drop events, the patch set can be 
configured to monitor iterations for suspicious metrics and to log the 
neighborhood of such iterations for off-line analysis.

The extra cost for the performance metric collection and the supervision has 
been measured to be in the order of 1% compared to the base commit in a PVP 
setup with L3 pipeline over VXLAN tunnels. For that reason the metrics 
collection is disabled by default and can be enabled at run-time through 
configuration.

The first patch in the series fully includes the changes proposed in Darrel's 
earlier "[patch_v5 0/3] dpif-netdev: Fix and refactor pmd stats" 
(https://mail.openvswitch.org/pipermail/ovs-dev/2017-August/337686.html).


v3->v4:
    Rebased to master (commit 4d0a31b)
        Reverting changes to struct dp_netdev_pmd_thread
    Make metrics collection configurable
    Several bugfixes

v2->v3:
    Rebased to OVS master (commit 3728b3b)
        Non-trivial adaptation to struct dp_netdev_pmd_thread
        refactored in commit a807c157 (Bhanu)
    No other changes compared to v2

v1 -> v2:
    Rebased to OVS master (commit 7468ec788)
    No other changes compared to v1


Jan Scheurich (3):
  dpif-netdev: Refactor PMD performance into dpif-netdev-perf
  dpif-netdev: Detailed performance stats for PMDs
  dpif-netdev: Detection and logging of suspicious PMD iterations

 lib/automake.mk        |   2 +
 lib/dp-packet.h        |   2 +
 lib/dpif-netdev-perf.c | 515 +++++++++++++++++++++++++++++++++++++++++++++++++
 lib/dpif-netdev-perf.h | 322 +++++++++++++++++++++++++++++++
 lib/dpif-netdev.c      | 471 ++++++++++++++++++++++++++------------------
 lib/netdev-dpdk.c      |  23 ++-
 lib/netdev-dpdk.h      |  14 ++
 ofproto/ofproto-dpif.c |   3 +-
 tests/pmd.at           |  22 ++-
 9 files changed, 1168 insertions(+), 206 deletions(-)
 create mode 100644 lib/dpif-netdev-perf.c
 create mode 100644 lib/dpif-netdev-perf.h

-- 
1.9.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to