From: Peter Zijlstra <peterz@infradead.org>
To: Bjoern Brandenburg <bbb@email.unc.edu>
Cc: Harald Gustafsson <hgu1972@gmail.com>,
Raistlin <raistlin@linux.it>,
linux-kernel <linux-kernel@vger.kernel.org>,
Song Yuan <song.yuan@ericsson.com>,
Dmitry Adamushko <dmitry.adamushko@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Nicola Manica <nicola.manica@disi.unitn.it>,
Luca Abeni <lucabe72@email.it>,
Claudio Scordino <claudio@evidence.eu.com>,
Harald Gustafsson <harald.gustafsson@ericsson.com>,
bastoni@cs.unc.edu, Giuseppe Lipari <lipari@retis.sssup.it>
Subject: Re: periods and deadlines in SCHED_DEADLINE
Date: Mon, 02 Aug 2010 21:34:58 +0200 [thread overview]
Message-ID: <1280777698.1923.345.camel@laptop> (raw)
In-Reply-To: <B4F5A462-AE78-4BF0-B66E-4A5949A4A519@email.unc.edu>
On Sun, 2010-07-11 at 09:32 +0200, Bjoern Brandenburg wrote:
> Trying to infer whether a task is "hard" or "soft" from task
> parameters is not a good idea, IMO. It's much better to make this an
> explicit part of the task model that is configured via sched_setparam.
> By default, tasks should be marked "soft" (this leaves more wiggle
> room to the kernel); users who care can change the flag to "hard".
I think we're in violent agreement here ;-) and I was convinced that was
what we were talking about. The question was only how to represent that
in the sched_param_ex structure, the options were:
struct sched_param_ex params;
params.flags |= SF_SOFT;
sched_setscheduler_ex( .policy = SCHED_DEADLINE, .param = ¶ms);
vs
sched_setscheduler_ex( .policy = SCHED_DEADLINE_{SOFT,HARD},
.param = ¶ms);
> Taking a step back, I think the problem here is that we are trying to
> shove too many concepts and properties into a single scheduler. Hard
> (no tardiness) is different from soft (bounded tardiness) is different
> from global is different from partitioned.
>
> From my point of view, it makes no sense to support hard deadlines
> under G-EDF (this is backed up by our schedulability studies [1]).
> Hard deadlines are best served by a P-EDF implementation (that only
> migrates on task creation/admission).
>
The problem is more that we need to support things like cpu affinity and
cpusets within the context of a 'global' scheduler.
Using cpusets we can partition the 'load-balancer' and create clusters
(root-domains in linux scheduler speak).
Using cpu affinity we can limit tasks to a subset of their cluster's
cpus.
Esp. the latter is very hard to do, and I think we can get away with
only allowing a single cpu or the full cluster (its a new policy, so
there is no existing userspace to break).
This ends up meaning we need to support both P-EDF and G-EDF for soft,
and since we want to re-use pretty much all the code and only have a
different admission test for hard (initially), it would end up also
being P/G-EDF for hard (even though as you rightly point out, hard G-EDF
is pretty pointless -- but since the policy doesn't promise EDF, we
could later improve it to be PD^2 or whatever, at which point global
hard does start to make sense).
(which I guess would suggest we use different policies instead of a
flag, since that would make most sense if we end up replacing the hard
part with another policy)
So what I want to have is a sporadic task scheduler, not an EDF
scheduler (hence also the request to s/SCHED_EDF/SCHED_DEADLINE/ --
avoiding the obvious SCHED_SPORADIC in order to avoid confusion with the
POSIX thing).
EDF is just the easiest of the many different ways to schedule a
sporadic task set.
next prev parent reply other threads:[~2010-08-02 19:35 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-09 13:38 periods and deadlines in SCHED_DEADLINE Raistlin
2010-07-09 14:18 ` Peter Zijlstra
2010-07-09 14:51 ` Bjoern Brandenburg
2010-07-09 16:35 ` Peter Zijlstra
2010-07-10 9:01 ` Raistlin
2010-07-10 10:28 ` Peter Zijlstra
2010-07-10 14:49 ` Raistlin
2010-07-11 6:42 ` Bjoern Brandenburg
2010-08-03 9:41 ` Peter Zijlstra
2010-08-04 3:52 ` Andrea Bastoni
2010-08-04 7:14 ` Peter Zijlstra
2010-08-04 5:18 ` Bjoern Brandenburg
2010-08-03 9:46 ` Peter Zijlstra
2010-08-04 3:53 ` Andrea Bastoni
2010-08-04 5:02 ` Bjoern Brandenburg
2010-07-10 7:08 ` Raistlin
2010-07-11 6:46 ` Bjoern Brandenburg
2010-08-03 8:16 ` Peter Zijlstra
2010-08-03 11:42 ` Gregory Haskins
2010-08-04 6:30 ` Bjoern Brandenburg
2010-07-09 14:24 ` Peter Zijlstra
2010-07-10 7:11 ` Luca Abeni
2010-07-10 10:36 ` Peter Zijlstra
2010-07-11 6:12 ` Bjoern Brandenburg
2010-07-09 14:30 ` Peter Zijlstra
2010-07-10 9:14 ` Raistlin
2010-07-10 17:19 ` Harald Gustafsson
2010-07-10 18:31 ` Peter Zijlstra
2010-07-10 20:08 ` Harald Gustafsson
2010-07-10 21:52 ` Raistlin
2010-07-11 5:41 ` Harald Gustafsson
2010-07-11 7:32 ` Bjoern Brandenburg
2010-07-12 10:21 ` Harald Gustafsson
2010-08-04 5:55 ` Bjoern Brandenburg
2010-08-02 19:34 ` Peter Zijlstra [this message]
2010-08-04 4:44 ` Bjoern Brandenburg
2010-07-09 14:32 ` Peter Zijlstra
2010-07-10 7:50 ` Raistlin
2010-07-10 15:11 ` Peter Zijlstra
2010-07-10 17:29 ` Harald Gustafsson
2010-07-11 6:15 ` Bjoern Brandenburg
2010-07-10 7:09 ` Luca Abeni
2010-07-10 9:20 ` Raistlin
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=1280777698.1923.345.camel@laptop \
--to=peterz@infradead.org \
--cc=bastoni@cs.unc.edu \
--cc=bbb@email.unc.edu \
--cc=claudio@evidence.eu.com \
--cc=dmitry.adamushko@gmail.com \
--cc=harald.gustafsson@ericsson.com \
--cc=hgu1972@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lipari@retis.sssup.it \
--cc=lucabe72@email.it \
--cc=nicola.manica@disi.unitn.it \
--cc=raistlin@linux.it \
--cc=song.yuan@ericsson.com \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.