On 12/1/21 09:13, Michal Koutný wrote:
On Tue, Nov 30, 2021 at 10:56:34PM -0500, Waiman Long <longman@xxxxxxxxxx> wrote:
A valid parent partition may distribute out all its CPUs to
its child partitions as long as it is not the root cgroup and
there is no task associated with it.
A valid parent partition which isn't root never has tasks in them to begin
with.
I believe there is some corner cases where it is possible to put task in an
intermediate partition. That is why I put down this statement.
Just mind the threads -- cpuset controller is threaded and having tasks
in inner cgroup nodes is a real scenario. I wouldn't consider it a
corner case.
[ Actually, the paragraph could IMO be simplified:
Right, I shouldn't say corner cases. Having task in an intermediate
partition is possible depending on event sequence. I am aware that there
are code in the cpuset code to prevent that, but it didn't block all cases.
A valid parent partition may distribute out all its CPUs to
its child partitions as long as there is no task associated with it.
Assuming there's always at least one kernel thread in the root cgroup
that can't be migrated anyway.]
I am aware of that. That is why I said root cgroup must have at least
one cpu in its "cpuset.cpus.effective".
Cheers,
Longman