Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
One week after delivering updated Radeon Gallium3D vs. AMD Catalyst benchmarks on Ubuntu Linux, we have to share this morning similar results for the open-source and reverse-engineered "Nouveau" Linux graphics driver compared to the proprietary NVIDIA Linux graphics driver. While the Nouveau driver has come a long way and does support the latest Fermi and Kepler GPUs, it's not without its share of shortcomings. Eleven NVIDIA GeForce graphics cards were used in this latest Phoronix comparison.
As highlighted numerous times now, one of the biggest issues with the Nouveau driver is the current lack of proper re-clocking support: in other words, allowing the graphics card's GPU core, shader, and memory clocks change. With modern NVIDIA (and AMD/Intel) GPUs, there's multiple power/performance states so the frequencies and voltages can drop for less demanding workloads. The frequencies/voltages set by the hardware's video BIOS at boot time is often in one of these lower states. For the Nouveau driver right now, it continues to use the frequencies that were programmed by the video BIOS at the time of hardware initialization. For most modern GPUs, these frequencies are dramatically lower than what's the hardware advertised to run at, which is costly when it comes to the OpenGL performance.
Nouveau's state of re-clocking is mixed. It can make the open-source driver more competitive against NVIDIA's binary driver, but the re-clocking support is hit-or-miss depending upon the hardware generation. There is presently no mainline Nouveau re-clocking support for the GeForce 400/500 "Fermi" or GeForce 600 "Kepler" hardware out of NVIDIA in recent years. When it comes to earlier generations, no hardware is being re-clocked by default, but many GPUs can be re-clocked when booting the kernel with a special parameter and then writing a value to a special sysfs file -- it's far from streamlined or being user-friendly at this point. (Attempting re-clocking is covered in this article.)
For older generations of NVIDIA GPUs, the re-clocking issues often comes down to memory re-clocking gone wrong where there is then stability problems, on-screen artifacts, or other problems. Re-clocking support also mandates good power management support within Nouveau since if the GPU clocks and voltages are ramped up but the fan speed remains low, the graphics hardware could potentially overheat or in worst case be damaged. The power/fan management concerns have been one of the reasons why Nouveau developers don't enable "out of the box" re-clocking right now.
So long story short, one of the major inhibitors to the Nouveau driver from competing with the NVIDIA driver is that at the moment it can't easily program the hardware to run at the graphics card's correct frequencies. With the testing in this article, testing was done with a stock Nouveau setup for each graphics card and then also when attempting to re-clock the GPU to run at its rated speeds. On the benchmark results on the following pages, the re-clocked frequencies for GPUs where it was successful -- i.e. no stability issues or visible artifacts -- are indicated as the "Open-Source Maxed" results. On the graphs, the "Maxed" results only difference is with the GPU re-clocking,
The graphics cards used for this latest Nouveau vs. NVIDIA Linux OpenGL performance testing were a GeForce 8500GT, 8800GT, 9500GT, 9600GSO, 9800GT, 9800GTX, GT 220, GT 240, GT 520, GTX 550 Ti, and GTX 680 graphics cards.