Posted in Miscellaneous
My work computer is a 15" MacBook Pro. Its performance is definitely good enough for serious software development, even if the Scala compiler and the IntelliJ indexer do push it at times. In fact, performance is so good that I have been wondering how Apple and Intel have managed to get that much CPU power, and the requisite cooling, into such a small machine. That is, small when compared to desktop or workstation computers.
In contrast, my Hackintosh at home now has about 800g of metal hanging off the mainboard to cool the CPU. Granted, it is overclocked, which requires disproportionally more cooling, and it is about 50% faster than the MacBook but, still, I found it surprising just how much less cooling the MacBook seems to need.
I was reminded of my thoughts recently when I created some statistical models on the MacBook using the H2O software package. This package uses some clever optimisations to maximise throughput and, consequenly, stresses the CPU more than most other software. It certainly made the fans in the MacBook spin up, reaching over 6000rpm. Was that enough, though?
To answer this question it is necessary to understand the language around Intel's CPUs. The CPU in my MacBook has a nominal frequency of 2.2GHz, and that is what is shown in the About this Mac panel. Intel and Apple also refer to a Turbo Boost with “up to 3.4GHz”, leaving a wide range of possible CPU speeds. Without going into too much detail, the maximum frequency is only used when the workload requires just one CPU core. When two or more cores are needed (the CPU has four), it is clocked to a maximum of 3.3 and 3.2GHz respectively.
Of course, H2O is written so that it uses all cores effectively and therefore the expectation could be that the CPU is clocked at 3.2GHz while the calculations are running. There is another constraint for the turbo modes, though: heat. When the CPU hits the maximum allowed temperature, a staggering 100°C in the case of the CPU used in the MacBook Pro, the frequency is reduced to keep the temperature under the limit. With a sufficient cooling system the CPU never reaches its maximum temperature and can therefore deliver its full performance.
To see what is actually going on I used Intel's Power Gadget application. The screeshot shows what happens when the calculation is started. Immediately, the frequency shoots up to 3.2GHz and the temperature jumps 80°C. Over the next minute the frequency remains stable at 3.2GHz while the temperature steadily climbs to 100°C. When it reaces that point (circelled in the picture), the frequency drops and from then on hovers around 3.0GHz. So, the CPU was producing more heat than the cooling system could dissipate and, consequently, it was throttled down. Or in other words, if Apple had designed a more powerful cooling system, my calculations would be finished more quickly.
In all fairness, the reduction was only 0.2GHz compared to the expected speed and about 12% compared to the advertised “up to” speed. The CPU was still running much faster than the nominal speed. And, of course, the whole system is designed so that no damage can occur even when the cooling system can't quite keep up.
It is still a little disappointing to know, though, that the cooling system is a limiting factor for the performance of the MacBook Pro. If Apple can design asymmetric fan blades to make the fans sound better, which I do appreciate by the way, could they not have made them a bit more powerful? And how much of an issue is that with the top-of-the-line model that has a faster CPU than the MacBook I have?