[patch] voluntary-preempt-2.6.8-rc2-L2, preemptable hardirqs

From: Ingo Molnar
Date: Tue Jul 27 2004 - 13:00:01 EST



i've uploaded -L2:

http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.8-rc2-L2

the big change in the -L2 release is a new latency-reduction feature:
the redirection of hardirqs to irqd. This enables lock-break methods
that make hardirqs preemptable.

I've done the lock-break of the IDE driver's completion path and i now
cannot trigger larger than 100 usecs hardirq latencies via the IDE
driver anymore, on a 2GHz x86 box - even if max_sectors is kept at the
default 1024K value. (!)

the hardirq-redirection feature is activated via voluntary-preemption=3
(default). All irqs except the timer irq are redirected. (the timer irq
needs to run from irq context - but it has constant latency and constant
frequency so it's not an issue. Soft timers are executed from the timer
softirq which is redirected and hence preemptable.)

this means that with this patch applied the 2.6 UP kernel is quite close
to being hard-RT capable (using controlled drivers and workloads). All
unbound-latency asynchronous workloads have been unloaded into
synchronous, schedulable process contexts - so nothing can delay a
high-prio RT task. (assuming we caught all the latencies. Any remaining
latency can be fixed with the existing methods.)

other changes in -L2:

i've done a softirq lock-break in the atkbd and ps2mouse drivers - this
should fix the big latencies triggered by NumLock/CapsLock, reported by
Lee Revell.

BIG WARNING: the hardirq-redirection feature is quite intrusive to
drivers so it's possible that some drivers will break under it. The
changes done to the IDE driver might also endanger stability. Be careful
when applying this patch to production systems. If your system doesnt
boot then please try the voluntary-preempt=2 boot-option to turn off
hardirq redirection.

I've done some stresstesting on a desktop-style IDE-based system and
everything seems to work fine. YMMV.

Ingo
-
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/