Re: [patch] softirq performance fixes, cleanups, 2.4.10.

Oleg Nesterov (oleg@tv-sign.ru)
Fri, 28 Sep 2001 06:50:12 +0400


Hello.

Thanks a lot for Your response.

On Fri, Sep 28, 2001 at 04:03:39 +0400, Andrea Arcangeli wrote:
> > @@ -381,26 +380,22 @@
> > #endif
> >
> > current->nice = 19;
> > - schedule();
> > - __set_current_state(TASK_INTERRUPTIBLE);
>
> buggy (check cpus_allowed).

Why? The next three lines is

for (;;) {
schedule();
__set_current_state(TASK_INTERRUPTIBLE);

And if I misunderstand schedule()'s

still_running:
if (!(prev->cpus_allowed & (1UL << this_cpu)))
goto still_running_back;

Ingo's patch was buggy as well.

> you dropped Ingo's optimization (but you resurrected the strictier /proc
> statistics).

Again, I can't understand. The new loop

for (;;) {
schedule();
__set_current_state(TASK_INTERRUPTIBLE);

do {
do_softirq();
if (current->need_resched)
goto preempt;
} while (softirq_pending(cpu));

continue;
preempt:
__set_current_state(TASK_RUNNING);
}

seems to be _equivalent_ to Ingo's ...

What i am missed? I apologize in advance, if it is
something obvious.

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