On 11/03/2022 13:23, Kevin Traynor wrote:
Ensure that if there are no local numa pmd cores
available that pmd cores from all other non-local
numas will be used.


NACK this patch. The numas are held in a hash map so order is not guaranteed but I mixed up what the pmd-rxq-show output was sorted on, so the test is potentially unreliable (even though it passed for me).

As rest of series has acked fixes, if there are no more comments on them, I suggest move fwd with them and I'll send a better UT for this later.

Signed-off-by: Kevin Traynor <ktray...@redhat.com>
---
  tests/pmd.at | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++-
  1 file changed, 90 insertions(+), 1 deletion(-)

diff --git a/tests/pmd.at b/tests/pmd.at
index a2f9d34a2..91af5bbd6 100644
--- a/tests/pmd.at
+++ b/tests/pmd.at
@@ -200,5 +200,5 @@ OVS_VSWITCHD_STOP
  AT_CLEANUP
-AT_SETUP([PMD - pmd-cpu-mask - NUMA])
+AT_SETUP([PMD - pmd-cpu-mask - dual NUMA])
  OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy-pmd 
options:n_rxq=8 options:numa_id=1 -- set Open_vSwitch . 
other_config:pmd-cpu-mask=1],
                     [], [], [--dummy-numa 1,1,0,0])
@@ -360,4 +360,93 @@ OVS_VSWITCHD_STOP
  AT_CLEANUP
+AT_SETUP([PMD - pmd-cpu-mask - multi NUMA])
+OVS_VSWITCHD_START([add-port br0 p0 \
+                    -- set Interface p0 type=dummy-pmd options:n_rxq=4 \
+                    -- set Interface p0 options:numa_id=0 \
+                    -- set Open_vSwitch . other_config:pmd-cpu-mask=0xf \
+                    -- set open_vswitch . other_config:pmd-rxq-assign=cycles],
+                   [], [], [--dummy-numa 1,2,1,2])
+
+TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1))
+AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=group])
+
+OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Performing pmd to rx queue 
assignment using group algorithm"])
+OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "There's no available 
(non-isolated) pmd thread on numa node 0."])
+
+# check pmds from both non-local numas are used
+AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], 
[0], [dnl
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  0 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  1 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  2 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  3 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+])
+
+TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1))
+AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=cycles])
+
+OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Performing pmd to rx queue 
assignment using cycles algorithm"])
+OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "There's no available 
(non-isolated) pmd thread on numa node 0."])
+
+# check pmds from both non-local numas are used
+AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], 
[0], [dnl
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  0 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  1 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  2 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  3 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+])
+
+TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1))
+AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=roundrobin])
+
+OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Performing pmd to rx queue 
assignment using roundrobin algorithm"])
+OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "There's no available 
(non-isolated) pmd thread on numa node 0."])
+
+# check pmds from both non-local numas are used
+AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], 
[0], [dnl
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  0 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  1 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  2 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+pmd thread numa_id <cleared> core_id <cleared>:
+  isolated : false
+  port: p0                queue-id:  3 (enabled)   pmd usage: NOT AVAIL
+  overhead: NOT AVAIL
+])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP
+
  AT_SETUP([PMD - stats])
  OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 ofport_request=7 
type=dummy-pmd options:n_rxq=4],

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to