• Juri Lelli's avatar
    sched/core: Fix CPU controller for !RT_GROUP_SCHED · a07db5c0
    Juri Lelli authored
    On !CONFIG_RT_GROUP_SCHED configurations it is currently not possible to
    move RT tasks between cgroups to which CPU controller has been attached;
    but it is oddly possible to first move tasks around and then make them
    RT (setschedule to FIFO/RR).
    
    E.g.:
    
      # mkdir /sys/fs/cgroup/cpu,cpuacct/group1
      # chrt -fp 10 $$
      # echo $$ > /sys/fs/cgroup/cpu,cpuacct/group1/tasks
      bash: echo: write error: Invalid argument
      # chrt -op 0 $$
      # echo $$ > /sys/fs/cgroup/cpu,cpuacct/group1/tasks
      # chrt -fp 10 $$
      # cat /sys/fs/cgroup/cpu,cpuacct/group1/tasks
      2345
      2598
      # chrt -p 2345
      pid 2345's current scheduling policy: SCHED_FIFO
      pid 2345's current scheduling priority: 10
    
    Also, as Michal noted, it is currently not possible to enable CPU
    controller on unified hierarchy with !CONFIG_RT_GROUP_SCHED (if there
    are any kernel RT threads in root cgroup, they can't be migrated to the
    newly created CPU controller's root in cgroup_update_dfl_csses()).
    
    Existing code comes with a comment saying the "we don't support RT-tasks
    being in separate groups". Such comment is however stale and belongs to
    pre-RT_GROUP_SCHED times. Also, it doesn't make much sense for
    !RT_GROUP_ SCHED configurations, since checks related to RT bandwidth
    are not performed at all in these cases.
    
    Make moving RT tasks between CPU controller groups viable by removing
    special case check for RT (and DEADLINE) tasks.
    Signed-off-by: default avatarJuri Lelli <juri.lelli@redhat.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarMichal Koutný <mkoutny@suse.com>
    Reviewed-by: default avatarDaniel Bristot de Oliveira <bristot@redhat.com>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: lizefan@huawei.com
    Cc: longman@redhat.com
    Cc: luca.abeni@santannapisa.it
    Cc: rostedt@goodmis.org
    Link: https://lkml.kernel.org/r/20190719063455.27328-1-juri.lelli@redhat.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    a07db5c0
core.c 188 KB