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

From: Oleg Nesterov (oleg@tv-sign.ru)
Date: Thu Sep 27 2001 - 21:50:12 EST


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/



This archive was generated by hypermail 2b29 : Sun Sep 30 2001 - 21:01:00 EST