That definitely seems incorrect to me. Since rebalance is only called
on mach0, as it loops through the global run queue, it will skip
processes that are not on mach0, so I think you are correct. (This was
fixed on the mqs version of the nix scheduler; every mach calls
rebalance to take care of their respective run queues.)

On Sun, Nov 30, 2014 at 11:28 AM, erik quanstrom <[email protected]> wrote:
> rebalance(void)
> {
> ...
>                 if(p->mp != MACHP(m->machno))
>                         continue;
>
> since p->mp != nil for forked processes, and rebalance is only called
> on mach0, only processes on mach0 get rebalanced, for a 8 core system,
> that should be ~1/8 of them.
>
> this is so amazingly wrong, i can't help but wonder if i've missed
> something?
>
> (by the way, the old nix code didn't rebalance anything,
> unless it was on the first scheduler.)
>
> - erik
>

Reply via email to