mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
dpif-netdev: Fix non-local numa selection for more than two numas.
This issue only occurs when there are more than 2 numa nodes
and no local numa PMD thread cores available for an interface
rxq.
In the event of no PMD thread cores available on the local numa
for an rxq to be assigned to, a PMD thread core from a non-local
numa is selected.
If there are more than one non-local numas with PMD thread cores
they are RR through and checked if they have non-isolated PMD thread
cores.
When successfully finding a non-local numa with available PMD
thread cores 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 PMD thread cores, so the numa RR state is kept for subsequent
rxqs.
Fixes: f577c2d046
("dpif-netdev: Rework rxq scheduling code.")
Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Acked-by: Mike Pattrick <mkp@redhat.com>
Acked-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
committed by
Ilya Maximets
parent
4b5c3b66aa
commit
da6ce41d80
@@ -5999,10 +5999,10 @@ sched_numa_list_schedule(struct sched_numa_list *numa_list,
|
||||
/* Find any numa with available PMDs. */
|
||||
for (int j = 0; j < n_numa; j++) {
|
||||
numa = sched_numa_list_next(numa_list, last_cross_numa);
|
||||
last_cross_numa = numa;
|
||||
if (sched_numa_noniso_pmd_count(numa)) {
|
||||
break;
|
||||
}
|
||||
last_cross_numa = numa;
|
||||
numa = NULL;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user