Re: [RFC/POC]: Make cpuset.cpus.effective independent of cpuset.cpus

Waiman Long
2024-03-22T01:41:52Z

On 3/21/24 17:33, Petr Malat wrote:
> Hi!
> I have tried to use the new remote cgroup feature and I find the
> interface unfriendly - requiring cpuset.cpus.exclusive to be a subset
> of cpuset.cpus requires the program, which wants to isolate a CPU for
> some RT activity, to know what CPUs all ancestor cgroups want to use.
>
> For example consider cgroup hierarchy c1/c2/c3 where my program is
> running and wants to isolate CPU N, so
> - It creates new c1/c2/c3/rt cgroup
> - It adds N to cpuset.cpus.exclusive of rt, c3 and c2 cgroup
> (cpuset.cpus.exclusive |= N)
> - Now it should do the same with cpuset.cpus, but that's not possible
> if ancestors cpuset.cpus is empty, which is common configuration and
> there is no good way how to set it in that case.
>
> My proposal is to
> - Not require cpuset.cpus.exclusive to be a subset of cpuset.cpus
> - Create remote cgroup if cpuset.cpus is empty and local cgroup if it's
> set, to give the user explicit control on what cgroup is created.

I think we can make cpuset.cpus.exclusive independent of cpuset.cpus as
a separate hierarchy to make creation of remote partitions easier. I
need some more time to think through it. I don't think your test patch
is enough for making this change. BTW, you confuse cpuset.cpus.exclusive
with cpuset.cpus.effective which are two completely different things.

Cheers,
Longman