In the event of no pmd cores available on the local numa for
an rxq to be assigned to, a pmd core from a non-local numa is
selected.

If there are more than one non-local numas with pmd cores they
are RR through and checked if they have non-isolated pmds.

When successfully finding a non-local numa with available pmds
for an rxq, that numa was not being stored. It meant if a similar
situation occurred for a subsequent rxq, the same numa would be
selected again.

Store the last numa used when successfully finding a non-local numa
with available pmds, so the numa RR state is kept for subsequent rxqs.

Fixes: f577c2d046b2 ("dpif-netdev: Rework rxq scheduling code.")

Signed-off-by: Kevin Traynor <ktray...@redhat.com>
Acked-by: Mike Pattrick <m...@redhat.com>
---
 lib/dpif-netdev.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 8a3047439..9ae488d6e 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -6001,8 +6001,8 @@ sched_numa_list_schedule(struct sched_numa_list 
*numa_list,
             for (int j = 0; j < n_numa; j++) {
                 numa = sched_numa_list_next(numa_list, last_cross_numa);
-                if (sched_numa_noniso_pmd_count(numa)) {
-                    break;
-                }
                 last_cross_numa = numa;
+                if (sched_numa_noniso_pmd_count(numa)) {
+                    break;
+                }
                 numa = NULL;
             }
-- 
2.34.1

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

Reply via email to