Re: [PATCH v7 5/6] cgroup/cpuset: Update description of cpuset.cpus.partition in cgroup-v2.rst

From: Waiman Long
Date: Fri Aug 27 2021 - 17:19:43 EST


On 8/27/21 12:00 AM, Tejun Heo wrote:
Hello,

On Thu, Aug 26, 2021 at 11:01:30PM -0400, Waiman Long wrote:
What I am doing here is setting a high bar for transitioning from member to
either "root" or "isolated". Once it becomes a partition, there are multiple
ways that can make it invalid. I am fine with that. However, I am not sure
it is a good idea to allow users to echo "root" to cpuset.cpus.partition
anywhere in the cgroup hierarchy and require them to read it back to see if
it succeed.
The problem is that the "high" bar is rather arbitrary. It might feel like a
good idea to some but not to others. There are no clear technical reasons or
principles for rules to be set this particular way.

All the checking are done with cpuset_rwsem held. So there shouldn't be any
racing. Of course, a hotplug can immediately follow and make the partition
invalid.
Imagine a system which dynamically on/offlines its cpus based on load or
whatever and also configures partitions for cases where the needed cpus are
online. If the partitions are set up while the cpus are online, it'd work as
expected - partitions are in effect when the system can support them and
ignored otherwise. However, if the partition configuration is attempted
while the cpus happen to be offline, the configuration will fail, and there
is no guaranteed way to make that configuration stick short of disabling
hotplug operations. This is a pretty jarring brekage happening exactly
because the behavior is an inconsistent amalgam.

It's usually not a good sign if interface restrictions can be added or
removed because how one feels without clear functional reasons and often
indicates that there's something broken, which seems to be the case here
too.

Well, that is a valid point. The cpus may have been offlined when a partition is being created. I can certainly relent on this check in forming a partition. IOW, cpus_allowed can contain some or all offline cpus and a valid (some are online) or invalid (all are offline) partition can be formed. I can also allow an invalid child partition to be formed with an invalid parent partition. However, the cpu exclusivity rules will still apply.

Other than that, do you envision any other circumstances where we should allow an invalid partition to be formed?

Cheers,
Longman