[ovs-dev] [PATCH v6 0/6] DPCLS Subtable ISA Optimization

Ilya Maximets i.maximets at ovn.org
Thu Jul 9 18:06:47 UTC 2020


On 7/2/20 7:42 PM, Harry van Haaren wrote:
> v6 work done:
> - Fix as --64 unrecognized option
> - Fix build issues with avx512 library changes
> - Fix files left in build dir after distclean
> - Fix CPU arch dependant RTE_CPUFLAG_ usage
> 
> Thanks William & Ian for review & help on v5.
> All known issues are fixed and working here.
> 
> 
> Hi All,
> 
> This patchset implements the changes as proposed during the
> OVS Conf '19, in the talk "Next steps for SW Datapath".
> Youtube link: https://youtu.be/x0bOpojnpmU
> 
> The talk raises 3 main requirements for CPU ISA Optimizations,
> each of which is addressed in some of the patches below.
> - Test & Validation (video @ 2:20)
> - Usabiliity & Debug (video @ 6:00)
> - Package & Deploy (video @ 8:45)
> 
> Patch 1/6:
> The test and validation requirements proposed above are implemented,
> with the refactor of the subtable function pointer registration,
> and the autovalidator implementation is added.
> 
> Patch 2 & 3 / 6:
> Adds the commands for usability & debug. Now improved with a "get" and
> "set" command. Get returns current priorities and a list of each lookup
> implementation. Set provides feedback to the user as to the number of
> DPCLS ports/subtables that have new lookup functions due to the command
> that was executed.
> 
> Patch 4/6:
> Enable CPU ISA detection at runtime, providing information for future
> ISA optimized functions.
> 
> Patch 5/6:
> Actual AVX-512 implementation for DPCLS subtable search. This is the
> actual SIMD vector code, which performs DPCLS miniflow iteration in
> parallel.
> 
> Patch 6/6:
> Add section in dpdk/bridges.rst on how to use the DPCLS commands, and
> what they can be used for. Testing and validation using autovalidator
> concept introduced, and command to set its priority is provided. The
> steps required to run the autovalidator as default lookup implementation
> are described. NEWS file is updated with things changed in userspace datapath.
> 
> 
> Thanks for reading, any questions please let me know.
> Regards, -Harry
> 
> 
> 
> Harry van Haaren (6):
>   dpif-netdev: implement subtable lookup validation.
>   dpif-netdev: add subtable lookup prio set command.
>   dpif-netdev: add subtable-lookup-prio-get command.
>   dpdk: enable cpu feature detection.
>   dpif-lookup: add avx512 gather implementation.
>   docs/dpdk/bridge: add datapath performance section.
> 
>  Documentation/topics/dpdk/bridge.rst   |  77 +++++++
>  NEWS                                   |   3 +
>  acinclude.m4                           |  16 ++
>  configure.ac                           |   4 +
>  lib/automake.mk                        |  24 +++
>  lib/dpdk-stub.c                        |   9 +
>  lib/dpdk.c                             |  30 +++
>  lib/dpdk.h                             |   2 +
>  lib/dpif-netdev-lookup-autovalidator.c | 110 ++++++++++
>  lib/dpif-netdev-lookup-avx512-gather.c | 265 +++++++++++++++++++++++++
>  lib/dpif-netdev-lookup-generic.c       |   9 +-
>  lib/dpif-netdev-lookup.c               | 124 ++++++++++++
>  lib/dpif-netdev-lookup.h               |  79 ++++++++
>  lib/dpif-netdev-private.h              |  15 --
>  lib/dpif-netdev.c                      | 161 ++++++++++++++-
>  m4/openvswitch.m4                      |  30 +++
>  16 files changed, 934 insertions(+), 24 deletions(-)
>  create mode 100644 lib/dpif-netdev-lookup-autovalidator.c
>  create mode 100644 lib/dpif-netdev-lookup-avx512-gather.c
>  create mode 100644 lib/dpif-netdev-lookup.c
>  create mode 100644 lib/dpif-netdev-lookup.h
> 

Hi.

That's an interesting feature.  Thanks for working on this!

I didn't look to the code closely yet.  Just one general note:
We're not using tabs anywhere for indentation in user-visible output, but
this patch-set does.  So this should be changed to a couple of spaces.

Best regards, Ilya Maximets.


More information about the dev mailing list