Re: [PATCH] cgroup/cpuset: Make cpuset.cpus.effective independent of cpuset.cpus

Petr Malat
2024-04-04T04:39:23Z

Hi,
On Tue, Apr 02, 2024 at 07:04:58PM +0200, Michal Koutn?? wrote:
> Hello.
>
> On Thu, Mar 21, 2024 at 10:39:45PM +0100, Petr Malat <oss@malat.biz> wrote:
> > Requiring cpuset.cpus.effective to be a subset of cpuset.cpus makes it
> > hard to use as one is forced to configure cpuset.cpus of current and all
> > ancestor cgroups, which requires a knowledge about all other units
> > sharing the same cgroup subtree.
>
> > Also, it doesn't allow using empty cpuset.cpus.
> ^^^^^^^^^^^^^^^^^
> _this_ is what cpuset has been missing IMO
>
> I think cpuset v2 should allow empty value in cpuset.cpus (not only
> default but also as a reset (to the default)) which would implicitely
> mean using whatever CPUs were passed from parent(s).
>
> Does that make sense to you too?
>
> Thus the patch(es) seems to need to be extended to handle a case when
> empty cpuset.cpus is assigned but no cpuset.cpus.exclusive are
> specified neither.

I don't see how this could be useful - consider hierarchy A/B, where A
configures the cpuset.cpus and B doesn't and inherits if from A.

If B is then made root partition it will use exactly the same CPUs as
A, thus these CPUs will not be available in A. Also, there can't be
a sibling of B, because there are no CPUs left for it. As B is then
the only working child of A, no resource distribution can happen on A.

So there is no point in creating B and one could use A directly.
Petr