Thread (33 messages) 33 messages, 10 authors, 2016-11-09

Re: [PATCH] sched/rt: RT_RUNTIME_GREED sched feature

From: Steven Rostedt <rostedt@goodmis.org>
Date: 2016-11-07 20:44:07
Also in: lkml

On Mon, 7 Nov 2016 21:33:02 +0100
Daniel Bristot de Oliveira [off-list ref] wrote:
On 11/07/2016 09:16 PM, Steven Rostedt wrote:
quoted
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.
This still looks like a bug, or not the expected result. Perhaps we
shouldn't share when tasks are pinned. It doesn't make sense. It's like
pinning two deadline tasks to the same CPU and giving them 100% of that
CPU and saying that it's really just 1/nr_cpus of usage, which would
have the same effect.

OK, it appears this is specific to RT_RUNTIME_SHARE which is what
causes this strange behavior, and even more rational to make this a
default option and perhaps even turn RT_RUNTIME_SHARE off by default.

-- Steve
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help