On Thu, 2013-01-03 at 22:08 +0000, Ben Hutchings wrote:
On Thu, 2013-01-03 at 04:28 -0800, Eric Dumazet wrote:
quoted
From: Eric Dumazet <edumazet@google.com>
In various network workloads, __do_softirq() latencies can be up
to 20 ms if HZ=1000, and 200 ms if HZ=100.
This is because we iterate 10 times in the softirq dispatcher,
and some actions can consume a lot of cycles.
This patch changes the fallback to ksoftirqd condition to :
- A time limit of 2 ms.
- need_resched() being set on current task
[...]
quoted
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
[...]
quoted
-#define MAX_SOFTIRQ_RESTART 10
+#define MAX_SOFTIRQ_TIME min(1, (2*HZ/1000))
[...]
Really? Never iterate if HZ < 500?
good catch, it should be max()