mbox series

[ovs-dev,v11,00/10] Actions Infrastructure + Optimizations

Message ID 20220714175158.3709150-1-emma.finn@intel.com
Headers show
Series Actions Infrastructure + Optimizations | expand

Message

Emma Finn July 14, 2022, 5:51 p.m. UTC
This patchset introduces actions infrastructure changes which allows
the user to choose between different action implementations based on
CPU ISA by using different commands.  The infrastructure also
provides a way to check the correctness of the ISA optimized action
version against the scalar version.
This series also introduces optimized versions of the following
actions:
 - push_vlan
 - pop_vlan
 - set_masked eth
 - set_masked ipv4
Below is a table indicating some relative performance benefits for
these actions.
+-----------------------------------------------+-------------------+-----------------+
| Actions                                       | Scalar with series|AVX with series |
+-----------------------------------------------+-------------------+-----------------+
| mod_dl_dst                                    | 1.01x             |1.13x           |
+-----------------------------------------------+-------------------+-----------------+
| push_vlan                                     | 1.01x             |1.10x           |
+-----------------------------------------------+-------------------+-----------------+
| strip_vlan                                    | 1.01x             |1.11x           |
+-----------------------------------------------+-------------------+-----------------+
| mod_ipv4 1 x field                            | 1.01x             |1.02x           |
+-----------------------------------------------+-------------------+-----------------+
| mod_ipv4 4 x fields                           | 1.01x             |1.21x           |
+-----------------------------------------------+-------------------+-----------------+
| strip_vlan + mod_dl_dst + mod_ipv4 4 x fields | 1.01x             |1.36x           |
+-----------------------------------------------+-------------------+-----------------+

---
v11:
- Moved unit test to opd.at
- Refactored avx probe/init
- renamed variables for avx implementation of ipv4 action
- added atomic read and store of active impl function pointer
---
v10;
- Fixed CI build issue on OSX around AVX512 linking (jenkins CI)
- Moved docs and reworded sections (thanks Ilya for feedback)
- Reworked one instance of <= OVS_ATTR_MAX back to original form(Eelco)
---
v9:
- Moved avx512 probe and init functions to later patch.
- Dependency on userspace datapath has been resolved.
- Fixed up comments from Sunil as posted on v8
- Note: Harry is sending this patchset, but it is Emma's rework,
   except for rebasing to lastest git, and very minor fixups.
---
v8
- First patch changing unit tests has been removed from series.
- AVX checksum implementation has been reworked.
---
v7:
- Fix review comments from Eelco.
---
v6:
- Rebase to master
- Add ISA implementation of set_masked eth and ipv4 actions
- Fix incorrect checksums in input packets for ofproto-dpif unit
tests
---
v5:
- Rebase to master
- Minor change to variable names
- Added Tags from Harry.
---
v4:
- Rebase to master
- Add ISA implementation of push_vlan action
---
v3:
- Refactored to fix unit test failures
- Removed some sign-off on commits
---
v2:
- Fix the CI build issues
---


Emma Finn (8):
  odp-execute: Add function pointers to odp-execute for different action
    implementations.
  odp-execute: Add function pointer for pop_vlan action.
  odp-execute: Add auto validation function for actions.
  odp-execute: Add command to switch action implementation.
  odp-execute: Add ISA implementation of actions.
  odp-execute: Add ISA implementation of push_vlan action.
  odp-execute: Add ISA implementation of set_masked ETH
  odp-execute: Add ISA implementation of set_masked IPv4 action

Harry van Haaren (1):
  odp-execute: Add ISA implementation of pop_vlan action.

Kumar Amber (1):
  acinclude: Add configure option to enable actions autovalidator at
    build time.

 Documentation/topics/dpdk/bridge.rst |  30 ++
 Documentation/topics/testing.rst     |  24 +-
 NEWS                                 |   7 +
 acinclude.m4                         |  21 ++
 configure.ac                         |   1 +
 lib/automake.mk                      |   7 +
 lib/cpu.c                            |   1 +
 lib/cpu.h                            |   1 +
 lib/dp-packet.c                      |  24 ++
 lib/dp-packet.h                      |   4 +
 lib/odp-execute-avx512.c             | 546 +++++++++++++++++++++++++++
 lib/odp-execute-private.c            | 267 +++++++++++++
 lib/odp-execute-private.h            | 102 +++++
 lib/odp-execute-unixctl.man          |  10 +
 lib/odp-execute.c                    | 208 ++++++++--
 lib/odp-execute.h                    |  10 +
 m4/openvswitch.m4                    |  29 ++
 tests/odp.at                         |  39 ++
 tests/ofproto-macros.at              |   1 +
 vswitchd/bridge.c                    |   3 +
 vswitchd/ovs-vswitchd.8.in           |   1 +
 21 files changed, 1290 insertions(+), 46 deletions(-)
 create mode 100644 lib/odp-execute-avx512.c
 create mode 100644 lib/odp-execute-private.c
 create mode 100644 lib/odp-execute-private.h
 create mode 100644 lib/odp-execute-unixctl.man