AMD Zen 2 + Radeon RX 5700 Series For Linux Expectations
This weekend I was out the AMD E3 event learning more about their third-generation Ryzen processors as well as their equally exciting AMD Radeon RX 5700 series Navi hardware. Being at the event, one could reasonably deduce the Linux support will be great and it does appear to be that way building upon their improvements of earlier GPUs and Zen processors. It does appear to be that way while obviously we will begin testing soon of these new processors and graphics cards. At least for the Zen 2 processors, I am confident in their Linux support while on the Navi side we are awaiting Linux driver support but I am optimistic it will work out nicely. Now that the initial embargo has expired, here are more details on these new AMD products launching 7 July and my Linux information at this time.
Zen 2 Looks Very Interesting For A Fast Linux Desktop With Good Value
Zen 2 is a very promising step that's quite a significant leap past Zen+ with offering around 15% better IPC performance, twice the cache size, PCI Express 4.0 support, memory controller improvements, and with the Ryzen 9 3950X brings 16 cores / 32 threads to mainstream. The increasing core/thread counts is always great for thread-happy Linux boxes from compiling your own code/packages to seeing a greater proportion of multi-threaded software compared to the workflow of common Windows users. Zen 2 also brings hardware mitigations for Spectre V2 and V4 (SSBD) rather than having to rely upon the software mitigations like Retpolines. Short story: Zen 2 is bringing meaningful improvements that even from original Zen processors is quite meaningful. Those in all the fine architecture details at length will be able to find numerous articles out today on that topic while my focus, of course, is on the Linux aspect.
The Zen 2 product stack looks quite competitive at this stage and comparatively more cores than current Intel Core CPUs. It will be really interesting though to see how the performance ends up looking if it's as good as the Windows numbers shared by AMD. Less talked about from the stack at the low-end are the Ryyzen 5 3400G and Ryzen 3 3200G as the new APU parts with Vega graphics and based on Zen+, thus no PCIe 4 or other new features of the higher-tier parts. The new APUs will also be shipping on 7 July and those are the only parts where I have reservations about the possible Linux support given the troubles we've had with Raven Ridge APUs but at least most of those issues have been ironed out and the lingering problems appear to remain on the BIOS side. Pricing on the Ryzen 9 3950X isn't yet available and is the only AMD Zen 2 processor of the current portfolio not launching on 7 July but should be out in September.
On the memory front, a new memory controller to Zen 2 allows for native DDR4-3200. DDR4-3733 should be the sweet spot for optimal latency at a reasonable speed while DDR4-5100 speeds should be achievable on air cooling if running with some good DIMMs and don't mind overclocking. These memory improvements make us quite eager for next year's APUs to be based on Zen 2 for hopefully seeing much better graphics performance. Meanwhile at this weekend's event it was confirmed that 7nm+ Zen 3 remains "on track" while Zen 4 is under development.
It was also shared that with the new Windows 10 May 2019 Update when paired with a yet-to-be-released AMD chipset driver there should be improvements to the kernel scheduler compared to what we've seen with earlier Zen CPUs (particularly Threadripper 2) where Linux has well exceeded the Windows performance. I'll be running Windows vs. Linux benchmarks looking at this when that new chipset driver becomes available.
Zen 2 Linux Support Expectations
When it comes to the Zen 2 Linux support, while I haven't yet begun testing these new processors or X570 motherboards (but will be in time for the 7 July launch), I am quite confident that it should be in good standing. As is always the case for new hardware, I recommend switching to a newest Linux kernel as possible but it's looking like the Zen 2 support should be in good shape on any modern Linux distribution. After testing many Zen/Zen+ desktop processors to EPYC server processors extensively, I am not too worried or expecting any Linux difficulties with Zen 2.
One minor item I had reservations about going into this event was over the thermal driver support for temperature monitoring. After all, for the original Zen launch the temperature support was months late, Zen+ wasn't added punctually by AMD and in the case of Threadripper 2 I even ended up having to add the bits myself to the kernel due to this pesky Tctl offset for obtaining the correct temperature reading and AMD not having done that in advance. There weren't any k10temp patches by AMD for Zen 2 so I suspected it to be another pesky situation with either driver changes needed and/or more Tctl offsets needed to be manually added. But this weekend I was pleasantly surprised to find everything should "just work" as with Zen 2 the thermal sensor has been corrected to not require a Tctl offset! Yes! Granted, the temperature monitoring support isn't all that important for conventional desktop users, but just a minor blemish in their Linux support previously and can be important if you are overclocking or otherwise concerned about your thermals. I also raised the issue of no Zen driver for CPU package power monitoring on Linux while similar functionality can be found on Windows; I am awaiting more details if they will release any documentation or even a driver to make that happen. After all, there was the fam15h_power Linux driver back during the Bulldozer days for Linux.
The only other immediate concern I have about the Zen 2 Linux support comes down to the compiler tuning. In GCC 9 and LLVM Clang 8 there is the initial Znver2 target. The Zen 2 target for these compilers brings support for the new CLWD / RDPID / WBNOINVD instructions. But that Znver2 upbringing hadn't revised the cost tables or other tuning for the changes brought by Zen 2. There hasn't been any follow-on tuning/optimizations yet for the Znver2 target and thus likely isn't optimized over Znver1. This is unfortunate since now the next opportunity for better-tuned Znver2 compiler support is in GCC 10 (due out early Q2'2020) and LLVM Clang 9 (September). Granted, the number of users compiling with "-march=native/znver2" is admittedly not super large, but for those Linux users wishing to squeeze maximum performance out of their system could potentially be leaving tiny bits of performance on the table.
With Zen processors (znver1) tuning we've seen that take a while to mature past launch and even still some apparent inefficiencies. But long story short, there is the Znver2 support in GCC 9 and Clang 8, but it might not be in a most optimal state for launch. We'll see when we do our compiler testing but at least this isn't a major concern as it just comes down to tuning and not missing out on any major instruction additions or other changes. But hopefully moving forward AMD can provide more punctual compiler tuning/optimized support for those enthusiasts pursuing optimized builds catered for their CPU.
Beyond that, I don't have any other immediate concerns over the Zen 2 Linux support and should just be a question if the performance lives up to the claims laid out by AMD. If the Threadripper 2 Linux performance relative to Windows is any example for Zen 2, we could be in a real treat.