On 12/1/21 09:13, Michal Koutný wrote:
On Tue, Nov 30, 2021 at 10:56:34PM -0500, Waiman Long longman@redhat.com 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