From: luca abeni <luca.abeni@santannapisa.it>
To: Juri Lelli <juri.lelli@redhat.com>
Cc: peterz@infradead.org, mingo@redhat.com, rostedt@goodmis.org,
tglx@linutronix.de, linux-kernel@vger.kernel.org,
tommaso.cucinotta@santannapisa.it, alessio.balsini@gmail.com,
bristot@redhat.com, dietmar.eggemann@arm.com,
linux-rt-users@vger.kernel.org, mtosatti@redhat.com,
williams@redhat.com, valentin.schneider@arm.com
Subject: Re: [RFC PATCH v2 0/6] SCHED_DEADLINE server infrastructure
Date: Fri, 7 Aug 2020 15:16:32 +0200 [thread overview]
Message-ID: <20200807151632.36dc6200@nowhere> (raw)
In-Reply-To: <20200807095051.385985-1-juri.lelli@redhat.com>
Hi Juri,
thanks for sharing the v2 patchset!
In the next days I'll have a look at it, and try some tests...
In the meanwhile, I have some questions/comments after a first quick
look.
If I understand well, the patchset does not apply deadline servers to
FIFO and RR tasks, right? How does this patchset interact with RT
throttling?
If I understand well, patch 6/6 does something like "use deadline
servers for SCHED_OTHER only if FIFO/RR tasks risk to starve
SCHED_OTHER tasks"... Right? I understand this is because you do not
want to delay RT tasks if they are not starving other tasks. But then,
maybe what you want is not deadline-based scheduling. Maybe a
reservation-based scheduler based on fixed priorities is what you want?
(with SCHED_DEADLINE, you could provide exact performance guarantees to
SCHED_OTHER tasks, but I suspect patch 6/6 breaks these guarantees?)
Thanks,
Luca
On Fri, 7 Aug 2020 11:50:45 +0200
Juri Lelli <juri.lelli@redhat.com> wrote:
> Hi,
>
> This is RFC v2 of Peter's SCHED_DEADLINE server infrastructure
> implementation [1].
>
> SCHED_DEADLINE servers can help fixing starvation issues of low
> priority tasks (e.g., SCHED_OTHER) when higher priority tasks
> monopolize CPU cycles. Today we have RT Throttling; DEADLINE servers
> should be able to replace and improve that.
>
> I rebased Peter's patches (adding changelogs where needed) on
> tip/sched/core as of today and incorporated fixes to issues discussed
> during RFC v1. Current set seems to even boot on real HW! :-)
>
> While playing with RFC v1 set (and discussing it further offline with
> Daniel) it has emerged the need to slightly change the behavior. Patch
> 6/6 is a (cumbersome?) attempt to show what's probably needed.
> The problem with "original" implementation is that FIFO tasks might
> suffer preemption from NORMAL even when spare CPU cycles are
> available. In fact, fair deadline server is enqueued right away when
> NORMAL tasks wake up and they are first scheduled by the server, thus
> potentially preempting a well behaving FIFO task. This is of course
> not ideal. So, in patch 6/6 I propose to use some kind of starvation
> monitor/ watchdog that delays enqueuing of deadline servers to the
> point when fair tasks might start to actually suffer from starvation
> (just randomly picked HZ/2 for now). One problem I already see with
> the current implementation is that it adds overhead to fair paths, so
> I'm pretty sure there are better ways to implement the idea (e.g.,
> Daniel already suggested using a starvation monitor kthread sort of
> thing).
>
> Receiving comments and suggestions is the sole purpose of this posting
> at this stage. Hopefully we can further discuss the idea at Plumbers
> in a few weeks. So, please don't focus too much into actual
> implementation (which I plan to revise anyway after I'm back from pto
> :), but try to see if this might actually fly. The feature seems to
> be very much needed.
>
> Thanks!
>
> Juri
>
> 1 -
> https://lore.kernel.org/lkml/20190726145409.947503076@infradead.org/
>
> Juri Lelli (1):
> sched/fair: Implement starvation monitor
>
> Peter Zijlstra (5):
> sched: Unify runtime accounting across classes
> sched/deadline: Collect sched_dl_entity initialization
> sched/deadline: Move bandwidth accounting into
> {en,de}queue_dl_entity sched/deadline: Introduce deadline servers
> sched/fair: Add trivial fair server
>
> include/linux/sched.h | 28 ++-
> kernel/sched/core.c | 23 +-
> kernel/sched/deadline.c | 483
> ++++++++++++++++++++++++--------------- kernel/sched/fair.c |
> 136 ++++++++++- kernel/sched/rt.c | 17 +-
> kernel/sched/sched.h | 50 +++-
> kernel/sched/stop_task.c | 16 +-
> 7 files changed, 522 insertions(+), 231 deletions(-)
>
next prev parent reply other threads:[~2020-08-07 14:16 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-07 9:50 [RFC PATCH v2 0/6] SCHED_DEADLINE server infrastructure Juri Lelli
2020-08-07 9:50 ` [RFC PATCH v2 1/6] sched: Unify runtime accounting across classes Juri Lelli
2020-08-07 9:50 ` [RFC PATCH v2 2/6] sched/deadline: Collect sched_dl_entity initialization Juri Lelli
2020-08-07 9:50 ` [RFC PATCH v2 3/6] sched/deadline: Move bandwidth accounting into {en,de}queue_dl_entity Juri Lelli
2020-08-07 9:50 ` [RFC PATCH v2 4/6] sched/deadline: Introduce deadline servers Juri Lelli
2020-10-06 7:56 ` luca abeni
2020-10-06 9:35 ` Juri Lelli
2020-10-06 9:51 ` luca abeni
2020-08-07 9:50 ` [RFC PATCH v2 5/6] sched/fair: Add trivial fair server Juri Lelli
2020-08-07 9:56 ` [RFC PATCH v2 6/6] sched/fair: Implement starvation monitor Juri Lelli
2020-08-07 10:46 ` peterz
2020-08-07 11:30 ` Daniel Bristot de Oliveira
2020-08-07 12:50 ` Juri Lelli
2020-08-07 13:49 ` luca abeni
2020-08-07 14:11 ` peterz
2020-08-07 16:48 ` Daniel Bristot de Oliveira
2020-08-07 13:28 ` luca abeni
2020-08-07 13:43 ` Juri Lelli
2020-08-07 13:55 ` luca abeni
2020-08-07 14:11 ` Juri Lelli
2020-08-07 14:13 ` peterz
2020-08-07 15:06 ` Juri Lelli
2020-08-07 13:16 ` luca abeni [this message]
2020-08-07 13:30 ` [RFC PATCH v2 0/6] SCHED_DEADLINE server infrastructure Juri Lelli
2020-08-07 13:41 ` luca abeni
2020-08-07 14:04 ` Juri Lelli
2020-08-07 14:14 ` peterz
2020-09-08 22:22 ` Pavel Machek
2020-09-09 5:51 ` Juri Lelli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200807151632.36dc6200@nowhere \
--to=luca.abeni@santannapisa.it \
--cc=alessio.balsini@gmail.com \
--cc=bristot@redhat.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=mtosatti@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=tommaso.cucinotta@santannapisa.it \
--cc=valentin.schneider@arm.com \
--cc=williams@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).