Hi Folks,

This patchset is a v4, changes from v3 are a fix to the issue reported
by Ilya (see v3 patchset for details). Note that this patchset enables
the work as presented at OVS Conf last December, particularly this is
the function pointer part: https://www.youtube.com/watch?v=5-MDlpUIOBE

The work contained in this patchset achieves the following;

Patch 1:
Refactor dpcls_lookup and the subtable for flexibility.
In particular, add a function pointer to the subtable
structure, which enables "plugging-in" a lookup function
at runtime. This enables a number of optimizations in future.

Patch 2 & 3:
With the function pointer in place, we refactor the existing
dpcls_lookup matching code into its own function, and later its
own file. To split it to its own file requires making various
dpcls data-structures available in the dpif-netdev.h header.

Patch 4:
Re-implement and optimize dpcls_rule_matches_key() by removing
the "loopy-branch-ness" of the FOR_EACH() macros used. Instead
a popcount() approach is used, which is much more CPU performance
friendly, due to reduced branches/loads-stores and total work done.

Performance:
Patches 1, 2 and 3 are performance neutral in testing here. The
fourth patch provides a significant performance improvement when
dpcls or SMC are processing packets.


Feedback, reviews, performance numbers weclomed! -Harry


Harry van Haaren (4):
  dpif-netdev: implement function pointers/subtable
  dpif-netdev: move dpcls lookup structures to .h
  dpif-netdev: split out generic lookup function
  dpif-netdev: optimized dpcls_rule_matches_key()

 lib/automake.mk                  |   1 +
 lib/dpif-netdev-lookup-generic.c |  95 ++++++++++++++++++++++
 lib/dpif-netdev.c                | 124 +++--------------------------
 lib/dpif-netdev.h                | 130 +++++++++++++++++++++++++++++++
 4 files changed, 238 insertions(+), 112 deletions(-)
 create mode 100644 lib/dpif-netdev-lookup-generic.c

-- 
2.17.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to