When NUMA and CPU balancing were reconciled, there was an attempt to allow
a degree of imbalance but it caused more problems than it solved. Instead,
imbalance was only allowed with an almost idle NUMA domain. A lot of the
problems have since been addressed so it's time for a revisit. There is
also an issue with how fork is balanced across threads. It's mentioned
in this context as patch 2 and 3 should share similar behaviour in terms
of a nodes utilisation.

Patch 1 is just a cosmetic rename

Patch 2 allows a "floating" imbalance to exist so communicating tasks can
        remain on the same domain until utilisation is higher. It aims
        to balance compute availability with memory bandwidth.

Patch 3 is the interesting one. Currently fork can allow a NUMA node
        to be completely utilised as long as there are idle CPUs until
        the load balancer gets involved. This caused serious problems
        with a real workload that unfortunately I cannot share many
        details about but there is a proxy reproducer.

 kernel/sched/fair.c | 41 ++++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 17 deletions(-)

Reply via email to