From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Antoine Nourry <nourry@free.fr>
Cc: Leon Woestenberg <leon.woestenberg@gmail.com>,
linux-rt-users@vger.kernel.org
Subject: Re: Real-Time & Determinism
Date: Tue, 26 May 2009 16:22:02 -0700 [thread overview]
Message-ID: <20090526232202.GC7006@linux.vnet.ibm.com> (raw)
In-Reply-To: <4A180113.8030203@free.fr>
On Sat, May 23, 2009 at 03:58:43PM +0200, Antoine Nourry wrote:
>>> why can we read everywhere that Preempt_RT offers hard real time
>>> capabilities while on another hand we can find in some papers that it is
>>> not deterministic and only gives assurance to obtain low latencies ?
>>> is it real
>>>
>> Can you give some links of one and the other?
>>
> For hard real time capabilities it is said (among numerous others) in
> http://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO#About_the_RT-Preempt_Patch
>
> /"The standard Linux kernel only meets soft real-time requirements: it
> provides basic POSIX operations for userspace time handling but has no
> guarantees for hard timing deadlines. With Ingo Molnar's Realtime
> Preemption patch (referenced to as RT-Preempt in this document) and Thomas
> Gleixner's generic clock event layer with high resolution support, the
> kernel gains hard realtime capabilities."/
>
> For lack of determinism :
>
> http://lwn.net/Articles/106010/ :
>
> /"NOTE: deterministic hard-rt is not about speed, it's about determinism.
> While Ingo's work is great at reducing latency, it cannot *guarantee*
> response times regardless of the load, kernel configuration, and driver
> set. RTAI/fusion, and the Adeos interrupt pipeline on a smaller scale, can
> provide such guarantees."/
>
> Actually, as you guessed i'm a beginner in real time sphere. I used Xenomai
> for a previous work : turn a native linux driver for an USB DAQ device into
> a real time one to ensure acquisitions within a definite cycle. The problem
> is that i had to use a real time USB stack and only found USB4RT which
> works but with some bugs and limitations. I'm now interested with the
> RT_Preempt patch that would make me able to use the native Linux USB stack
> (i'm not sure of this point..., Is it only possible to obtain *constant
> execution times* using USB with RT_Preempt ?).
The USB hardware itself is non-deterministic, from what I hear from the
USB guys. But it all depends on what you need.
>>> time or not (deterministic) ? if yes, is it hard or soft RT ? Please
>>> excuse me if i've missed something important.
>>
>> This is a simplistic summary as I learned it:
>>
>> It's hard real-time behaviour.
>>
>> However, as the kernel consist of a large amount of code, every piece
>> of code must behave properly with regard to locking etc. so that the
>> real-time scheduler is actually able to pre-empt with low latency
>> intervals.
>>
>> The tracing code has been included to find those long no-pre-empt
>> spots in the kernel code.
>>
> So, Is gaining total determinism under RT_Preempt just a matter of testing
> that your particular code will not call "those long no-preempt spots" which
> hadn't or couldn't been cut off from the kernel ?
That is indeed one definition that real users actually use for "hard
realtime". Such users will provide a test suite based on what their
real-time application will be doing. Not particularly satisfying from a
theoretical viewpoint, perhaps, but this is what really happens for some
sorts of applications.
There are a number of other definitions, see for example:
http://www.linuxjournal.com/article/9361
In theory, one could analyze the Linux kernel to identify the longest
section of code running with preemption disabled, but as far as I know
this has not yet been done.
So if you need a mathematical proof that your real-time OS will respond
within a bounded time, then RT Linux might not be the right tool for
your job. But a surprisingly large number of RT applications do not
need that level of assurance.
And I would not be surprised to hear that someone decided to bite the
bullet and actually mechanically analyze the Linux source/binary for
maximum latency. ;-)
Thanx, Paul
next prev parent reply other threads:[~2009-05-26 23:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-23 13:04 Real-Time & Determinism Antoine Nourry
2009-05-23 13:09 ` Leon Woestenberg
2009-05-23 13:58 ` Antoine Nourry
2009-05-26 23:22 ` Paul E. McKenney [this message]
2009-05-28 1:21 ` Lee Revell
2009-05-28 10:16 ` nourry
2009-05-28 12:38 ` Luis Claudio R. Goncalves
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=20090526232202.GC7006@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=leon.woestenberg@gmail.com \
--cc=linux-rt-users@vger.kernel.org \
--cc=nourry@free.fr \
/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.