Re: [patch] severe softirq handling performance bug, fix, 2.4.5

Andrea Arcangeli (andrea@suse.de)
Sun, 27 May 2001 19:07:00 +0200


On Sat, May 26, 2001 at 07:59:28PM +0200, Ingo Molnar wrote:
> the two error cases are:
>
> #1 hard-IRQ interrupts user-space code, activates softirq, and returns to
> user-space code

Before returning to userspace do_IRQ just runs do_softirq by hand from C
code.

> #2 hard-IRQ interrupts the idle task, activates softirq and returns to
> the idle task.

The problem only happens when we return to the idle task and a softirq
is been marked active again and we cannot keep running it or we risk to
soft deadlock.

I think the final fix for those issues (plus the case of a softirq
marking itself running all the time) is ksoftirqd, it lets the scheduler
to balance the softirq load, you can as well renice it. please try to
benchmark after applying it, it should solve all your troubles cleanly,
during tux load ksoftirq runs quite a lot btw:

ftp://ftp.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.5aa1/00_ksoftirqd-4

don't forget to apply this scheduler fix first, or your risk to run into
troubles:

ftp://ftp.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.5aa1/00_cpus_allowed-1

I also suggest to apply the other scheduler fixes like the sched_yield
and parent_timeslice too before running the test.

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