Re: Real-Time & Determinism

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux