[ovs-dev] [PATCH v2 00/12] Improve performance of OVS-DPDK classifier.

Bhanuprakash Bodireddy bhanuprakash.bodireddy at intel.com
Thu Oct 13 09:58:23 UTC 2016

This patch series is aimed at improving the performance of OVS-DPDK

With few thousand flows installed, the EMC becomes inefficient due
to thrashing and the bottleneck moves to the dpcls. In EMC disabled
case, through VTune we found that significant performance degradation
is due to LLC thrashing, memory latency, machine clears and expensive
hash computation.

This first patch-set improves the dpcls performance by 15% (+1 Mpps)
when EMC is disabled and OVS-DPDK built with CFLAGS="-O2 -g".

Bhanuprakash Bodireddy (12):
  dpcls: Use 32 packet batches for lookups.
        Comment: ~120k performance throughput improvement.

  flow: Add comments to mf_get_next_in_map().
        Comment: Add comments to the function.

  flow: Skip invoking expensive count_1bits() with zero input.
        Comment: ~630k performance throughput improvement.

  hash: Skip invoking mhash_add__() with zero input.
        Comment: ~150k performance throughput improvement.

  dpif-netdev: Add comments to dp_netdev_input__().
        Comment: Add comments to the function.

  cmap: Remove prefetching in cmap_find_batch().
        Comment: ~39k performance throughput improvement.

  dpif-netdev: Cache align netdev_flow_keys.
        Comment: ~170k performance throughput improvement in EMC enabled case.

  dpif-netdev: Reorder elements in dp_netdev_port structure.
  dpif: Reorder elements in dpif_upcall structure.
  ovsdb: Reorder elements in ovsdb_table_schema structure.
  netlink-socket: Reorder elements in nl_dump structure.
  timeval: Reorder elements in clock structure.
        Comment: Reorder memeber variables of the structures to reduce
                 pad bytes and there by the memory footprint.

 lib/cmap.c           |   8 +---
 lib/dpif-netdev.c    | 123 ++++++++++++++++++++++++---------------------------
 lib/dpif.h           |   5 ++-
 lib/flow.h           |  47 +++++++++++++++-----
 lib/hash.h           |   5 +++
 lib/netlink-socket.h |   6 +--
 lib/timeval.c        |   4 +-
 ovsdb/table.h        |   4 +-
 8 files changed, 113 insertions(+), 89 deletions(-)


More information about the dev mailing list