Harry van Haaren <[email protected]> writes: > 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
Hi Harry, I'm seeing quite a few failures associated with this patch set (see below log for an example): https://api.travis-ci.org/v3/job/482434899/log.txt Seems to be with gcc and the test suite. The clang builds don't seem to be impacted. I haven't dived deep into the failures, but the tests which are failing. > 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 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
