Re: ARM Linux Suitability for Real-time Application

From: Eugeny S. Mints
Date: Wed Jun 22 2005 - 03:57:26 EST


Andrew Lewis wrote:
I have recently been using Linux on the AT91RM9200 as a data concentrator for a small (as yet unreleased) communications application.

[snip]
In order to run the radio successfully I need to be able to handle interrupts within around 50us, and have interrupts run constantly for between 20us and 200us (mostly at the low end). I would expect there to be three or four of these interrupts every 1000us, probably using about 25% of the CPU power just to manage the radio deck.

This would makeup the real-time control element of the application. If I was writing this on bare metal, I would lock the high level interrupts out to perform communications between the mainline and the interrupt control paths for no more than 10us.

[snip]

The question is, would I be able to meet these time contraints if I wrote a device driver running under Linux? Especially important is keeping the latency of handling the interrupts below 50us, and not breaking anything by running 200us long interrupts.

I just wanted a general indication that such a driver is possible or impossible before embarking on a more detailed investigation.
The rough answer is that it's impossible with vanilla kernel and possible (as a rough approximation) with Ingo Molnar's real-time patch http://redhat.com/~mingo/realtime-preempt/ which includes arm real-time port and hardirq-disable removal feature by Daniel Walker.

All linux real-time related discussions are going on LKML so first of all you might want to use LKML instead arm linux list for all real-time questions (thus I changed list in the header of the message).

As to concrete numbers you are interested in please take a look at "PREEMPT_RT vs I-PIPE: the numbers, part 2" thread on LKML which I believe presents most recent numbers.

The bottom line is that interrupt and preemption latencies for a kernel with RT patch are inbetween 15-150us. But of course even with real-time patch you have to perform _real_ fine tuning of your system to achieve such hard constraints you identified.

Eugeny
Best Regards,
Andrew Lewis

-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php





-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/