From: Clark Williams <williams@redhat.com>
To: RT <linux-rt-users@vger.kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Darren Hart <dvhltc@us.ibm.com>,
Sven-Thorsten Dietrich <sven@thebigcorporation.com>
Subject: proposed FAQ entry for rt.wiki.kernel.org (v2)
Date: Thu, 22 Oct 2009 15:25:39 -0500 [thread overview]
Message-ID: <20091022152539.04e2787a@torg> (raw)
In-Reply-To: <20091022120832.4bfd29e2@torg>
[-- Attachment #1: Type: text/plain, Size: 2783 bytes --]
Got some good feedback on the first round, but missed CC'ing rostedt,
since he isn't on linux-rt-users, so here's the revised text with
the edits from dvhart and sven applied:
---------------------8< snip 8<----------------------------------
Q. How does Real-Time Linux (aka the PREEMPT_RT patch) improve
"latency"?
A. The Linux RT patch modifies the behavior of the most common
kernel-level locking primitive (the spinlock) and kernel interrupt
handling logic, to increase the number of points where a preemption or
reschedule may occur. This reduces the amount of time a high priority
task must wait to be scheduled when it becomes ready to run, reducing
event service time (or "latency").
Most spinlocks in the kernel are converted to a construct called an
rtmutex, which has the property of *not* disabling interrupts or
preventing task switching while the lock is held. It also has the
property of sleeping on contention rather than spinning (hence the
sometimes heard term "sleeping spinlocks"). These two properties mean
that interrupts may occur while rtmutexes are held and interrupt
handling is a potential preemption point; on return from handling an
interrupt, a scheduler check is made as to whether a higher priority
thread needs to run.
The rtmutex locking construct also has a property known as "priority
inheritance", which is a mechanism for avoiding a deadlock situation
known as "priority inversion"
(http://en.wikipedia.org/wiki/Priority_inversion). In order to prevent
a low priority thread that is holding a lock from preventing a higher
priority thread from running, the low priority thread temporarily
inherits the priority of the highest priority thread that is requesting
the lock, which allows the low-priority thread to run until it
completes its critical section and releases the lock.
In addition to changing kernel locking, interrupts have been threaded,
meaning that instead of handling interrupts in a special "interrupt
context", each interrupt number has a dedicated thread for running its
service routines. Interrupts go to a common handler and that handler
schedules the appropriate thread to service the interrupt. This means
that interrupt service order may be prioritized by assigning appropriate
realtime priorities to the interrupt threads. Further, using realtime
priorities, user-level threads may be prioritized *above* certain
device level activity, allowing critical application tasks to take
precedence over device activity deemed less important.
---------------------8< snip 8<----------------------------------
Kinda big for an elevator pitch, but hey, I'm sure the marketing and
sales guys will paraphrase it into "It makes things go Real Fast!" :)
Clark
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
next prev parent reply other threads:[~2009-10-22 20:26 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-22 17:08 proposed FAQ entry for rt.wiki.kernel.org Clark Williams
2009-10-22 18:16 ` Darren Hart
2009-10-22 18:29 ` Clark Williams
2009-10-22 18:52 ` Darren Hart
2009-10-22 18:18 ` Sven-Thorsten Dietrich
2009-10-22 18:41 ` Clark Williams
2009-10-22 18:57 ` Sven-Thorsten Dietrich
2009-10-22 20:25 ` Clark Williams [this message]
2009-10-22 21:18 ` proposed FAQ entry for rt.wiki.kernel.org (v2) Steven Rostedt
2009-10-23 8:11 ` Uwe Kleine-König
2009-10-23 13:20 ` Steven Rostedt
2009-10-22 21:39 ` proposed FAQ entry for rt.wiki.kernel.org (v3) Clark Williams
2009-10-22 21:47 ` proposed FAQ entry for rt.wiki.kernel.org (v2) Darren Hart
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=20091022152539.04e2787a@torg \
--to=williams@redhat.com \
--cc=dvhltc@us.ibm.com \
--cc=linux-rt-users@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sven@thebigcorporation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox