Try this stress test to reveal thermal throttling:
- Run Intel Power Gadget to watch sustained power/pkg (watts) under load
- Run iStat menus with breakdowns enabled for CPU menu to watch for kernel_task (red/system usage) blocking the CPU
- Run `pmset -g thermlog` to see when `CPU_Speed_Limit` drops below 100 (thermal throttling)
- Load the GPU by running Luxmark 3.1 stress test (GPUs only) on the internal display only for 5-10 minutes. This will probably raise fans to max and you might see some mild kernel_task blocking (5-20%) even though the CPU is doing almost nothing else. You may see the CPU frequency drop slightly below base.
- Do some light work (open a few apps, do some browsing, open a project in VS Code, etc.) You might see some more kernel_task blocking.
- Load the CPU by running Cinebench R20 (in addition to still running Luxmark) and configure a minimum duration of 86400 seconds (1 day) in preferences to force multiple passes. Let it run for 5-10 minutes also. You may see a little more kernel_task blocking.
- Connect an external display. If its a 4K display, configure it in low-DPI mode. E.g. opt-click on "scaled" to reveal resolutions, then check "Show low resolution modes", then choose "2560x1440 (low resolution)" (for a 27"). Let it run for 5-10 minutes. You might see more kernel_task blocking.
- If using a 4K external display, change its resolution to "looks like 2560x1440" (scaled). Let it run for 5-10 minutes. You might see more kernel_task blocking.
Also, try all of the above with a 1-1 discord video chat going to create some contention with Luxmark for the GPU.
At some point in the process, you'll probably hit the thermal limit and see massive kernel_task blocking (1000% here on an 8-core 2019 MBP) and drastically reduced CPU frequency (800MHz here).
This is extreme abuse, but I see the same result under what I consider normal usage. A few browsers open, a few terminal windows, a few projects in VS Code, Slack, a Discord or Zoom video chat, and a 4K "looks like 2560x1440" external display attached. Usually after being in the video chat for a while (maybe half an hour).
With just the external 4K display attached and just a 1-1 video chat running, and no other apps or activity, I see the fans ramp up to max in about 5-10 minutes.
My iMac can run all of the above indefinitely (at least an hour) with Intel Power Gadget reporting very flat and stable CPU frequency of 4GHz (with a 3.6GHz CPU) and very flat and stable power draw, temp, and utilisation.
I would expect that no matter what I throw at the MBP, it should find a stable point where it can maintain a consistent level of performance. I'm not expecting it to be as fast as an iMac, but I expect it to be consistent (like the iMac) and ideally close to the CPUs base frequency.
Sure, run my programs slower when there is contention for CPU and GPU resources. Sure, don't boost the CPU when temperatures are high. But don't ever drop down to 800MHz and 1000% kernel_task blocking. It seems obvious that the cooling capacity of the system is completely overwhelmed by the combined heat output of the loaded CPU and GPU.
I wonder if Apple's diagnostics (which this machine passes with nothing to report) only test the CPU and GPU separately, not together. Is the cooling solution built to sustain the CPU/iGPU OR dGPU under load, but not BOTH?
Does anyone have a better clear testing process that I can run to quickly demonstrate the problem to convey that the system is both 1) working as designed (not a manufacturing defect, replacing the logic board won't help); and 2) unusable for even light CPU workloads when the GPU is under load, and the GPU is under load with just a 4K display and 1-1 video chat running.
PS: Even though I have a 2019 MBP, I'm interested to know if the worst result from the same process on a 16" MBP i9 is similar, or if the improved cooling system is able to sustain a usable frequency and power draw even at max fans and high temp. I don't really care that much about the heat and noise, as long as the system is still running at a consistent level.