Trying Out Nouveau GPU Re-Clocking On Linux 3.16
With the Linux 3.16 kernel comes the ability to re-clock select NVIDIA GeForce GPUs when using the open-source, reverse-engineered Nouveau driver. Here's my first impressions with trying out this option to maximize the performance of NVIDIA graphics cards on open-source drivers.
As explained previously, the GPUs where Nouveau in Linux 3.16 will support re-clocking are the NV40, NVAA, and NVE0 GPU series. The NV40 chip family is the GeForce 6 and 7 series. The NVAA series meanwhile is part of the NV50 family but consists of just the GeForce 8100/8200/8300 mobile GPUs / nForce 700a series and 8200M G. NVE0 meanwhile is the most interesting of the bunch and consists of the Kepler (GeForce 600/700 series) GPUs. Re-clocking support for other graphics processor generations is still a work-in-progress.
Compared to the old Nouveau re-clocking support, no special module parameters or other kernel modifications need to be made to enable the re-clocking support. The Nouveau DRM driver will continue to boot into its lowest power/performance state by default, but by writing to a sysfs file you are able to manipulate the performance state manually. When using this experimental support, the power management levels aren't dynamically adjusted based upon load but you manually must increase the performance state to the desired GPU core and memory frequency and lower the state later on, if you wish.
The file that shows the exposed performance states for reading and then writing to is /sys/class/drm/cardX/device/pstate. Each performance state is listed along with the current performance state. For this article I was running tests from a GeForce GTX 760, which showed the 405MHz core default with 648MHz for the video memory and all the performance states up to 405-1202MHz and 6GHz for the video memory.