Lessons from the Macbook Throttling Kerfuffle
If you buy the 2018 Macbook Pro, and run a workload that’s demanding on both the CPU and GPU, CPU performance drops below the quoted clock speed. Conversely, if the GPU isn’t being used, and only one CPU core is being used, that core can Turbo to a higher frequency than the base speed, like 4.1Ghz for the 2.2Ghz one.
What does this mean? What lessons can we take from this incident?
First, treat the quoted Ghz speed with a grain of salt. I never pay more for a faster CPU, since little of my work is CPU bound, and we get to the point of diminishing returns, paying (tens of) thousands of rupees for a few minutes saved, which isn’t worth it unless you earn millions for every day of work [1].
Second, benchmarks should all test sustained performance, not just burst performance. Some do test, but don’t report it prominently. That also needs to change, so that readers are able to make better choices, which is the point of reading the review to begin with. Many of the “iPhone X is faster than the Macbook Pro” articles would go away, or become toned down, if people realised that it’s true only for a short period of time, and the the iPhone X CPU may not be able to replace your laptop CPU.
Third, when you choose a CPU upgrade, you should get a message like “This will be faster for most people, unless you run a sustained workload for 30 minutes or longer”. Again, that lets buyers choose what’s best for them. People running bursty workloads will confidently upgrade, rather than just opting for the cheapest CPU, like me, because this choosing a CPU is too intractable even for geeks. And those who primarily care about sustained workloads won’t, and save money. Everyone wins. Being honest also builds trust, resulting in more loyal users, a better reputation, and more sales, while making people spend money and not give them what they think they’ve paid for destroys trust.
Fourth, you should have the option of downgrading the CPU to one that can maintain its maximum Turbo speed, not just its base clock speed, under any sustained workload [2], even if the GPU is also fully loaded. In other words, the cooling system should never be a bottleneck.
As CPUs and GPUs have become more power-hungry and laptops have become thinner and lighter, the cooling system is no longer powerful enough to simultaneously run all components at full power for a sustained period of time. The solution that has been adopted is to just accept this as a reality. But there’s another solution, an obvious one, which is to use a less power-hungry CPU that can run at full Turbo Boost continuously, even if the GPU and other components are running at full power. Such a CPU will also be cheaper, and will result in better battery life.
For example, the 15-inch Macbook Pro has a cooling system that can dissipate around 45W of heat, and so a processor that can generate this much heat. But when the GPU is loaded, it has to be cooled as well, so the processor now has insufficient cooling capacity, which means it has to throttle down. But Apple should’ve given 15-inch Macbook Pro buyers the option of downgrading from the 45W 6-core CU to the 15W dual-core CPU used in the 13-inch Macbook Pro. Then the 40W of available cooling can probably let the 15W CPU run in Turbo for a sustained period of time, even if the GPU and other components are also running at the same time. If this is not the case, offer a further downgrade, say to the 7W CPU used in the Surface Pro. This is a fanless CPU, but fanless CPUs run faster with a fan.
Ignoring all the technical details and taking a step back, if I’m considering buying a high-end dishwasher that cleans dishes especially well, but consumes lots of energy to do so, and so can’t clean dishes any better than a normal dishwasher when the AC is also running, I would very much want the option of paying less for a normal dishwasher.
Just because I want a big screen for productivity doesn’t mean I want to pay a fortune for a fast 6-core processor. Having a low-end option also encourages software developers to optimise their apps more, which benefits battery life and performance for all devices, not just low-power ones. In an ideal world, developers would optimise their apps as much as possible, because it’s the right thing to do. In the real world, they first test it out, and if it works fast enough, they leave it alone, because there are always dozens of other tasks to do, and insufficient time to do them all. Complaining about it doesn’t change things, any more than the old “Why should Microsoft Office take 100MB of disk space?” laments changed the status quo. What does cause change is changing developers’ incentives, by making every laptop model available with a downgrade to a cheaper, less powerful CPU, forcing them to optimise, and letting users save money.
The default for the 15-inch Macbook Pro can still be the 6-core CPU. The downgrade needn’t be selected by default. Users will have to select it, and they can get a warning like “Some apps will work slower with this option”. That way, offering the downgrade as an option doesn’t hurt buyers who aren’t technically savvy enough.
In fact, talking of downgrading, I should be able to downgrade my 15-inch Macbook Pro’s CPU to the A11 used in the iPhone X. Its single-core performance is faster than many Macs, and with the cooling system of a laptop, it should be able to sustain that performance longer, or run even faster. The A11 is estimated to cost just $30, compared to $280 for the 7W Intel CPU used in the Surface Pro, to say nothing of $400 for the 6-core processor used in the cheapest version of the 15-inch Macbook Pro. Macbooks will be much more affordable.
Apple should update macOS to support universal binary apps that consist of both ARM and Intel code, with the appropriate version being selected at runtime, for optimal performance on both architectures. There’ll be emulation for legacy Intel apps. In particular, I’m not talking about an iOS laptop with a walled garden, which I wouldn’t buy, but macOS, with all its freedoms, on ARM.
In fact, Apple already sells Macs with ARM processors, like the T2. Apple could let these processors run apps that have been compiled for ARM. After all, it’s an A10 CPU, which means iPhone 7-class performance. Since laptop CPUs run at low utilisation most of the time, the T2 can let the main Intel CPU remain asleep most of the time, prolonging battery life. Background services can opt in to being pinned to the ARM CPU, again to increase battery life. If not the T2, Apple should certainly enable this on the T3, built using the forthcoming A12. And, as I mentioned, Apple can give users the option of forgoing the separate Intel CPU.
[1] Even then, you can use the break to plan out your next steps, multitask, check your phone, or get up for a few seconds, which is good for your health.
[2] That is, not created for the purpose of benchmarking.