diff mbox series

[ovs-dev,v13,10/12] dpif-netdev/dpcls: Specialize more subtable signatures.

Message ID 20210617161825.94741-11-cian.ferriter@intel.com
State Changes Requested
Headers show
Series DPIF Framework + Optimizations | expand

Commit Message

Ferriter, Cian June 17, 2021, 4:18 p.m. UTC
From: Harry van Haaren <harry.van.haaren@intel.com>

This commit adds more subtables to be specialized. The traffic
pattern here being matched is VXLAN traffic subtables, which commonly
have (5,3), (9,1) and (9,4) subtable fingerprints.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>

---

v8: Add NEWS entry.
---
 NEWS                                   | 2 ++
 lib/dpif-netdev-lookup-avx512-gather.c | 6 ++++++
 lib/dpif-netdev-lookup-generic.c       | 6 ++++++
 3 files changed, 14 insertions(+)

Comments

Flavio Leitner June 24, 2021, 3:37 a.m. UTC | #1
On Thu, Jun 17, 2021 at 05:18:23PM +0100, Cian Ferriter wrote:
> From: Harry van Haaren <harry.van.haaren@intel.com>
> 
> This commit adds more subtables to be specialized. The traffic
> pattern here being matched is VXLAN traffic subtables, which commonly
> have (5,3), (9,1) and (9,4) subtable fingerprints.
> 
> Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
> 
> ---

Acked-by: Flavio Leitner <fbl@sysclose.org>
diff mbox series

Patch

diff --git a/NEWS b/NEWS
index 523ff4b37..f03bfeb5d 100644
--- a/NEWS
+++ b/NEWS
@@ -16,6 +16,8 @@  Post-v2.15.0
      * Add a partial HWOL PMD statistic counting hits similar to existing
        EMC/SMC/DPCLS stats.
      * Enable AVX512 optimized DPCLS to search subtables with larger miniflows.
+     * Add more specialized DPCLS subtables to cover common rules, enhancing
+       the lookup performance.
    - ovs-ctl:
      * New option '--no-record-hostname' to disable hostname configuration
        in ovsdb on startup.
diff --git a/lib/dpif-netdev-lookup-avx512-gather.c b/lib/dpif-netdev-lookup-avx512-gather.c
index f1b320bb6..0b51ef9dc 100644
--- a/lib/dpif-netdev-lookup-avx512-gather.c
+++ b/lib/dpif-netdev-lookup-avx512-gather.c
@@ -314,6 +314,9 @@  avx512_lookup_impl(struct dpcls_subtable *subtable,
         return avx512_lookup_impl(subtable, keys_map, keys, rules, U0, U1);   \
     }                                                                         \
 
+DECLARE_OPTIMIZED_LOOKUP_FUNCTION(9, 4)
+DECLARE_OPTIMIZED_LOOKUP_FUNCTION(9, 1)
+DECLARE_OPTIMIZED_LOOKUP_FUNCTION(5, 3)
 DECLARE_OPTIMIZED_LOOKUP_FUNCTION(5, 1)
 DECLARE_OPTIMIZED_LOOKUP_FUNCTION(4, 1)
 DECLARE_OPTIMIZED_LOOKUP_FUNCTION(4, 0)
@@ -346,6 +349,9 @@  dpcls_subtable_avx512_gather_probe(uint32_t u0_bits, uint32_t u1_bits)
         return NULL;
     }
 
+    CHECK_LOOKUP_FUNCTION(9, 4);
+    CHECK_LOOKUP_FUNCTION(9, 1);
+    CHECK_LOOKUP_FUNCTION(5, 3);
     CHECK_LOOKUP_FUNCTION(5, 1);
     CHECK_LOOKUP_FUNCTION(4, 1);
     CHECK_LOOKUP_FUNCTION(4, 0);
diff --git a/lib/dpif-netdev-lookup-generic.c b/lib/dpif-netdev-lookup-generic.c
index e3b6be4b6..6c74ac3a1 100644
--- a/lib/dpif-netdev-lookup-generic.c
+++ b/lib/dpif-netdev-lookup-generic.c
@@ -282,6 +282,9 @@  dpcls_subtable_lookup_generic(struct dpcls_subtable *subtable,
         return lookup_generic_impl(subtable, keys_map, keys, rules, U0, U1);  \
     }                                                                         \
 
+DECLARE_OPTIMIZED_LOOKUP_FUNCTION(9, 4)
+DECLARE_OPTIMIZED_LOOKUP_FUNCTION(9, 1)
+DECLARE_OPTIMIZED_LOOKUP_FUNCTION(5, 3)
 DECLARE_OPTIMIZED_LOOKUP_FUNCTION(5, 1)
 DECLARE_OPTIMIZED_LOOKUP_FUNCTION(4, 1)
 DECLARE_OPTIMIZED_LOOKUP_FUNCTION(4, 0)
@@ -303,6 +306,9 @@  dpcls_subtable_generic_probe(uint32_t u0_bits, uint32_t u1_bits)
 {
     dpcls_subtable_lookup_func f = NULL;
 
+    CHECK_LOOKUP_FUNCTION(9, 4);
+    CHECK_LOOKUP_FUNCTION(9, 1);
+    CHECK_LOOKUP_FUNCTION(5, 3);
     CHECK_LOOKUP_FUNCTION(5, 1);
     CHECK_LOOKUP_FUNCTION(4, 1);
     CHECK_LOOKUP_FUNCTION(4, 0);