Re: [PATCH] cgroup/cpuset: Optimize update_tasks_nodemask()

From: Waiman Long
Date: Wed Nov 23 2022 - 14:07:14 EST



On 11/23/22 13:54, Tejun Heo wrote:
On Wed, Nov 23, 2022 at 01:48:46PM -0500, Waiman Long wrote:
I think it is an issue anyway if different threads of a process are in
different cpusets with different node mask. It is not a configuration that
should be used at all.
Anything memory related is in the same boat and people still use them
reaching whatever end results they reach. Given the whole thing is pretty
ill-defined, I don't wanna change the behavior now.
I am just saying that this is not a good config. I don't have any intention to change the existing behavior at all.

This patch makes update_tasks_nodemask() somewhat similar to cpuset_attach()
where all tasks are iterated to update the node mask but only the task
leaders are required to update the mm. For a non-group leader task, maybe we
can check if the group leader is in the same cpuset. If so, we can skip the
mm update. Do we need similar change in cpuset_attach()?
The leader isn't special tho. We just wanna avoid visiting the same mm more
than once, right?

Right, the group leader is just a marker to make it easier to avoid duplicating the work for the same mm. If the group leader happens to be in another cpuset, it will suffer some performance consequence.

Cheers,
Longman