Hi,

On Saturday, February 22, 2014 1:17:24 PM UTC+1, rchrd...@gmail.com wrote:
>
> It is not possible to have a fully deterministic real-time operating 
> system on a processor that uses instruction/data caches. ie you have to 
> turn off the cacheing to achieve determinism and eliminate performance 
> jitter (which then degrades the average performance).
>

That is correct (in theory), but you need to figure out what kind of 
real-time requirements you have on your system first to understand if that 
is important or not. You typically divide real-time operating systems in 
these 3 categories;


   - *Hard:* Missing a deadline is a total system failure.
   - *Firm:* Infrequent deadline misses are tolerable, but may degrade the 
   systems quality of service. The usefulness of a result is zero after its 
   deadline.
   - *Soft:* The usefulness of a result degrades after its deadline, 
   thereby degrading the system's quality of service


Above defintions from http://en.wikipedia.org/wiki/Real-time_computing

If you have "Hard" real-time requirements you typically do not try to run 
that application in Linux user-space, not even with PREEMPT-RT. That is the 
task for dedicated real-time solutions such as the PRU co-processor or 
dedicated real-time OSes.

Firm real-time can be solved using Linux PREEMPT-RT though, and also soft 
of course. I did a quick benchmark on the BBone some time ago on the 
3.4.39-rt54 kernel and found bounded latencies in the 60us range. So if you 
have firm real-time requirements and can accept latencies in that range 
PREEMPT-RT can be a solution.


> From what I understand PREEMPT_RT does not really improve the real-time 
> performance of linux if you stick to user level applications. You have to 
> start doing things at kernel level, which can get difficult and break many 
> of the existing device drivers. Anyway, who said all embedded applications 
> require a deterministic real-time performance? Soft real-time performance 
> is generally good enough for a lot of applications.
>

The point of PREEMPT-RT is to provide bounded latencies for user-space 
applications (SCHED_FIFO tasks), without PREEMPT-RT can can't count on 
bounded latencies in Linux (even for SCHED_FIFO tasks).
 

>
> For real-time, the PRU co-processors are the way to go.
>

Agreed, but that is for hard real-time. And programming the PRU is not at 
all as convenient as programming user-space applications in Linux on the 
posix interface. Posix on top of Linux with PREEMPT-RT provides you with a 
preemptive programming model (if needed) and bounded latencies, though you 
need to be careful with which system calls you are using.

Regards
Daniel


-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to