Re: [patch] Voluntary Kernel Preemption, 2.6.12-rc4-mm2

From: Ingo Molnar
Date: Tue May 24 2005 - 10:48:16 EST



* Nick Piggin <nickpiggin@xxxxxxxxxxxx> wrote:

> > (then you must be disagreeing with CONFIG_PREEMPT too to a certain
> > degree i guess?)
>
> CONFIG_PREEMPT is different in that it explicitly defines and delimits
> preempt critical sections, and allows maximum possible preemption
> (whether or not the critical sections themselves are too big is not
> really a CONFIG_PREEMPT issue).

from a theoretical POV, this categorization into 'preempt critical' vs.
'preempt-noncritical' sections is pretty arbitrary too.

from a practical POV the amount of code that is non-preemptible is not
controllable under CONFIG_PREEMPT. So the end-result is that
CONFIG_PREEMPT is just as nondeterministic.

polling need_resched after reaching a zero preempt_count() is ugly
(doing cond_resched() in might_sleep() is ugly too) - pretty much the
only difference is overhead.

> Jamming in cond_resched in as many places as possible seems to work
> quite well pragmatically, [...]

yes, and that's what matters. It's just a single #ifdef in kernel.h, and
at least one major distribution would make use of it because it
significantly improves soft-RT latencies at a minimal cost. We can
remove it if it's not being used, but right now the only choice that
distributions have is no preemption or full-blown CONFIG_PREEMPT. Ask
the kernel maintainers at SuSE why they havent enabled CONFIG_PREEMPT in
their kernels.

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/