2020-06-16 12:41:05

by Lichao Liu

[permalink] [raw]
Subject: [PATCH] sched/rt: Don't active rt throtting when no running cfs task

Active rt throtting will dequeue rt_rq from rq at least 50ms,
When there is no running cfs task, do we still active it?

Signed-off-by: Lichao Liu <[email protected]>
---
kernel/sched/rt.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index df11d88c9895..d6524347cea0 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -961,12 +961,13 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)

if (rt_rq->rt_time > runtime) {
struct rt_bandwidth *rt_b = sched_rt_bandwidth(rt_rq);
+ struct rq *rq = rq_of_rt_rq(rt_rq);

/*
* Don't actually throttle groups that have no runtime assigned
* but accrue some time due to boosting.
*/
- if (likely(rt_b->rt_runtime)) {
+ if (likely(rt_b->rt_runtime) && rq->cfs.nr_running > 0) {
rt_rq->rt_throttled = 1;
printk_deferred_once("sched: RT throttling activated\n");
} else {
--
2.25.1


2020-06-16 13:52:45

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] sched/rt: Don't active rt throtting when no running cfs task

On Tue, 16 Jun 2020 20:37:29 +0800
Lichao Liu <[email protected]> wrote:

> Active rt throtting will dequeue rt_rq from rq at least 50ms,
> When there is no running cfs task, do we still active it?
>

This is something I would like to have.

Peter, what's your thought on this?

-- Steve

> Signed-off-by: Lichao Liu <[email protected]>
> ---
> kernel/sched/rt.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
> index df11d88c9895..d6524347cea0 100644
> --- a/kernel/sched/rt.c
> +++ b/kernel/sched/rt.c
> @@ -961,12 +961,13 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)
>
> if (rt_rq->rt_time > runtime) {
> struct rt_bandwidth *rt_b = sched_rt_bandwidth(rt_rq);
> + struct rq *rq = rq_of_rt_rq(rt_rq);
>
> /*
> * Don't actually throttle groups that have no runtime assigned
> * but accrue some time due to boosting.
> */
> - if (likely(rt_b->rt_runtime)) {
> + if (likely(rt_b->rt_runtime) && rq->cfs.nr_running > 0) {
> rt_rq->rt_throttled = 1;
> printk_deferred_once("sched: RT throttling activated\n");
> } else {

2020-06-16 14:05:38

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] sched/rt: Don't active rt throtting when no running cfs task

On Tue, Jun 16, 2020 at 09:50:27AM -0400, Steven Rostedt wrote:
> On Tue, 16 Jun 2020 20:37:29 +0800
> Lichao Liu <[email protected]> wrote:
>
> > Active rt throtting will dequeue rt_rq from rq at least 50ms,
> > When there is no running cfs task, do we still active it?
> >
>
> This is something I would like to have.
>
> Peter, what's your thought on this?

I'd love to just delete all of this.. that said, I'm not sure this
change makes sense, because it doesn't deal sanely with the case where
the task will appear right after we did this.

The right thing to do is that fair deadline server thing.

2020-06-16 15:01:08

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] sched/rt: Don't active rt throtting when no running cfs task

On Tue, 16 Jun 2020 16:01:58 +0200
Peter Zijlstra <[email protected]> wrote:

> On Tue, Jun 16, 2020 at 09:50:27AM -0400, Steven Rostedt wrote:
> > On Tue, 16 Jun 2020 20:37:29 +0800
> > Lichao Liu <[email protected]> wrote:
> >
> > > Active rt throtting will dequeue rt_rq from rq at least 50ms,
> > > When there is no running cfs task, do we still active it?
> > >
> >
> > This is something I would like to have.
> >
> > Peter, what's your thought on this?
>
> I'd love to just delete all of this.. that said, I'm not sure this
> change makes sense, because it doesn't deal sanely with the case where
> the task will appear right after we did this.

I haven't looked closely at the surrounding code, but wouldn't it get
throttled in the next period? Do we care if a task has to wait a bit
longer?

>
> The right thing to do is that fair deadline server thing.

But we've been saying that for years now.

-- Steve

2020-06-16 17:10:24

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] sched/rt: Don't active rt throtting when no running cfs task

On Tue, Jun 16, 2020 at 10:59:00AM -0400, Steven Rostedt wrote:
> On Tue, 16 Jun 2020 16:01:58 +0200
> Peter Zijlstra <[email protected]> wrote:
>
> > On Tue, Jun 16, 2020 at 09:50:27AM -0400, Steven Rostedt wrote:
> > > On Tue, 16 Jun 2020 20:37:29 +0800
> > > Lichao Liu <[email protected]> wrote:
> > >
> > > > Active rt throtting will dequeue rt_rq from rq at least 50ms,
> > > > When there is no running cfs task, do we still active it?
> > > >
> > >
> > > This is something I would like to have.
> > >
> > > Peter, what's your thought on this?
> >
> > I'd love to just delete all of this.. that said, I'm not sure this
> > change makes sense, because it doesn't deal sanely with the case where
> > the task will appear right after we did this.
>
> I haven't looked closely at the surrounding code, but wouldn't it get
> throttled in the next period? Do we care if a task has to wait a bit
> longer?

Either way around, who cares?

> > The right thing to do is that fair deadline server thing.
>
> But we've been saying that for years now.

Hey, I even coded most of it, but clearly nobody cares about this enough
to finish it ...

2020-06-16 18:36:28

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] sched/rt: Don't active rt throtting when no running cfs task

On Tue, 16 Jun 2020 19:07:11 +0200
Peter Zijlstra <[email protected]> wrote:

> > But we've been saying that for years now.
>
> Hey, I even coded most of it, but clearly nobody cares about this enough
> to finish it ...

Or nobody who knows enough (and has enough time) to do so cares ;-)

-- Steve