mbox series

[ovs-dev,v4,0/7] DPCLS Subtable ISA Optimization

Message ID 20200618165354.87787-1-harry.van.haaren@intel.com
Headers show
Series DPCLS Subtable ISA Optimization | expand

Message

Harry van Haaren June 18, 2020, 4:53 p.m. UTC
v4 work done:
- Fixed shared object build link errors (--enable-shared flag)
- Enabled autovalidator to run with unit-tests (--enable-autovalidator flag)
- Address other feedback on v3
- Improve binutils AVX512 issue detection (in line with proposed DPDK method)

v5 Plans for work:
- Add NEWS section
- Integrate patches 5 and 6 into a single commit
- Address (any remaining?) feedback on v4

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/7:
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 / 7:
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/7:
Enable CPU ISA detection at runtime, providing information for future
ISA optimized functions.

Patch 5/7:
Actual AVX-512 implementation for DPCLS subtable search. This is the
actual SIMD vector code, which performs DPCLS miniflow iteration in
parallel.

Patch 6/7:
Binutils AVX512 issue detection changes. These will be integrated into
the commit that introduces AVX512 (5/7) in the next version. It is kept
apart here for ease of review.

Patch 7/7:
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.


Thanks for reading, any questions please let me know.
Regards, -Harry



Harry van Haaren (7):
  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.
  configure/m4: binutils avx512 configure time check.
  docs/dpdk/bridge: add datapath performance section.

 Documentation/topics/dpdk/bridge.rst   |  77 +++++++
 acinclude.m4                           |  16 ++
 configure.ac                           |   4 +
 lib/automake.mk                        |  20 ++
 lib/dpdk-stub.c                        |  13 ++
 lib/dpdk.c                             |  27 +++
 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               | 123 ++++++++++++
 lib/dpif-netdev-lookup.h               |  79 ++++++++
 lib/dpif-netdev-private.h              |  15 --
 lib/dpif-netdev.c                      | 161 ++++++++++++++-
 m4/openvswitch.m4                      |  24 +++
 15 files changed, 921 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

Comments

William Tu June 27, 2020, 6:26 p.m. UTC | #1
On Thu, Jun 18, 2020 at 9:53 AM Harry van Haaren
<harry.van.haaren@intel.com> wrote:
>
> v4 work done:
> - Fixed shared object build link errors (--enable-shared flag)
> - Enabled autovalidator to run with unit-tests (--enable-autovalidator flag)
> - Address other feedback on v3
> - Improve binutils AVX512 issue detection (in line with proposed DPDK method)
>
I tested v4 on travis and there are a couple of errors.
Please take a look here:
https://travis-ci.org/github/williamtu/ovs-travis/builds/702701139

other comments are in each patch.

> v5 Plans for work:
> - Add NEWS section
> - Integrate patches 5 and 6 into a single commit
> - Address (any remaining?) feedback on v4

Thanks, look forward to v5.
William
Harry van Haaren June 30, 2020, 10 a.m. UTC | #2
> -----Original Message-----
> From: William Tu <u9012063@gmail.com>
> Sent: Saturday, June 27, 2020 7:27 PM
> To: Van Haaren, Harry <harry.van.haaren@intel.com>
> Cc: ovs-dev <ovs-dev@openvswitch.org>; Stokes, Ian <ian.stokes@intel.com>; Ilya
> Maximets <i.maximets@ovn.org>; Federico Iezzi <fiezzi@redhat.com>
> Subject: Re: [PATCH v4 0/7] DPCLS Subtable ISA Optimization
> 
> On Thu, Jun 18, 2020 at 9:53 AM Harry van Haaren
> <harry.van.haaren@intel.com> wrote:
> >
> > v4 work done:
> > - Fixed shared object build link errors (--enable-shared flag)
> > - Enabled autovalidator to run with unit-tests (--enable-autovalidator flag)
> > - Address other feedback on v3
> > - Improve binutils AVX512 issue detection (in line with proposed DPDK method)
> >
> I tested v4 on travis and there are a couple of errors.
> Please take a look here:
> https://travis-ci.org/github/williamtu/ovs-travis/builds/702701139

Had a look - it seems to be a simple compile issue based on the avx512 gather()
instruction parameter checking, will include in v5, exact error here:
https://travis-ci.org/github/williamtu/ovs-travis/jobs/702701140#L1476

> other comments are in each patch.

Replies per thread too.

> > v5 Plans for work:
> > - Add NEWS section
> > - Integrate patches 5 and 6 into a single commit
> > - Address (any remaining?) feedback on v4
> 
> Thanks, look forward to v5.
> William

Thanks!