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
- compiling gnome sensors-applet with nVidia support
- HP Pavilion overclock nVidia video card
- Ottimizzazioni per il Risparmio Energetico per portatili HP Pavilion su Ubuntu Linux
- HP Pavilion and the broken nVidia chips affair
Print This Post
|
Email This Post

Great, thanks for informing about PowerMizer!
In this thread: http://ubuntuforums.org/showthread.php?p=5265688 the following is stated:
Hi, I have also the same issue.
All I found in web is PowerMizerLevel option, that only works without power for me:
Code:
Option “RegistryDwords” “PowerMizerLevel=0×3″
there 0×1 is performance, 0×2 balanced and 0×3 powersave.
I don’t know how to change “Performance Mode: Desktop” to something like “throttle”.
That seems to indicate that there is some way to control PowerMizers performance mode. Have you looked into this anywhat?
Also, I see that you have a Power Savings Settings entry for your Geforce 8400M GS card. I have the same card and the latest drivers for Hardy but I can’t see that settings entry. Have you done anything special to make it show?
Thanks man,
Cheers
Glad to see this post has been of some help for you!
The Power Savings Settings entry is obtained with this line in xorg.conf (this is described also here)
Option “OnDemandVBlankInterrupts” “True”basically there is only a checkbox inside enabling you to disable vBlank interrupts, thus reducing by 60 the number of CPU wakeups.
For what concerns PowerMizer it should be already enabled with a ‘throttling’ method. If not you should probably set those strings:
Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3333"Where
PerfLevelSrc=0x3333;stands for autosensing dynamic of frequency.You can also add
PowerMizerLevel=0x2; PowerMizerDefault=0x2; PowerMizerDefaultAC=0x2where 0×2 means medium performance.I tried to gather all power saving info in one place – http://tutanhamon.com.ua/technovodstvo/NVIDIA-UNIX-driver/
Great! You’ve written such an exhaustive post!
Thank you very much for notifying!
[...] information: nVidia PowerMizer powersaving in Linux enable nVidia CoolBits (frequency tuner) NVIDIA™ driver for X.org: performance and power saving [...]
Section "Device"
VendorName "NVIDIA Corporation"
BoardName "GeForce 7600 GS"
Option "NvAGP" "1" #0 123 #"1" agp x8
Option "NoFlip" "1" # flip what ?
Option "Coolbits" "1" #en overcl.
Option "NoLogo" "1" #logo
Option "backingstore" "1" # ?
Option "RenderAccel" "1" # ?
Option "UseEDIDFreqs" "0" #if u wish set manualy freq.for monit
Option "UseEDIDDpi" "0" #if u wish set manualy
Option "UseEDID" "0" #if u wish set manualy
Option "metamodes" "CRT: 1600x1200 +0+0; CRT: 1280x1024 +0+0; CRT: 1024x768 +0+0; CRT: 800x600 +0+0; CRT: 640x480 +0+0" #
hm what else is available ?
maybe someone knows how to set overclocked frequencies at system start-up automatically ?
NoFlip is an option that enables you to actually flip your screen upside down. Its “A Mirror image” not a rotation.
Unfortunately I haven’t figured out how to set persistent clocks. They presumably involve setting the clock frequencies into /etc/X11/xorg.conf but actually cannot give you any specific advice at the moment. I’m sorry.
one more question, with nvidia-setings i sett-up x server color correction, but after every x restart they are reset-ed howto save them for both monitors independently ?
[...] to aldeby for some of this [...]
it seems that the modifications on the xorg.conf work with Karmic 9.10 and nvidia 195.22 (not tried 190). now nvidia-settings reports perfomance level: 0 and 100 Mhz for NV clock and Memory Clock (although it gives Performance Mode: Maximum Performance and clock frequencies tab does not modify the clock even after ‘apply’). I had to do all this because my crappy tx2000 shutsdown if the video chip gets too hot. Let’s see if it helps. BTW never buy HP.
my xorg.conf says:
Section “Device”
Identifier “Device0″
Option “Coolbits” “1″
Option “RegistryDwords” “PowerMizerEnable=0×1; PerfLevelSrc=0×2222; PowerMizerLevel=0×3; PowerMizerDefault=0×3; PowerMizerDefaultAC=0×3″
Driver “nvidia”
Option “NoLogo” “True”
VendorName “NVIDIA Corporation”
EndSection
alfC, thank you for your feedback!
Unfortunately I haven’t clearly undestood what you are referring about.
You mean that after manually setting the GPU&Memory clock they do not reset after reboot? Instead PowerMizer fuctions always stay at Performance level?
Sorry for not being clear. It is difficult to explain, in the PowerMizer tab both
clock speeds appears at 100Mhz everytime I have checked.
So in that sense it works. However in the Clock Frequencies tab,
after I enable Overclocking and moving the slide (in 2D or 3D options)
after I click in the Apply button the slide is reset to the default frequency
100 MHz for 2D and 425MHz for 3D. This also happens if I run nvidia-settings
with sudo.
So, at the end I don’t know if it works or not. At least I have been running
the laptop for several hours without crashes. (before it never lasted more
than 10 minutes).
Is it more clear now?
Thanks for the explanation alfC!
Through this nvidia-settings command line you can check the current frequency values:
nvidia-settings -q GPUCurrentClockFreqsYou can also see the actual settings and much more data with
nvidia-settings -q allHI,
I have a problem running my GPUs (GTX 280M SLI) at their max clocks, it seems that there is no option to force the max power level in Nvidia X-server (195.30 drivers), so regardless of the application/game demands the power level only goes from 0 to 1 ( 275/301MHz). Even if I put maximum performance instead of adaptive it only goes to power level 1…
Would appreciate an advice on this issue.
Thanks,
Aikimox
Thank you for your comment Aikimox,
I’d suggest you to type in the terminal the following command:
nvidia-settings --query allover there you should read the current and maximum frequencies of your graphic card. If you need some help in interpreting the data please contact me. (to directly paste the output to a text file you may typenvidia-settings --query all >> GPUreport.txtCheers!