Yesterday I published benchmarks showing the AMD Radeon graphics being much faster on Linux 3.12. Ten graphics cards were benchmarked and many of them were showing rather remarkable OpenGL frame-rate performance improvements when moving from the Linux 3.11 to Linux 3.12 Git kernel. This large comparison came after benchmarks I did this weekend on a single Radeon HD graphics card showed the Linux 3.12 kernel delivering the best performance of any recent kernel release. The only thing was, this AMD Radeon performance improvement baffled the upstream developers. The AMD developers were taken off-guard and didn't have an explanation why the Linux 3.12 kernel performance is faster... Now thanks to automated testing and bisecting by the Phoronix Test Suite, I have an answer.
The benchmarks shown of AMD Radeon GPUs on Linux 3.12 for mid and high-end GPUs ranged from being just over 10% faster in some OpenGL games while other Linux games were nearly 90% faster! These performance changes took AMD's Alex Deucher and others by surprise with no immediate explanation. It wasn't the ring clean-up or blitting changes that were merged into the Radeon DRM driver... Alex thought it might have been due to GART changes, but that didn't end up being the case either after I carried out some additional tests. Many Phoronix readers and Linux enthusiasts also had no immediate idea why the Radeon performance was faster while others speculated it may be due to a CPU code change or other subsystem work. Others in the Phoronix Forums also carried out their own AMD Radeon tests and were able to confirm my findings independently.
These AMD Radeon performance improvements were also there while the AMD APU performance appears unaffected (at least for an E-350), Ivy Bridge graphics don't appear to have changed, and then Intel Core i7 Haswell results also went unchanged across all tested subsystems (including Iris Pro graphics) except for some file-system performance changes. So what's with the Linux 3.12 Radeon performance changes?
As I wrote in yesterday's 10-way Radeon GPU kernel comparison, "As Phoronix.com is entirely funded by advertisements and site subscriptions, please disable AdBlock when viewing this site and/or please subscribe to Phoronix Premium or consider a PayPal contribution. All of this testing is done single-handedly by myself while writing literally thousands of articles per year for Phoronix. Just the testing for today's article ended up being twenty hours of work between Saturday and Sunday to complete this massive comparison and was my unexpected way to spend the weekend, on top of my usual seven-day-per-week workload. Your support and donations are appreciated to continue this work especially considering how tough it is for Linux sites. Beyond that, AMD hasn't even been sending out hardware samples lately for Linux testing so the recent AMD GPUs I've actually had to purchase retail." Thankfully in response to that PSA, there are lots of open-source graphics driver fans that came through this time.
With a number of new Phoronix Premium subscribers and several PayPal tips on Monday, I devoted all of the day to finding the underlying cause of the Radeon Linux 3.12 performance change. As I also noted in yesterday's article, the kernel bisecting process can be easily automated in finding performance regressions. The Phoronix Test Suite has been called into action more than once for finding high-profile Linux kernel problems, most notably with the major Linux kernel power regression I focused much on in 2011.
It's bisecting time! Made easy by the Phoronix Test Suite...
So with the power of open-source automated testing and benchmarking by the Phoronix Test Suite, the software and I set out to find the Linux kernel commit that's causing the Radeon OpenGL performance to be up significantly for many GPUs on Linux 3.12. After hours of kernel rebuilds and Linux gaming benchmarks, it found...