Hubertus Franke <[EMAIL PROTECTED]> writes:

>Try this ... this will guarantee that (p->counter) > (current->counter)
>and it seems not as radical

>         p->counter = (current->counter + 1) >> 1;
>        current->counter = (current->counter - 1) >> 1;
>        if (!current->counter)
>                current->need_resched = 1;

>instead of this


>-       p->counter = (current->counter + 1) >> 1;
>-       current->counter >>= 1;
>-       if (!current->counter)
>-               current->need_resched = 1;
>+       p->counter = current->counter;
>+       current->counter = 0;
>+       current->need_resched = 1;


        No.  I tried your change and also tried it with setting
current->need_resched to 1 in all cases, and it still seems to run the
parent first in at least half of the tries.  Evidently,
current->counter must be zero to make the currently running process
give up the CPU immediately, which is the important thing (so that the
parent does not touch its virtual memory for a while).

Adam J. Richter     __     ______________   4880 Stevens Creek Blvd, Suite 104
[EMAIL PROTECTED]     \ /                  San Jose, California 95129-1034
+1 408 261-6630         | g g d r a s i l   United States of America
fax +1 408 261-6631      "Free Software For The Rest Of Us."


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

Reply via email to