I read the thread about down-clocking to 1.2ghz under thermal load, installed a program to monitor the *actual* core speed, and saw exactly what was going on.
I think this is a software tuning problem. Apple was in a rush to get the Air out and decided to err on the side of stability rather than performance. This is probably the right decision, but it doesn't mean that us hackers can't do a little custom tuning ourselves to get the Air to perform a little better.
So I installed CoolBook:
http://www.coolbook.se/CoolBook.html
It costs $10 for the version that lets you tune, so I coughed it up and started tuning.
First, if you don't know what undervolting is, it's basically the inverse of overclocking. When you overclock you are boosting the clock speed (and often the voltage) to pump up your chip closer to its *real* performance cutoff, often using bigger heatsinks and such to dissipate the extra heat. When you undervolt you're going for the bottom end of your chip's voltage/speed stability curve. Undervolting does *not* slow down the chip, but can make it unstable if you go too low just like overclocking can make it unstable if you go too high.
CoolBook allows you to tune the processor's voltage and speed throttling settings. Be careful about heat here, since it also allows you to ease back on the thermal throttling. (Of course, I think at 100C the chip will do emergency core shutdowns so you're probably fairly safe.)
CoolBook is nice, but it has an absolutely awful user interface. The "add" button also updates existing entries, and if you delete the 800mhz by accident you have to hit "default" to restore the factory default settings to get it back.
So it took me a few hours to get it right. Each chip may be different, so your mileage may vary. Here are my settings:
On adaptor:
1200MHz: 0.9750V
1400MHz: 0.9875V
1600MHz: 0.9875V
On battery:
800MHz: 0.9000V
1200MHz: 0.9750V
1400MHz: 0.9875V
1600MHz: 0.9875V
Thermal limit: 85C (the max)
Throttling level: high
(The throttling level seems to be how often the system checks and re-adjusts the frequency. Higher is more often.)
The factory default for 1.6ghz is 1.15V, so this is substantially lower... and boy does it make a difference! Also notice that I deleted the 800mhz entry for adaptor mode. I found that this made the machine a little snapper, and this entry is for battery saving. I left the entry in for battery.
(If you wanted you could remove the higher speeds in battery mode with CoolBook and probably get better battery life at the expense of speed while on battery. If I were on a long flight I might remove everything but 800mhz, especially if I was just going to be typing. 800mhz is fast enough to watch movies, word process, code, and pretty much most other routine stuff.)
If you don't know what these entries mean, this is the chip's throttling curve. When it's not heavily loaded, it throttles down to the bottom to save power and heat. When it is heavily loaded, it throttles up to max unless the thermal limit is tripped. In this case, it throttles down a notch until the temp is under control.
At these voltages, I get 1.6ghz consistently when on internal monitor only and as long as I don't block the rear vent for too long. With an external monitor connected, it bumps the limit and throttles down but only after many minutes of sustained maximum CPU load... and not for long. It'll bump down to 1.2 for a few seconds and then back up to 1.4 and 1.6 to hover around 85C. I bet if I were to better elevate the machine I could get it to sustain 1.6ghz continuously with a monitor connected.
It runs a *lot* cooler!
CoolBook will let you turn thermal limit off, and this allowed 1.6ghz to be sustained forever with an external monitor (of course). However, seeing the chip reach 92C makes me nervous so I turned it back to 85C. (100C is the chip's emergency shutdown level, but 90+ is uncomfortably hot for my taste. I wish CoolBook had a 90C option though.)
Getting these settings required some trial and error. First I set everything to 0.9V, but I got instability. So I edged the curve up until my machine seemed stable even when doing fourier transforms and other abusive things.
Be aware: the instability you get with undervolting (and overclocking as veterans know) can be weird. It can include: application crashes, funky screen corruption, slowdowns / system becoming un-responsive, and kernel panics of course. If you experience any of these symptoms where you haven't before, edge up your voltages a bit.
So you brave souls can give this a try. I bet it'll improve battery life too.
Epilogue: since I fixed it with software, Apple could probably fix the Air's heat/performance issues with an update. However, doing this would be *very* risky as the undervolting ability of chips varies. Like I said, Apple clearly chose to err on the side of stability. This is a good choice for them, since most users of the Air aren't performance-hungry but would be very irked about crashes. But it does seem to me that they could get away with tuning this a *little bit* (less agressively than me) and probably make the egregious things like core shutdowns go away.
I think this is a software tuning problem. Apple was in a rush to get the Air out and decided to err on the side of stability rather than performance. This is probably the right decision, but it doesn't mean that us hackers can't do a little custom tuning ourselves to get the Air to perform a little better.
So I installed CoolBook:
http://www.coolbook.se/CoolBook.html
It costs $10 for the version that lets you tune, so I coughed it up and started tuning.
First, if you don't know what undervolting is, it's basically the inverse of overclocking. When you overclock you are boosting the clock speed (and often the voltage) to pump up your chip closer to its *real* performance cutoff, often using bigger heatsinks and such to dissipate the extra heat. When you undervolt you're going for the bottom end of your chip's voltage/speed stability curve. Undervolting does *not* slow down the chip, but can make it unstable if you go too low just like overclocking can make it unstable if you go too high.
CoolBook allows you to tune the processor's voltage and speed throttling settings. Be careful about heat here, since it also allows you to ease back on the thermal throttling. (Of course, I think at 100C the chip will do emergency core shutdowns so you're probably fairly safe.)
CoolBook is nice, but it has an absolutely awful user interface. The "add" button also updates existing entries, and if you delete the 800mhz by accident you have to hit "default" to restore the factory default settings to get it back.
So it took me a few hours to get it right. Each chip may be different, so your mileage may vary. Here are my settings:
On adaptor:
1200MHz: 0.9750V
1400MHz: 0.9875V
1600MHz: 0.9875V
On battery:
800MHz: 0.9000V
1200MHz: 0.9750V
1400MHz: 0.9875V
1600MHz: 0.9875V
Thermal limit: 85C (the max)
Throttling level: high
(The throttling level seems to be how often the system checks and re-adjusts the frequency. Higher is more often.)
The factory default for 1.6ghz is 1.15V, so this is substantially lower... and boy does it make a difference! Also notice that I deleted the 800mhz entry for adaptor mode. I found that this made the machine a little snapper, and this entry is for battery saving. I left the entry in for battery.
(If you wanted you could remove the higher speeds in battery mode with CoolBook and probably get better battery life at the expense of speed while on battery. If I were on a long flight I might remove everything but 800mhz, especially if I was just going to be typing. 800mhz is fast enough to watch movies, word process, code, and pretty much most other routine stuff.)
If you don't know what these entries mean, this is the chip's throttling curve. When it's not heavily loaded, it throttles down to the bottom to save power and heat. When it is heavily loaded, it throttles up to max unless the thermal limit is tripped. In this case, it throttles down a notch until the temp is under control.
At these voltages, I get 1.6ghz consistently when on internal monitor only and as long as I don't block the rear vent for too long. With an external monitor connected, it bumps the limit and throttles down but only after many minutes of sustained maximum CPU load... and not for long. It'll bump down to 1.2 for a few seconds and then back up to 1.4 and 1.6 to hover around 85C. I bet if I were to better elevate the machine I could get it to sustain 1.6ghz continuously with a monitor connected.
It runs a *lot* cooler!
CoolBook will let you turn thermal limit off, and this allowed 1.6ghz to be sustained forever with an external monitor (of course). However, seeing the chip reach 92C makes me nervous so I turned it back to 85C. (100C is the chip's emergency shutdown level, but 90+ is uncomfortably hot for my taste. I wish CoolBook had a 90C option though.)
Getting these settings required some trial and error. First I set everything to 0.9V, but I got instability. So I edged the curve up until my machine seemed stable even when doing fourier transforms and other abusive things.
Be aware: the instability you get with undervolting (and overclocking as veterans know) can be weird. It can include: application crashes, funky screen corruption, slowdowns / system becoming un-responsive, and kernel panics of course. If you experience any of these symptoms where you haven't before, edge up your voltages a bit.
So you brave souls can give this a try. I bet it'll improve battery life too.
Epilogue: since I fixed it with software, Apple could probably fix the Air's heat/performance issues with an update. However, doing this would be *very* risky as the undervolting ability of chips varies. Like I said, Apple clearly chose to err on the side of stability. This is a good choice for them, since most users of the Air aren't performance-hungry but would be very irked about crashes. But it does seem to me that they could get away with tuning this a *little bit* (less agressively than me) and probably make the egregious things like core shutdowns go away.