On Fri Jul  1 13:06:36 EDT 2011, [email protected] wrote:
> in pc/main.c idlehands() the kernel decides to release the CPU only
> when you are not running a multicore kernel. As a result there is only
> busy waiting. Unfortunately there is no hint telling why we do not let
> the CPU rest a little.
> 
> > void
> > idlehands(void)
> > {
> >     if(conf.nmach == 1)
> >             halt();
> > }
> 
> I am running a mostly idle plan9 VM on my laptop and it causes the
> battery to discharge in no time. Right now my kernel has the condition
> commented out and it seems to work fine. Still i would like
> to understand why this condition was put there. It is probably causing a
> lot of energy to be wasted which should better be for a good reason.

right!  this is an interesting problem.

suppose that i have a multicore machine and all maches
have executed halt().  then, if i get an interrupt on one that
causes a proc to be ready, then i have to wait until the next
clock tick to sched() it on any other core.  this is going to be a
huge performance hit, especially if you are using a 100hz clock
as the distribution does.  for me a potential latency on the order
of 1-10ms is not going to cut it.

there are a number of potential solutions to this that i'd like to
try, but i haven't had any time yet.

- erik

Reply via email to