Re: [PATCH] sched,numa: document and fix numa_preferred_nid setting

Rik van Riel
2015-06-18T18:16:44Z

On 06/18/2015 12:12 PM, Ingo Molnar wrote:
> * Srikar Dronamraju <srikar@linux.vnet.ibm.com> wrote:
>
>>> if (p->numa_group) {
>>> if (env.best_cpu == -1)
>>> @@ -1513,7 +1520,7 @@ static int task_numa_migrate(struct task_struct *p)
>>> nid = env.dst_nid;
>>>
>>> if (node_isset(nid, p->numa_group->active_nodes))
>>> - sched_setnuma(p, env.dst_nid);
>>> + sched_setnuma(p, nid);
>>> }
>>>
>>> /* No better CPU than the current one was found. */
>>>
>>
>> Overall this patch does seem to produce better results. However numa02
>> gets affected -vely.
>
> Huh?
>
> numa02 is the more important benchmark of the two. 'numa01' is a conflicting
> workload that is a lot more sensitive to balancing details - while 'numa02' is a
> nicely partitioned workload that should converge as fast as possible.
>
> So if numa02 got worse then it's a bad change.

It slows down convergence.

However, for a benchmark that spends much of its time
actually doing something with the memory it accesses,
after things have converged, slowing down task movement
after convergence may be a good thing.

It will be good to get SPECjbb2005 numbers, both with
1 instance, 2 instances, and 4 instances on the same
4 node system.

If it turns out that single instance and two instance
workloads do not benefit from trying to slow down task
movement after the workloads have converged, we can
change the code above, and simply retry task migration
much, much more often after the workload has converged
onto several nodes.