When using an external monitor, does a mid-2015 Retina Macbook Pro with only integrated graphics run cooler than one with discrete graphics?

I have a MacBook Pro (Retina, 15-inch, Mid 2015) with both discrete (AMD Radeon R9 M370X) and integrated (Intel Iris Pro) graphics. When this machine is connected to an external display, I find that the keyboard gets uncomfortably hot even when doing very light work, and it gets annoyingly hot when doing anything heavier like compiling code.

I know that attaching an external display forces use of the discrete graphics adapter because the HDMI port and DisplayPort are hard-wired to that adapter. Unplugging the external monitor brings temperatures reported by the sensors down, and subjectively brings the keyboard back to "body temperature warm" instead of "annoyingly hot". A drop in temperature is observable even when the discrete graphics remain in use but only the external monitor is disconnected.

I can see why the graphics processor uses more power and creates more heat when driving multiple displays, but my question is the following: does the equivalent machine with only integrated graphics show the same magnitude of heat increase when using an external monitor? Presumably the integrated Iris graphics will also get hotter when driving multiple displays, but will it get this much hotter?

I don't have an Iris-only model around to compare, so I will supply some measurements from iStat Menus, and hopefully someone with the Iris-only config can take equivalent measurements. I will report the "left fin stack" and "CPU PECI die" temperatures, which react quite visibly to the use of an external monitor. All temperatures are measured with very low CPU activity, with any open applications essentially idling.

With a 1920x1080 display connected in a room climate controlled to a temperature of 25C, the left fin stack (LFS) is 51C and the CPU is 61C. A few minutes after disconnecting the display, LFS is 40C and CPU is 49C. After plugging the external monitor back in for a few minutes, LFS rises back up to 52C and CPU to 62C. The fans remained at around 2000RPM throughout the measurement process. So put simply, I get around a 10C increase in LFS and CPU temperature purely from plugging in an external monitor via HDMI.

The LFS temperature as reported in iStat Menus shows a nice smooth exponential rise and fall as one would expect: LFS temperature graph

Thanks in advance to anyone who can supply the other half of the information needed to answer this question!


Solution 1:

The short answer appears to be: yes, 12 degrees C (22 degrees F) or more cooler.

I got ahold of a custom-build Macbook Pro that has identical specifications except that it had no discrete graphics adapter. I set it up on the same table in the same room, connected to an identical monitor. I put both of them through the same sequence of operations, using yes > /dev/null & one or more times to occupy whole processor cores, running WebGL demos, plugging and unplugging monitors, etc. in lockstep. Temperatures, fan speeds, and CPU use were observed regularly using iStat menus, yielding 120 separate observations. Using the R statistical package I fit some models to these data and retained this one for the "left fin stack" temperature:

> summary(fin_fit)

Call:
lm(formula = fin_temp ~ dgpu + ext_disp + cpu_load + gpu_load,
    data = heat)

Residuals:
     Min       1Q   Median       3Q      Max
-12.1091  -2.8460  -0.2888   2.5413  12.1540

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  32.8460     0.7066  46.484  < 2e-16 ***
dgpu         12.2631     0.8067  15.202  < 2e-16 ***
ext_disp      2.4160     0.7836   3.083  0.00256 **
cpu_load      3.4386     0.4173   8.240 3.11e-13 ***
gpu_load     14.0506     1.2601  11.151  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.138 on 115 degrees of freedom
Multiple R-squared:  0.821, Adjusted R-squared:  0.8148
F-statistic: 131.9 on 4 and 115 DF,  p-value: < 2.2e-16

Interpretation: This model explains about 82% of the temperature variation. The base operating temperature is about 33C, every fully occupied CPU core adds about 3.4C, a fully occupied GPU adds about 14C, each external display attached adds about 2.4C, and using a discrete GPU adds about 12C. All of these variables are very significant in explaining temperature variations, and the model as a whole is quite effective at predicting temperature.

There is an apparent jump of 10 watts or more in power consumption when using the DGPU and an external monitor. This would be coherent with the extra heat, but I did not fit a model for this response variable.

I expect the fin heat model would fit even better if I excluded all observations that happened shortly after a change of state (change in CPU or GPU usage, change in presence of external monitor). There’s some amount of thermal inertia - it takes a minute for the heat sinks to warm up or cool down.

test bench

Conclusion: On the stock Macbook with a discrete graphics adapter hard-wired to the external monitor ports, from a temperature perspective attaching an external monitor has greater impact than performing heavy computations. The fans become audible frequently under load, and the keyboard can get uncomfortably hot. On the other hand, when using the model with no discrete GPU, the fans remain quieter and temperatures more moderate, as attaching an external monitor yields only a slight increase in base temperature.

Other observations: the dual-GPU model will also enter and remain stuck in discrete GPU mode when it doesn't really need high performance graphics, which can discharge the battery very quickly and cause unnecessary heat. At one point in my testing after unplugging the external monitor, it became stuck in DGPU mode. The activity monitor reported that this was due to the Terminal application requiring accelerated graphics (!).

Coming out of sleep with a monitor attached or switching on an already-attached monitor, the monitor often seems not to be detected or used by the OS. GPU switching seems to add a lot of complexity and be susceptible to glitches.