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 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev