On Wed, Jul 21, 2004 at 10:52:46AM +0200, Ingo Molnar
wrote:
this, if enabled, causes all softirqs to be
processed within ksoftirqd,
and it also breaks out of the softirq loop if preemption of ksoftirqd
has been triggered by a higher-prio task.
You'll still have the latency of finishing the currently executing
softirq, which often includes a loop itself (whose break condition is
based on not hogging the CPU, rather than letting higher priority
tasks in as soon as possible).
well, i share your desire for lower latencies but this is what the
semantics of softirqs require.
but it's really easy to break out of softirq processing early and
restart it later. All it needs in net_rx_action() is to:
if (softirq_defer && need_resched())
goto softnet_break;
since the network softirq code is already latency-aware. The same
'lock-break'-alike methods can be used for other softirq code too.
Ingo