Why is this not the case?
Remember that to limit algorithmic complexity, the load
balancing algorithm uses a hierarchical design. When a core
attempts to steal work from another node, or, in other words,
from another scheduling group, it does not examine the load
of every core in that group, it only looks at the group’s
average load (line 11 of Algorithm 1). If the average load
of the victim scheduling group is greater than that of its
own, it will attempt to steal from that group; otherwise it
will not. This is the exact reason why in our situation the
underloaded cores fail to steal from the overloaded cores
on other nodes. They observe that the average load of the
victim node’s scheduling group is not any greater than their
own. The core trying to steal work runs on the same node
as the high-load R thread; that thread skews up the average
load for that node and conceals the fact that some cores are
actually idle. At the same time, cores on the victim node,
with roughly the same average load, have lots of waiting
threads.
[^] # However, they must be able to steal from the more loaded cores on other nodes.
Posté par mh-cbon . En réponse au journal Linux: une décennie de coeurs gaspillés. Évalué à -9.