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

Yanqin Wei Yanqin.Wei at arm.com
Tue Jun 30 09:26:48 UTC 2020


Hi, every contributor

These patches could significantly improve multi-flow throughput of userspace datapath.  If you feel it will take too much time to review all patches, I suggest you could look at the 2nd/3rd first, which have the major improvement in these patches.
[ovs-dev][PATCH v1 2/6] dpif-netdev: add tunnel_valid flag to skip ip/ipv6 address comparison
[ovs-dev][PATCH v1 3/6] dpif-netdev: improve emc lookup performance by contiguous storage of hash value.

Any comments from anyone are appreciated.

Best Regards,
Wei Yanqin

> -----Original Message-----
> From: Yanqin Wei <Yanqin.Wei at arm.com>
> Sent: Tuesday, June 2, 2020 3:10 PM
> To: dev at openvswitch.org
> Cc: nd <nd at arm.com>; i.maximets at ovn.org; u9012063 at gmail.com; Malvika
> Gupta <Malvika.Gupta at arm.com>; Lijian Zhang <Lijian.Zhang at arm.com>;
> Ruifeng Wang <Ruifeng.Wang at arm.com>; Lance Yang
> <Lance.Yang at arm.com>; Yanqin Wei <Yanqin.Wei at arm.com>
> Subject: [ovs-dev][PATCH v1 0/6] Memory access optimization for flow
> scalability of userspace datapath.
> 
> 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