Site menu:

Sponsored by

Bitcube Ltd.  Expert Linux Consultancy

Categories

Meta

Site search

 

November 2009
M T W T F S S
« Oct   Dec »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Archives

Links:

Underclocking NVIDIA

Recently my desktop has become a little noisier than usual (it is pretty quiet).

After some investigation I found that the cause was the fan on the graphics card.

Using nvclock you can find out (retrospectively only AFAICT) the fan speed, let’s reduce it to 40%:

sudo nvclock -f -F 40
Current fanspeed: 1612 RPM
PWM duty cycle: 60.0%
Changing duty cycle from 60.0 to 40.0
Fanspeed: 1612 RPM
New PWM duty cycle: 60.0

Here we are dropping it from 60% (1612 rpm) to 40%, a bit later we rerun the command and see:

Current fanspeed: 853 RPM
PWM duty cycle: 40.0%
Changing duty cycle from 40.0 to 40.0
Fanspeed: 853 RPM
New PWM duty cycle: 40.0

Great. Now let’s add this to /etc/rc.local and it will work on boot. Rats, it speeds up on resume from suspend, first I tried adding it to /etc/acpi/resume.d, this had no effect – the correct location is in /etc/pm/sleep.d/nvclock (nice name eh?)

#!/bin/sh

# Action script to slow down Nvidia fan to make less noise

if [ ! -x /usr/bin/nvclock ]; then
	exit 0
fi

FAN_SPEED=40

if [ "$1" = "resume" ]; then
  /usr/bin/nvclock -f -F $FAN_SPEED 2>&1 | tee /tmp/nv2
  sleep 30
  echo resumig fan >>/tmp/nv2
  /usr/bin/nvclock -f -F $FAN_SPEED  2>&1 | tee /tmp/nv2 
fi

Now run nvidia-settings and select GPU -> Thermal Monitor. My card was at 97°C – scorching! Fortunately we can do something about this too (at least if you are using the proprietary “nvidia” driver.

Firstly you’ll probably have to enable coolbits. Edit /etc/X11/xorg.conf and check you have a section like this:

Section "Device"
        Identifier      "Nvidia 8800GTS"
        Driver          "nvidia"
        Option          "OnDemandVBlankInterrupts" "True"
        Option          "Coolbits" "1"
        ...
EndSection

“OnDemandVBlankInterrupts” should result in some power savings.

If you aren’t playing games, you can drop the clock rates right down too – GPU -> Clock Frequencies – I’ve set mine all the way down to 128MHz (GPU) and 198MHz (memory). This dropped the temperature from 97°C to 88°C. If the graphics card is producing less heat the other fans in the system also slow down.

The only issue was how to run this on startup and/or resume. Since this talks to the Xserver, you can’t use rc.local and friends, I created a ~/bin/xstartup file instead:

#!/bin/sh

# slow down gfx card:

/usr/bin/nvidia-settings -a GPUOverclockingState=1 -a \
   GPU2DClockFreqs=128,198 -a GPU3DClockFreqs=128,198

Then in Gnome, System -> Preferences -> Startup Applications -> Add (/home/fbloggs/bin/xstartup as the Command).

Thanks to [http://aldeby.org/blog/index.php/nvidia-powermizer-powersaving.html aldeby] for some of this info.