[ovs-dev] [PATCH v1 0/6] Memory access optimization for flow scalability of userspace datapath.

Yanqin Wei Yanqin.Wei at arm.com
Tue Jun 2 07:09:59 UTC 2020


OVS userspace datapath is a program with heavy memory access. It needs to
load/store a large number of memory, including packet header, metadata,
EMC/SMC/DPCLS tables and so on. It causes a lot of cache line missing and
refilling, which has a great impact on flow scalability. And in some cases,
EMC has a negative impact on the overall performance. It is difficult for
user to dynamically manage the enabling of EMC. 

This series of patches improve memory access of userspace datapath as
follows:
1. Reduce the number of metadata cache line accessed by non-tunnel traffic. 
2. Decrease unnecessary memory load/store for batch/flow. 
3. Modify the layout of EMC data struct. Centralize the storage of hash
value. 

In the NIC2NIC traffic tests, the overall performance improvement is
observed, especially in multi-flow cases. 
Flows           delta
1-1K flows      5-10%
10K flows       20%
100K flows      40%
EMC disable     10%

Malvika Gupta (1):
  [ovs-dev] dpif-netdev: Modify dfc_processing function to void function

Yanqin Wei (5):
  netdev: avoid unnecessary packet batch refilling in netdev feature
    check
  dpif-netdev: add tunnel_valid flag to skip ip/ipv6 address comparison
  dpif-netdev: improve emc lookup performance by contiguous storage of
    hash value.
  dpif-netdev: skip flow hash calculation in case of smc disabled
  dpif-netdev: remove unnecessary key length calculation in fast path

 lib/dp-packet.h   |  12 +++--
 lib/dpif-netdev.c | 115 ++++++++++++++++++++++++----------------------
 lib/flow.c        |   2 +-
 lib/netdev.c      |  13 ++++--
 lib/packets.h     |  46 ++++++++++++++++---
 5 files changed, 120 insertions(+), 68 deletions(-)

-- 
2.17.1



More information about the dev mailing list