<div dir="ltr"><pre class="gmail-code-java">When I try to move a RT task to a different cgroup(shown below) I get a EINVAL error.<br></pre><pre class="gmail-code-java">However I can change the cgroup first and then change the sched policy.<br></pre><pre class="gmail-code-java">After looking into kernel source code(<i>I dont use CONFIG_RT_GROUP_SCHED config</i>) I was able to extract this piece of logic</pre><pre class="gmail-code-java"><br><br><b>chrt -p 777</b>
pid 777&#39;s current scheduling policy: SCHED_OTHER
pid 777&#39;s current scheduling priority: 0

<b>cat /proc/777/cgroup</b>
2:cpu,cpuacct:/system.slice
1:name=systemd:/system.slice/d.service
<br><b>chrt -f -p 50 777</b>

root@mgu-high:~# chrt -p 777
pid 777&#39;s current scheduling policy: SCHED_FIFO
pid 777&#39;s current scheduling priority: 50

<b>/bin/echo 777&gt;/sys/fs/cgroup/cpu,cpuacct/interaction.slice/tasks</b>
<span style="background-color:rgb(224,102,102)"><b>echo: write error: Invalid argument</b></span>
<br><br><br></pre><pre class="gmail-code-java">After browsing kernel sources I was able to find out the reason of failure.<br></pre><pre class="gmail-code-java"><br>static int cpu_cgroup_can_attach(struct cgroup_subsys_state *css,<br>                                 struct cgroup_taskset *tset)<br>{<br>        struct task_struct *task;<br><br>                <br>        cgroup_taskset_for_each(task, tset) {<br>#ifdef CONFIG_RT_GROUP_SCHED<br>                if (!sched_rt_can_attach(css_tg(css), task))<br>                        return -EINVAL;<br>#else<br>                <b>/* We don&#39;t support RT-tasks being in separate groups */<br>                if (task-&gt;sched_class != &amp;fair_sched_class)<br>                {<br>                        return -EINVAL;<br>                }</b><br>#endif<br>        }<br>        return 0;<br>}<br><br></pre><pre class="gmail-code-java">My question is why is this check required? Also, changing cgroups first and then the policy of FIFO works without issue(?) for the task. <br><br></pre><pre class="gmail-code-java">Thanks<br><br><br></pre><pre class="gmail-code-java">br<br></pre><pre class="gmail-code-java">rb<br></pre></div>