Re: [PATCH v4 4/6] cgroup/cpuset: Allow non-top parent partition root to distribute out all CPUs

From: Waiman Long
Date: Wed Aug 11 2021 - 14:18:33 EST


On 8/11/21 2:13 PM, Tejun Heo wrote:
On Tue, Aug 10, 2021 at 11:06:05PM -0400, Waiman Long wrote:
Currently, a parent partition root cannot distribute all its CPUs to
child partition roots with no CPUs left. However in some use cases,
a management application may want to create a parent partition root as
a management unit with no task associated with it and has all its CPUs
distributed to various child partition roots dynamically according to
their needs. Leaving a cpu in the parent partition root in such a case is
now a waste.

To accommodate such use cases, a parent partition root can now have
all its CPUs distributed to its child partition roots as long as:
1) it is not the top cpuset; and
2) there is no task directly associated with the parent.

Once an empty parent partition root is formed, no new task can be moved
into it.
The above are already enforced by cgroup2 core, right? No intermediate
cgroup with controllers enabled can have processes. From controllers' POV,
only leaves can have processes.

I don't think that is true. A task can reside anywhere in the cgroup hierarchy. I have encountered no problem moving tasks around.

Cheers,
Longman