Re: [PATCH] sched: Relax a restriction in sched_rt_can_attach()

Zefan Li
2015-05-05T03:54:31Z

On 2015/5/4 20:37, Peter Zijlstra wrote:
> On Mon, May 04, 2015 at 05:11:10PM +0800, Zefan Li wrote:
>
>> Some degree of flexibility is provided so that you may disable some controllers
>> in a subtree. For example:
>>
>> root ---> child1
>> (cpuset,memory,cpu) (cpuset,memory)
>> \
>> \-> child2
>> (cpu)
>
> Uhm, how does that work? Would a task their effective cgroup be the
> first parent that has a controller enabled?
>
> In particular, in your example, if T were part of child1, would its cpu
> controller be root?
>
>> I just realized we allow removing/adding controllers from/to cgroups
>> while there are tasks in them, which isn't safe unless we eliminate all
>> can_attach callbacks. We've done so for some cgroup subsystems, but
>> there are still a few of them...
>
> You can't remove can_attach(), we must be able to disallow joining a
> cgroup.
>
> If that results in you not being able to change the cgroup setup with
> tasks in, so be it -- that seems like a sane restriction anyhow.
>

I wasn't thinking about removing can_attach() before I noticed this issue.

But I was wondering if we can change the default value of cpu.rt_runtime_us
from 0 to -1? So by default the RT tasks can be attached to a newly-created
cgroup without users having to make any configuration, and those tasks are
confined by the parent cgroup, which is what we have with cfs bw control.
This require some changes to the code, but I guess it's do-able?