On Mon, Sep 07, 2020 at 07:27:08PM +1200, Barry Song wrote: > Something is wrong. In find_busiest_group(), we are checking if src has > higher load, however, in task_numa_find_cpu(), we are checking if dst > will have higher load after balancing. It seems it is not sensible to > check src. > It maybe cause wrong imbalance value, for example, if > dst_running = env->dst_stats.nr_running + 1 results in 3 or above, and > src_running = env->src_stats.nr_running - 1 results in 1; > The current code is thinking imbalance as 0 since src_running is smaller > than 2. > This is inconsistent with load balancer. >
It checks the conditions if the move was to happen. Have you evaluated this for a NUMA balancing load and confirmed it a) balances properly and b) does not increase the scan rate trying to "fix" the problem? -- Mel Gorman SUSE Labs