What Linux Users Need To Know When Holiday Shopping For PC Hardware
If you plan to upgrade your Linux desktop hardware in the near future or will be shopping for new PC hardware this holiday season, here's a few words of advice on recommended components and manufacturers to go with for the best Linux hardware experience.
Based upon my Linux hardware encounters in running Phoronix the past eight and a half years, dealing with hundreds of different hardware components during this time, written hundreds of Linux hardware reviews, and written hundreds more articles on the state of Linux hardware support, driver compatibility / tweaking, etc, here's a random collection of purchasing thoughts I have for those that may be looking towards a Christmas PC upgrade.
Let's begin with one of the most contested areas of Linux hardware support and that's graphics cards / GPUs. If you don't mind using binary drivers, generally Linux desktop users are most happy with NVIDIA GeForce graphics processors. The NVIDIA binary Linux drivers tend to "just work" and are very well supported by NVIDIA's Unix/Linux development staff. There are rarely any serious complaints about the NVIDIA Linux graphics driver while as of late the AMD Catalyst driver seems to be getting back into a regressed state. There's still many out there that are completely content with the AMD Catalyst driver as it does work just fine a majority of the time, but there's still a number of less than desirable points.
In terms of my complaints about the NVIDIA Linux driver, it's mostly limited these days to there not being any CoolBits/overclocking support on modern GeForce 400 "Fermi" graphics cards and newer, including the very latest GeForce 600 Kepler graphics cards. This is unlikely to change anytime soon. The only other big sore point for NVIDIA's binary Linux driver is that it doesn't support NVIDIA Optimus technology for multi-GPU notebooks, but right now the NVIDIA Linux developers have their hands tied to a large extent since they're being prevented from using DMA-BUF to share buffers with the open-source graphics drivers, i.e. Intel integrated graphics.
With the binary drivers, as long as you're buying a modern GPU -- on the AMD side a Radeon HD 5000 graphics card or newer and for NVIDIA any GeForce 9+ GPU -- you should be in good shape where there is at least Linux support available. As far as using open-source drivers for graphics cards, that is still much of a minefield. Most GPUs are now supported by an open-source driver, but there's a variety of missing features, areas of lackluster performance, and numerous other limitations. If you are an open-source zealot, your only real option comes down to using an Intel GPU. Intel continues to only back an open-source driver stack and it's quite good. Their hardware isn't the best if you're a gamer, but if you get a latest-generation "Ivy Bridge" processor the support and performance is quite good on any modern Linux distribution. Intel has been making significant investments into their open-source Linux driver with slowly but surely catching up on OpenGL support, filling in missing functionality under Linux, and optimizing the performance of their driver -- especially with Valve's Source Engine on Linux.
Intel has the most compelling open-source Linux graphics driver. If you are after building an HTPC / media center Linux PC, Intel also works very well especially as they're the only open-source driver providing GPU-based hardware-accelerated video playback via the VA-API interface. The open-source AMD and NVIDIA drivers don't tap the Unified Video Decoder and PureVideo engines, respectively, for video accelerated decode/encode but rather are limited to using GPU shaders. One of the few Intel driver complaints is that they don't yet have an open-source OpenCL stack for interacting with the modern Intel graphics cores.
AMD's open-source driver keeps many Linux desktop users happy, but it's not without a number of limitations. AMD has a very small staff devoted to the open-source driver while the rest of the work is left to the community. Among the problems are no multi-GPU/CrossFire support, its performance is much slower than Catalyst, there is no UVD video encode/decode functionality, less than ideal power management, OpenCL support is still a work-in-progress, re-clocking can be less than ideal, and there's various other random missing features like some of the more advanced anti-aliasing methods. If you are biased towards AMD hardware though, you're best off with a Radeon HD 5000/6000 series graphics card as where you will currently find the best level of support. The newest AMD hardware, the Radeon HD 7000 series, is still not good on open-source even though the GPUs have been on the market for nearly one year.
On the NVIDIA side there is no official open-source support but the Nouveau project tries its best at reverse engineering and coming up with the best driver they can with their limited resources. Even after years of active work, using the Nouveau driver can still be like a game of Russian Roulette. Regressions are still quite common -- even for older NVIDIA GPUs in fundamental areas like mode-setting -- and one of the big problems with this open-source driver is that it still lacks "out of the box" re-clocking support. The Nouveau performance could be much better if it could successfully re-clock the GPU core, shader, and memory frequencies, but it's hit-or-miss depending upon whether it works when manually engaging in the re-clocking or if your system will become unstable/locked-up. They're moving closer to proper re-clocking, but we're not there yet so many NVIDIA GeForce graphics cards are crippled in this respect.
The Nouveau driver developers have managed GeForce 600 Kepler support, but it's still not fully enabled and also cannot be re-clocked yet. If you want NVIDIA hardware on the open-source Nouveau driver, generally the best support is found with the older GeForce 9 graphics cards assuming the particular GPU isn't bitten by any active regressions.