Currently, the scheduler is not able to directly move tasks between some NUMA nodes 2-hops apart on machines with mesh topology. This occurs because some NUMA nodes belongs to all sched groups. For more details, see the patch 2 commit log.
This bug was reported in the paper [1] as "The Scheduling Group Construction bug". This patchset constructs the sched groups from each CPU perspective. So each NUMA node can have different groups in the last NUMA sched domain level. SPECjbb2005 results show up to 63% performance improvement and a huge standard deviation drop on a machine with 8 NUMA nodes and mesh topology. Patch 1 - just prepare the code for patch 2 Patch 2 - change the sched groups construction Patch 3 - fix issue with different groups starting with the same CPU [1] http://www.ece.ubc.ca/~sasha/papers/eurosys16-final29.pdf Regards, Lauro Lauro Ramos Venancio (3): sched/topology: Refactor function build_overlap_sched_groups() sched/topology: fix sched groups on NUMA machines with mesh topology sched/topology: Different sched groups must not have the same balance cpu kernel/sched/topology.c | 165 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 117 insertions(+), 48 deletions(-) -- 1.8.3.1