Why is my MacBook Pro 5,1 getting so hot under Linux?

2009-03-26 01:17:00 by Saz

I'm running ArchLinux for some time on my MacBook Pro, but since I've installed ArchLinux, my MacBook Pro keeps getting hotter than under Mac OS X. Today I've installed the proprietary driver from NVidia. And now? My MacBook Pro is almost as cool as running Mac OS X. Except if I'm doing a lot of stuff using OpenGL. But why? I think it has to do with power management inside Nvidia driver. If you run nvidia-settings, there is an entry "Thermal Monitor". You can see the current core temperature of your GPU. Now run glxgears and you will see, that the temperature is getting hotter and hotter. Another entry is called "PowerMizer". There you'll see the GPU and memory clock. If you're still running glxgears, it will be at the highest level (on my system 500 MHz GPU, 792 MHz memory). Try stopping glxgears and wait a few seconds. The temperature is going down from about 80°C to 65°C in about 15 seconds, the GPU and memory speed is at the lowest level (169 MHz and 100 MHz). Less performance, less heat, less battery usage. Isn't it nice? I think Mac OS X is using the same technology. And the best: on my MacBook Pro the hottest section was on the left between keyboard and display. Now it's a lot cooler, not as cool as running Mac OS X, but Mac OS X is using the Nvidia 9400M GPU, which isn't available running Linux (maybe you're able to use both GPUs if you boot using EFI? I don't know). If nvidia driver is able to change the frequency of GPU and memory, can I set it from "Maximum Performance" to "Maximum Powersave" or something like that? Sure. Nvidia driver is changing the frequency as needed. But if you want to have maximum battery life, you can set an option in xorg.conf. You're able to set three different modes:

mode=1 - Maximum performance
mode=2 - Balanced
mode=3 - Maximum power saving

You can also set different modes for running on battery and AC:

0x[Battery source strategy][AC source strategy]

This will set the mode to powersaving on battery and adaptive on AC:

"PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3"

To set this mode, add the following line to your device section in xorg.conf:

Option “RegistryDwords” “PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3"

If you want, you can enable another option entry in nvidia-settings for choosing the frequency by adding another line to the Screen section of your xorg.conf:

Option “Coolbits” “1″

More information:

nVidia PowerMizer powersaving in Linux enable nVidia CoolBits (frequency tuner) NVIDIA™ driver for X.org: performance and power saving hints


Fork me on GitHub