Re: running real time application behind glade



On Tue, 02 Nov 2004 13:29:41 -0500, valdis kletnieks vt edu
<valdis kletnieks vt edu> wrote:
> On Tue, 02 Nov 2004 00:35:33 PST, Aaron Yang said:
> 
> >   I'm using glade 2, running on redhat 9. For realtime, it's rtlinux-3.2-pre2
> > running with linux kernel-2.4.20-rtl.
> 
> You almost certainly don't need rtlinux here because...
> 
> > 2. entry box has a real-time counter counting from 0 onwards in 1 second interval
> >     e.g. 0...1...2...3...

Maybe he is testing the real time kernel to use it on a real time
project. I had to make a lot of dummy tests for my application before
starting with the real work only to get started with the RTAI API. So
this test (if that's a test) it's right.

> If your update gets the in 1.001 seconds rather than 1.000 or 0.999 seconds,
> nothing *breaks*.  You need rtlinux or similar stuff when *stuff breaks* if you
> don't make the scheduling deadline.  I mean, *literally* breaks, as in
> you have to throw stuff in the trash bin. For instance:
> 
> If you're burning a CD at 24x and don't have Burn-Free enabled, you *have*
> to have the next several blocks to write into the FIFO in time, or what you
> get is a coaster, not a CD.
> 
> If you're doing high-end audio work, you *have* to feed the audio card the
> required number of 96khz samples every second, or you get an over-run or
> a drop-out.  Clicks and pops when you're trying to do professional quality
> audio are *not* considered acceptable.
> 
> If you're doing robotic control or something similar, you *have* to measure,
> compute, and adjust the settings on servo motors every N milliseconds, or risk
> dangerous oscillations.
> 
> http://www.moog.com/noq/_capabilities__c478/
> 
> Yes, it's tossing 15 tons around on those pistons, because you build stuff
> like this on it:
> 
> http://www.mfs.com.au/MFS_Motion_Platforms.htm
> 
> See those 6 pistons? You *have* to send orders to all 6, *in order*, several
> hundred times a second - and each time you usually need to read the status of
> all 6 actuators, do some involved matrix computations (you can't change the
> length of just one piston, or you *will* break something), and output the
> new commands.  And if you get it wrong, a piston able to move 15 tons
> will try to put itself through the floor of your airplane cockpit simulation....
> 
> *Those* are examples of actual "real time" programming....
> 
> You may have an easier time of it if you *get rid* of rtlinux if you don't
> *need* it - the flip side of "hard real time" is that it can be *very*
> wasteful of resources, and even cause total starvation of other processes -
> hard real time means that if one process has announced that it *has* to
> run every 50 milliseconds, the kernel may very well decide "Well, it's only
> 9ms till it will want to run again, and there's no realtime processes
> waiting to run, so we're going to just *not* run those non-realtime
> processes just in case one of them will make a system call that takes 11ms
> to return - and we *cant* allow that because somebody else *has* to run
> 9ms from now".

That's not usual. The real time kernel runs below the Linux kernel. In
fact, with RTLinux and RTAI the Linux kernel is some kind of idle
thread, so Linux is executing when it needs and only interrumped by
real time tasks when it's time. No matter if a system call is executed
because all the Linux environment is apart from the real time tasks.

> And yes, when you're doing hard real-time, the kernel *is* allowed to
> drop your GUI dead in its tracks if it feels the need, because the
> X server isn't a real-time process.

Here you are right. There can't be a GUI process in real time. You
need a separate thread (or kernel module) to execute real time tasks.
In fact, a real time task can't make any Linux system call.



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