Re-Clocking Your NVIDIA GPU With Nouveau On Linux 3.17

Written by Michael Larabel in Nouveau on 28 August 2014 at 05:54 AM EDT. 4 Comments
NOUVEAU
If you are trying to re-clock your NVIDIA GPU with the Nouveau driver when using the Linux 3.17 kernel, there's an extra step involved, but still your mileage may vary and the re-clocking is still mostly for Kepler GPUs.

With the Nouveau driver changes for Linux 3.17 there are no magic breakthroughs when it comes to re-clocking -- allowing the GPU's core and memory clocks to run at their rated frequencies and voltages rather than any (often much lower) values programmed by the video BIOS at boot time. With Linux 3.17 came re-clocking for Kepler GPUs and now it works, but generally not all performance levels/states properly function. If you are running a GeForce 400/500 "Fermi" GPU or other generations of NVIDIA hardware aside from the few integrated mobile chipsets, chances are you're out of luck in being able to tap the full potential of the GPU when using this open-source, reverse-engineered NVIDIA GPU.


When using the Linux 3.17 kernel there's no huge differences in the support and the how-to guide for re-clocking the GPU with Nouveau I outlined a few months back in Trying Out Nouveau GPU Re-Clocking On Linux 3.16. The re-clocking steps already changed once before back with the original Nouveau re-clocking code before the rewrite, but with Linux 3.17 there's now a minor difference compared to Linux 3.16.

Before trying my earlier steps, the new step to carry out right away is setting the nouveau.pstate=1 kernel module parameter. Without loading Nouveau that way or adding that string to your GRUB2 configuration, the performance state sysfs file isn't being shown. The reading/setting of the performance levels is currently (since Linux 3.16) done via the /sys/class/drm/card0/device/pstate file but with Linux 3.17 this file won't show up by default.


Ben Skeggs' commit message for the change reads, "drm/nouveau: hide sysfs pstate file behind an option again - No-one has yet had time to move this to debugfs as discussed during the last merge window. Until this happens, hide the option to make it clear it's not going to be here forever." So the sysfs file is no longer being shown by default since it really didn't belong there to begin with and compatibility will break regardless, so for now it's hidden behind the pstate module parameter before it's moved over to debugfs.


After exposing the pstate file, re-clocking for Kepler GPUs should be just like it was on Linux 3.16. In my tests on the different GeForce 600/700 GPUs, I'm still only hitting around the 0a performance level (a mid-range state) while anything higher is causing the system to hang or major corruption issues. While we can hope for improvements or expanded re-clocking for Linux 3.18, chances are there won't be any miracle with the drm-next-3.18 window closing in a few weeks, but there are outstanding patches for re-clocking improvements for select GPUs.


An example of Kepler re-clocking gone wrong with Nouveau on Linux 3.17.

Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week