[Ti] POLL: was "Apple's True Market Share!"

Kynan Shook kshook at mac.com
Sun Dec 15 14:27:24 PST 2002


Luke Mazzeri <etyrnal at ameritech.net> writes:
> i wonder if it would be possible to write code into the kernel that
> would allow 'real time' 'hot swapping' of the cpu ...  i mean that
> while your machine is booted and operating, would it be possible to put
> ONE processor into deep sleep or turn it off? and reactivate it when
> needed?
>
> the machine could (if technologically possible) run on one proc. until
> the primary proc. hit 100% then the 2nd proc. could kick in or 'wake
> up'...

WARNING: The following text is very geekified.  Persons who do not have 
at least mildly geeky inclinations beware; your brain may want to pack 
up shop and leave if you attempt to read the following message...

Well, I'm currently in school learning all about this sort of thing, 
and as far as I know, it should be quite easily done, and is possibly 
done already (though I don't know any examples).  The problem though is 
that running 1 processor at 100% doesn't give you as good performance 
as two at 50%.  Here's a quick rundown of how multitasking works (in 
terms of running multiple applications at once, not multiple CPUs):
Any given processor (with the exception of a few brand new designs that 
try to get around this) can only execute code from one program at a 
time.  This is partly because each program needs registers 
(instantly-available temporary data storage) to store variables, and 
those registers can be used by any program; so to run a different 
program, you have to save all those registers to somewhere (like RAM) 
and then let the next program run for a while.  Then you have to 
determine how to split up the CPU time while running multiple programs: 
OS 9 used cooperative multitasking, meaning that when a program was 
ready to relinquish control, it would tell the OS it was done for a 
while, and the OS would start running the next program.  If a program 
wants to monopolize the CPU, it can certainly do this; everything else 
slows down, but it's how games and Virtual PC and other things can give 
themselves an extra kick.  OS X uses preemptive multitasking.  In this 
scheme, each process gets a fixed block of time to run, and then the OS 
stops it and runs the next program.  Programs can return before their 
time is up if they have nothing to do.  If you toss in a second 
processor in OS X, programs can get time on either processor as they 
need it, so the programs still get the same block of time when they 
run, they just get time twice as frequently.

Anyway, if you run one processor at 100% before kicking in the second 
one, you get a fairly large latency between a program needing to do 
something and having the available resources to run it.  It would be 
better (though I'm not sure if it would be noticeable or not; but it 
would depend on what you're running) to run two processors at 50%.

IMNSHO, the best option (if you can cram two CPUs into something so 
that they don't use too much battery power) would be to have the second 
processor configurable in Energy Saver for battery versus AC settings:  
Allow the user turn one processor off, and additionally turn processor 
cycling on or reduce the clock speed on however many CPUs the user 
wants to be running.

An interesting thing: in OS X, you can actually have one processor 
kernel panic while the other continues normal operation.  The computer 
won't be able to actually handle doing anything, but the CPU is not 
panicked.  Along these same lines, I was once repairing a dual 1-GHz 
PowerMac (I work in an Apple Authorized repair shop), and got a 
computer where the CPUs were running too hot and/or not being cooled 
fast enough.  After running for about 5 minutes, the computer would 
panic, and then it would panic AGAIN.  One CPU would panic first after 
hitting the highest temperature it could handle, then the other CPU 
would do the same.  That was the only time I've ever seen a double 
kernel panic.  In a kernel panic, you can even see which processor is 
panicking; it tells you right at the beginning with either (cpu 0) or 
(cpu 1).  Those of us with single processor machines (should) always 
see cpu 0.


Kynan Shook
kshook at mac.com
http://homepage.mac.com/kshook/index.html



More information about the Titanium mailing list