How to keep the GPU (and CPU) cooler

From ALT Linux Wiki
Revision as of 12:08, 29 December 2013 by Imz (talk | contribs) (my experience)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


nouveau errors co-occur with high temperatures (seen from journalctl), therefore, as an experiment, I want to try to keep the GPU cool (and see whether the errors will stop occuring).

My graphical errors lead to almost complete freezing of X (say, during Skype calls).

My system is ALT p7 with linux 3.10.21-std-def-alt1 on an HP laptop.

   # lspci | fgrep -i vga
   02:00.0 VGA compatible controller: NVIDIA Corporation C77 [GeForce 8200M G] (rev a2)
   # 

Keep the Nvidia GPU cooler

By reading documentation on the web and by experiments, I have found out that setting the threshold temperatures (in sysfs) to lower values does cause the GPU to become cooler!

Current temperatures (and the threshold values except for "fanboost") are shown by sensors command.

I use sysfsutils package for setting the values in sysfs on boot.

   #
   # /etc/sysfs.conf - Configuration file for setting sysfs attributes.
   #
   # (temperature is in millidegrees)
   # "fanboost"; default: 90 degrees C
   class/drm/card0/device/hwmon/hwmon0/temp1_auto_point1_temp = 85000
   # "downclock"; default: 95
   class/drm/card0/device/hwmon/hwmon0/temp1_max = 83000
   # "critical"; default: 105
   class/drm/card0/device/hwmon/hwmon0/temp1_crit = 95000
   # "emergency"; default: 135
   # class/drm/card0/device/hwmon/hwmon0/temp1_emergency = 135000

"downclock" seems to bring most effect. Because I want the fan to be silent sometimes, and "fanboost" turned out not to be a really effective way to cool down the GPU, I raised the "fanboost" threshold above the "downclock" threshold (unlike in the default settings).

And keep the CPU cooler

The heat from CPU goes to GPU, too, therefore cooling down the GPU without cooling down some really high CPU temperatures is not effective.

I do not know yet of a similar downclock-policy setting mechanism for CPU which would be based on temperature thresholds, therefore I simply use the brute force of a governor.

I'm unhappy that it will active all the time though. Usually I'm happy with the "ondemend" governor, and only when the temperature rises, I want to scale down...

TODO: find out how to do this!

   #
   # /etc/sysfs.conf - Configuration file for setting sysfs attributes.
   #
   devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave
   devices/system/cpu/cpu1/cpufreq/scaling_governor = powersave