From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@elte.hu>,
linux-kernel@vger.kernel.org,
Stefani Seibold <stefani@seibold.net>,
Dario Faggioli <raistlin@linux.it>,
Nick Piggin <nickpiggin@yahoo.com.au>,
Max Krasnyansky <maxk@qualcomm.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 6/6] sched: disabled rt-bandwidth by default
Date: Thu, 28 Aug 2008 18:05:02 +0200 [thread overview]
Message-ID: <1219939502.17355.30.camel@twins> (raw)
In-Reply-To: <20080828141513.GC31444@goodmis.org>
On Thu, 2008-08-28 at 10:15 -0400, Steven Rostedt wrote:
> My biggest concern about adding a limit to FIFO is that an RT developer
> would spend weeks trying to debug their system wondering why their
> planned CPU RT hog, is being preempted by a non-RT task.
>
> For this, if this time limit does kick in, we should at the very least
> print something out to let the user know this happened. After all, this
> is more of a safety net anyway, and if we are hitting the limit, the
> user should be notified. Perhaps even tell the user that if this
> behaviour is expected, to up the sysctl <var> by more.
Should be easy enough to do -
> Peter, another question. Is this limit for a single RT task running, or
> all RT tasks. I'm assuming here that it is a single RT task. If you have
> 20 RT tasks all running, would this let non RT tasks in? In that case,
> this could be even a bigger issues.
No its not per task. Its per group (and trivially the !group case is one
group).
All this bandwidth code comes from RT group scheduling. We do that by
assigning a bandwidth to each group so that within that bandwidth each
group can use RT tasks and have them behave like they should.
I don't fully agree with the statement that the most important thing for
SCHED_FIFO is to run as long as you want.
The most important thing SCHED_FIFO brings us are deterministic
scheduling rules. And RT group scheduling maintains that determinism by
using a constand bandwidth assignment.
Now the thing that we've been bickering about - bandwidth limits on the
root group, which just fell out of the whole ordeal due to symmertry.
On the one hand, a program that ran deterministic will still run
deterministically at n% (although of course, just like running on less
powerfull hardware, you could miss deadlines you previously did not). On
the other hand, people might not expect that.
Having a lower than 100% bandwidth limit by default gives a safer
environment because it avoids total starvation, nor does it take away
determinism [*].
It does however bring the risk of surprising a few folks.
[*] - there is some added jitter due to the throttling logic, and since
the default period might not align nicely with actual deadlines its not
perfect. An EDF based scheduler with <100% bandwidth caps would do
better.
Other scheduling classes have been mentioned... I've been on the point
of writing SCHED_ISO, a bandwidth throttled SCHED_FIFO that doesn't
require root priviligles and comes with say a 10% bandwidth limit.
Doing that should not be too hard - it will just add more code and a
bigger configuration space.
next prev parent reply other threads:[~2008-08-28 16:05 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-19 10:33 [PATCH 0/6] sched: rt-bandwidth fixes Peter Zijlstra
2008-08-19 10:33 ` [PATCH 1/6] sched: rt-bandwidth for user grouping interface Peter Zijlstra
2008-08-19 10:33 ` [PATCH 2/6] sched: rt-bandwidth accounting fix Peter Zijlstra
2008-08-19 18:33 ` Max Krasnyansky
2008-08-19 18:38 ` Peter Zijlstra
2008-08-19 10:33 ` [PATCH 3/6] sched: rt-bandwidth group disable fixes Peter Zijlstra
2008-08-19 10:33 ` [PATCH 4/6] sched: extract walk_tg_tree() Peter Zijlstra
2008-08-19 10:33 ` [PATCH 5/6] sched: rt-bandwidth fixes Peter Zijlstra
2008-08-19 10:33 ` [PATCH 6/6] sched: disabled rt-bandwidth by default Peter Zijlstra
2008-08-19 11:05 ` Ingo Molnar
2008-08-19 11:11 ` Ingo Molnar
2008-08-19 11:42 ` [PATCH] sched: extract walk_tg_tree(), fix Ingo Molnar
2008-08-19 11:17 ` [PATCH 6/6] sched: disabled rt-bandwidth by default Nick Piggin
2008-08-19 12:59 ` Ingo Molnar
2008-08-19 18:15 ` Max Krasnyansky
2008-08-20 11:56 ` Nick Piggin
2008-08-26 9:00 ` Nick Piggin
2008-08-26 9:30 ` Ingo Molnar
2008-08-26 9:44 ` Nick Piggin
2008-08-26 10:29 ` Ingo Molnar
2008-08-26 11:03 ` Nick Piggin
2008-08-26 9:54 ` Nick Piggin
2008-08-26 11:09 ` Thomas Gleixner
2008-08-26 11:27 ` Nick Piggin
2008-08-26 12:50 ` Theodore Tso
2008-08-26 13:31 ` Stefani Seibold
2008-08-26 17:55 ` Theodore Tso
2008-08-26 21:37 ` Thomas Gleixner
2008-08-26 22:49 ` Andi Kleen
2008-08-27 10:08 ` Nick Piggin
2008-08-28 10:54 ` Ingo Molnar
2008-08-28 11:09 ` Andi Kleen
2008-08-28 11:19 ` Peter Zijlstra
2008-08-28 11:28 ` Ingo Molnar
2008-08-28 11:50 ` Andi Kleen
2008-08-28 12:00 ` Peter Zijlstra
2008-08-28 12:14 ` Andi Kleen
2008-08-28 12:18 ` Nick Piggin
2008-08-28 16:19 ` Max Krasnyansky
2008-08-28 16:25 ` Ingo Molnar
2008-08-28 16:33 ` Andi Kleen
2008-08-28 12:03 ` Nick Piggin
2008-08-28 13:07 ` Ingo Molnar
2008-08-28 13:45 ` Nick Piggin
2008-08-28 12:29 ` Nick Piggin
2008-08-27 10:04 ` Nick Piggin
2008-08-26 13:47 ` Mark Hounschell
2008-08-26 23:00 ` Steven Rostedt
2008-08-27 18:55 ` Chris Friesen
2008-08-28 14:15 ` Steven Rostedt
2008-08-28 14:30 ` Ingo Molnar
2008-08-28 14:36 ` Nick Piggin
2008-08-28 15:12 ` Steven Rostedt
2008-08-28 15:34 ` Nick Piggin
2008-08-28 15:50 ` Steven Rostedt
2008-08-28 17:26 ` Linus Torvalds
2008-08-28 18:04 ` Steven Rostedt
2008-08-28 18:10 ` Darren Hart
2008-08-28 18:16 ` Mark Hounschell
2008-08-28 18:42 ` Linus Torvalds
2008-08-28 18:53 ` Steven Rostedt
2008-08-29 7:56 ` Mike Galbraith
2008-08-29 8:06 ` Peter Zijlstra
2008-08-29 8:47 ` Mike Galbraith
2008-08-28 19:39 ` Stefani Seibold
2008-08-28 20:53 ` Alan Cox
2008-08-30 6:33 ` Nick Piggin
2008-08-28 16:33 ` Max Krasnyansky
2008-08-28 17:22 ` John Kacur
2008-08-28 16:05 ` Peter Zijlstra [this message]
2008-08-28 16:15 ` Steven Rostedt
2008-08-28 16:29 ` Peter Zijlstra
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=1219939502.17355.30.camel@twins \
--to=a.p.zijlstra@chello.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=maxk@qualcomm.com \
--cc=mingo@elte.hu \
--cc=nickpiggin@yahoo.com.au \
--cc=raistlin@linux.it \
--cc=rostedt@goodmis.org \
--cc=stefani@seibold.net \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/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