Reading The Clocks With Nouveau's New PM/Re-Clocking
If you have checked out drm-next since yesterday when Nouveau received new re-clocking and power management code that's still experimental but brings initial support for Fermi and Kepler GPUs, you may have noticed the disappearance of the performance_level sysfs.
Up to now for reading the Nouveau GPU core and memory clock speeds, it's been handled from the command-line via /sys/class/drm/card0/device/performance_level. For more details on that current support see my original Nouveau re-clocking article. With Linux 3.13 and later for this new PM/re-clocking code that handles the modern GeForce 400/500/600/700 series hardware, the performance_level sysfs has been replaced by /sys/class/drm/card0/device/pstate. The structure is different but all of the performance states are now displayed via this single file rather than being spread out across multiple performance_level_* files.
As now shown by the Nouveau driver, the boot clock speeds for the GeForce GTX 680 "Kepler" GPU is 324 MHz and 324MHz for the video memory, which is a long shot from the 1006MHz base frequency (or 1058MHz Boost), which explains why the Nouveau driver is so slow compared to the binary driver.
Unfortunately in Linux 3.13 this new re-clocking support is still very unreliable for GPU memory re-clocking so the newer NVIDIA graphics cards are still severely handicapped for at least another Linux kernel cycle. Even if the re-clocking is improved for Linux 3.14, it still will likely be disabled by default until widespread testing has occurred. At least with 3.13 we now have automatic fan-speed controls by default.
If you are an Ubuntu Linux user and curious to see what happens if you run your NVIDIA GeForce graphics card with the Nouveau kernel driver code to be merged in Linux 3.13, the easiest way to do is by trying out the drm-next mainline kernel packages. If you are a Phoronix Test Suite user, the latest Git code today now supports reading of the Nouveau clock information from the new pstate sysfs file. Sadly this is yet another example of open-source driver design fragmentation with there still being no uniform way for reading/setting GPU clock speeds and other attributes between the different open-source drivers and even multiple ways for a given driver.
Stay tuned for more Nouveau Linux 3.13 information in the coming days as the merge window officially opens.
Up to now for reading the Nouveau GPU core and memory clock speeds, it's been handled from the command-line via /sys/class/drm/card0/device/performance_level. For more details on that current support see my original Nouveau re-clocking article. With Linux 3.13 and later for this new PM/re-clocking code that handles the modern GeForce 400/500/600/700 series hardware, the performance_level sysfs has been replaced by /sys/class/drm/card0/device/pstate. The structure is different but all of the performance states are now displayed via this single file rather than being spread out across multiple performance_level_* files.
As now shown by the Nouveau driver, the boot clock speeds for the GeForce GTX 680 "Kepler" GPU is 324 MHz and 324MHz for the video memory, which is a long shot from the 1006MHz base frequency (or 1058MHz Boost), which explains why the Nouveau driver is so slow compared to the binary driver.
Unfortunately in Linux 3.13 this new re-clocking support is still very unreliable for GPU memory re-clocking so the newer NVIDIA graphics cards are still severely handicapped for at least another Linux kernel cycle. Even if the re-clocking is improved for Linux 3.14, it still will likely be disabled by default until widespread testing has occurred. At least with 3.13 we now have automatic fan-speed controls by default.
If you are an Ubuntu Linux user and curious to see what happens if you run your NVIDIA GeForce graphics card with the Nouveau kernel driver code to be merged in Linux 3.13, the easiest way to do is by trying out the drm-next mainline kernel packages. If you are a Phoronix Test Suite user, the latest Git code today now supports reading of the Nouveau clock information from the new pstate sysfs file. Sadly this is yet another example of open-source driver design fragmentation with there still being no uniform way for reading/setting GPU clock speeds and other attributes between the different open-source drivers and even multiple ways for a given driver.
Stay tuned for more Nouveau Linux 3.13 information in the coming days as the merge window officially opens.
1 Comment