Re: Linux 2.4.17-pre5

Mike Kravetz (kravetz@us.ibm.com)
Sun, 9 Dec 2001 14:44:33 -0800


On Sun, Dec 09, 2001 at 04:24:59PM +0000, Alan Cox wrote:
> I'm currently using the following rule in wake up
>
> if(current->mm->runnable > 0) /* One already running ? */
> cpu = current->mm->last_cpu;
> else
> cpu = idle_cpu();
> else
> cpu = cpu_num[fast_fl1(runnable_set)]
>
> that is
> If we are running threads with this mm on a cpu throw them at the
> same core
> If there is an idle CPU use it
> Take the mask of currently executing priority levels, find the last
> set bit (lowest pri) being executed, and look up a cpu running at
> that priority
>
> Then the idle stealing code will do the rest of the balancing, but at least
> it converges towards each mm living on one cpu core.

This implies that the idle loop will poll looking for work to do.
Is that correct? Davide's scheduler also does this. I believe
the current default idle loop (at least for i386) does as little
as possible and stops execting instructions. Comments in the code
mention power consumption. Should we be concerned with this?

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