Re: [PATCH 1/3] Separate IRQ-stacks from 4K-stacks option

From: Timothy Miller
Date: Wed Oct 20 2004 - 12:59:28 EST




Lee Revell wrote:
On Sun, 2004-09-12 at 18:07, Andrea Arcangeli wrote:

On Sun, Sep 12, 2004 at 05:36:41PM -0400, Lee Revell wrote:

But in this case the hardirq handler can run for 2ms, which caused a
scheduler latency problem, because nothing could run but other IRQs. The IRQ threading in Ingo's patches solves the problem, and seems to me
to be the correct solution.

the irq threading must have a cost, doesn't it? I doubt you want to
offload irqs to a kernel thread on a server, *that* would be slow (irq
nesting is zerocost compared to scheduling a kernel thread).


Yes, on a server you would probably disable threading for the disk and
network IRQs (the VP patch lets you set this via /proc). This feature
effectively gives you IPLs on Linux, albeit only two of them. For
example to prevent heavy traffic on one network interface from impacting
the latency of the other, you could enable threading for the first and
disable it for the second.

I am still unsure why the IDE i/o completion is the one place that
breaks the assumption that hardirq handlers execute quickly.


On the one hand, all this preemption introduces overhead which increases latency and reduces throughput for any one individual activity.

On the other hand, the preemption allows the CPU to attend to more different resources at the same time, keeping more resources busy. Under heavy load, this can increase overall system throughput significantly.

So, both approaches can increase throughput in different ways. Where is the balance between the two which yields the most satisfactory result?

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