nVidia PowerMizer powersaving/cooling in Linux (updated)
Driver 169.07 featured some performance enhancements for GeForce 8 series onwards, but above all features the linux port of PowerMizer powersaving feature.
PowerMizer is NVIDIA’s name for the power management features of their hardware, whose primary purpose is adaptive clocking of the core and memory to save power. The current series of NVIDIA drivers for Linux drivers enable these features by default.
PowerMizer regulates transitions between multiple performance levels which each define a set of clock frequencies It currently has three profiles, “Maximum performance”, “Balanced”, and “Maximum battery life”.
This technology works by autosensing the graphics computation requirements and autoadjusting the graphics’ card core and memory frequency, thus providing a noticeable amount of energy saving. Despite being an automated feature you can still tweak it to some extent.
In M$ Windows the NVIDIA control panel is able to adjust the PowerMizer configuration. In Linux, the bundled nvidia-settings utility displays the current clock frequencies and PowerMizer mode, but it does not allow changes (except for latest 190 drivers, although to a very limited extent). The PowerMizer policy is stuck in the default, which is usually “maximum performance”. This may not be preferable for users wishing to conserve power. In particular, running Compiz can cause the clocks to run at the highest frequencies for extended periods of time, even if there is no noticeable performance degradation from running at a lower performance level.
Key Benefits are:
- Extended battery life
- Intelligently adaptation of performance based on a user’s needs so it saves power even when the notebook is plugged into the AC.
- Runs in the background to provide the best balance of performance and battery life (but only uses a 1s wakeup)
- Helps the notebook run cooler and quieter under normal operating conditions by dissipating less heat in the GPU
Working for both desktop and mobile chipsets, this is indeed of more interest for the latter. One additional benefit stands for laptops with somehow defective GPUs (series GeForce 8400 and 8600 mobile) which are particularly sensitive to temperature shifts. More on this here.
UPDATE
drivers 190 onwards available through PPA ppa:nvidia-vdpau/ppa along with new version of nvidia-settings-190 enable you to set either Autosensing or Always Max Performance PowerMizer governor through the NVIDIA X Server Settings applet, PowerMizer tab.
drivers 185 onwards cannot tweak either “Performance level” or “Performance Mode” settings in xorg.conf, user settings are automatically overridden by the driver. Now you can only tune the maximum frequency by hand through CoolBits after enabling it.
drivers up to 180.60 enable you to manually tweak the PowerMizer behavior through xorg.conf registry entries as detailed below. More recent drivers despite not complaining about the strings in xorg.conf do not take into account them at all.
Since in Ubuntu Karmic 9.10 you cannot use nvidia 180 drivers directly (you need to patch the driver in order to be compilable with recent kernels) you have to use nvidia drivers 177, which by the way work pretty well, despite not having CUDA2, latest PureVideo and OpenGL support.
Tweak Nvidia PowerMizer
Setting a few strings in the Xorg configuration file in Ubuntu linux you can permanently tweak nvidia PowerMizer in order to let the GPU always run with the lowest clocks. This would enable you to run a fully functional desktop with Compiz enabled with 3D effects but at the same time preventing Compiz to always activate your graphic card. You would either keep the GPU at a sensibly lower temperature and, most importantly, at a constant temperature. Moreover you would see some battery lifetime increase. The main drawback is that you would actually have a downclocked video card and probably could not run GPU intensive games. This, however, is a small price to pay for not having to replace the entire laptop after a GPU failure.
To achieve this you have to edit your
/etc/X11/xorg.conf
as follows
Section "Device" Identifier "Default Device" Option "Coolbits" "1" Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerLevel=0x3; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x3" Driver "nvidia" Option "NoLogo" "True" EndSection
Lets explain RegistryDWords field:
"PowerMizerEnable=0x1;
enables PowerMizer feature (0×0 would disable it instead). This entry may not be needed since in recent driver versions PowerMizer is enabled by default.
PerfLevelSrc=0x2222;
sets the governor approach. 0×2222 means fixed frequencies for both battery and AC mode.
PowerMizerLevel=0x3;
sets the current mode. 0×3 is the lowest, least power intensive mode.
PowerMizerDefault=0x3;
sets the default level on battery. 0×3 is the lowest, least power intensive mode.
PowerMizerDefaultAC=0x3"
sets the default level while with an AC plug. 0×3 is the lowest, least power intensive mode.
Artem has written a very useful and detailed explanation on the meaning of these and others nvidia registry words here: http://tutanhamon.com.ua/technovodstvo/NVIDIA-UNIX-driver Thanks for contributing!
Additional possible variables are:
- EnableMClkSlowdown
- EnableCoreSlowdown
- EnableNVClkSlowdown
- PerfLevelSrc
- PowerMizerEnable
- PowerMizerDefault
- PowerMizerDefaultAC
- PowerMizerLevel
- PowerMizerHardLevel
- PowerMizerLevelAC
- PowerMizerHardLevelAC
- PowerSaverHsyncOn
Given that the nvidia kernel driver in linux uses an internal windows registry parser to load settings, the xorg driver includes the RegistryDwords and RegistryBinary options. These are all DWORD (32 bit) values. It seems they accept the following syntax Key1=value, multiple keys can be separated with semicolons. Hexadecimal values can use the “0x” (zero ex) prefix. The last value of the string should not have any semicolon on linux.
PowerMizer 7.0 Mobile Technology (specific to NVIDIA GeForce 8M Series of GPUs) delivers numerous mobile power management techniques to manage the power consumption of both the GPU and the entire notebook:- Adaptive clocking and engine gating ensure the GPU is only consuming as much power as is necessary for the task at hand
- The GeForce 8M Series architecture is significantly more power efficient and utilizes the latest advances in chip process technology to achieve this
- Dedicated HD video processor to playback Blu-ray and HD DVD with the highest quality requiring less use of the CPU and thereby extending battery life
- More circuits using lower voltage rails
- More clocking and voltage scaling steps for finer control
- Support for GDDR3 memory at 1.8V
- NVIDIA SmartDimmer™ technology for intelligent, granular display brightness control for maximum battery life.
- ASLM (Active State Link Management) technology for ultra efficient use of the PCI Express link
- Uncompromised power management support for MXM-based notebooks
Even though Intel X3100 chipsets has features somehow similar, I must thank nVidia for putting this effort in developing good linux drivers.
(As many linux supporters I opted in buying nVidia powered laptops for the better support provided to the community, even though no OpenSource code is released yet).
Thoughts must also go to the United Nations awakening campaign for evironmentally aware citizens carried out last autumn. We must take action against environmental threats, saving energy is an important step towards providing a better future for our children.
Related posts:
- nVidia GeForce8 powersaving features
- enable nVidia CoolBits (frequency tuner)
- Linux Power Saving Tweaks for HP Pavilion laptops
- Install nvidia-glx-180 drivers in Ubuntu Karmic 9.10
- compiling gnome sensors-applet with nVidia support
- HP Pavilion overclock nVidia video card
- HP Pavilion and the broken nVidia chips affair
Print This Post
|
Email This Post

[...] but it does cause problems for some users when dynamically switching between clock frequencies). nVidia PowerMizer powersaving/cooling in Linux (updated) | Nobody was Born with Linux Knowledge NVidia Powermizer – how to tweak ?? Reply With Quote + Reply to Thread [...]
Hi everybody! Im in need of a little help. Im using Ubuntu 9.10 in a notebook Dell Vostro 1400. Now to the questions:
1 – Is there a way to change the monitor with nvidia-settings using the command line, not the graphic interface?
2 – Can it change automaticaly when I connect or disconnect an external monitor?
Thanks!