Messages in this thread | | | Subject | Re: [PATCH] sched/rt: RT_RUNTIME_GREED sched feature | From | Daniel Bristot de Oliveira <> | Date | Mon, 7 Nov 2016 21:33:02 +0100 |
| |
On 11/07/2016 09:16 PM, Steven Rostedt wrote: > I'm confused? Are you saying that RR tasks don't get throttled in the > current code? That sounds like a bug to me.
If the RT_RUNTIME_SHARING is enabled, the CPU in which the RR tasks are running (and pinned) will borrow RT runtime from another CPU, allowing the RR tasks to run forever. For example:
[root@kiron debug]# cat /proc/sched_debug | grep rt_runtime .rt_runtime : 950.000000 .rt_runtime : 950.000000 .rt_runtime : 950.000000 .rt_runtime : 950.000000 [root@kiron debug]# echo RT_RUNTIME_SHARE > sched_features [root@kiron debug]# taskset -c 2 chrt -r 5 /home/bristot/f & [1] 23908 [root@kiron debug]# taskset -c 2 chrt -r 5 /home/bristot/f & [2] 23915 [root@kiron debug]# cat /proc/sched_debug | grep rt_runtime .rt_runtime : 900.000000 .rt_runtime : 950.000000 .rt_runtime : 1000.000000 .rt_runtime : 950.000000
You see? the rt_runtime of the CPU 2 was borrowed time from CPU 0.
It is not a BUG but a feature (no jokes haha). With RT_RUNTIME_SHARE, the rt_runtime is such a global runtime. It works fine for tasks that can migrate... but that is not the case for per-cpu kworkers.
-- Daniel
| |