EXT4 & Btrfs Regressions In Linux 2.6.36
Recently when benchmarking the Btrfs and EXT4 file-systems we were left surprised that the performance of the next-generation Btrfs file-system had regressed against EXT4 to the point where the evolutionary file-system is measurably faster in a greater number of disk benchmarks. In fact, even with solid-state drives and Btrfs offering an SSD optimized mode, it still conceded to EXT4. It turns out that in the Linux 2.6.35 kernel, Btrfs regressed. This regression should have been fixed with the Linux 2.6.36 kernel, but recently when benchmarking EXT4/Btrfs against ZFS-FUSE on a 2.6.36 development snapshot we found its performance to still be poor for Btrfs compared to EXT4. To confirm where these two most prominent Linux file-systems are at right now, we have new EXT4 and Btrfs performance results from the Linux 2.6.34, 2.6.35, and 2.6.36-rc3 kernels.
The EXT4/Btrfs benchmarking on the three latest major kernel releases was done with an OCZ Vertex 2 60GB SSD found in our test rig containing an Intel Core i7 920 CPU overclocked to 3.60GHz, an ASRock X58 SuperComputer, 3GB of DDR3 system memory, and an ATI Radeon HD 4670 graphics card. Ubuntu 10.04.1 LTS was used with GNOME 2.30.2, X.Org Server 1.7.6, xf86-video-ati 6.13.0, GCC 4.4.3, and the three kernels were obtained from the Ubuntu Mainline Kernel PPA.
Tests for looking at EXT4/Btrfs regressions in the mainline Linux kernel were Apache, PostgreSQL, PostMark, SQLite, Gzip, Unpack Linux, Compile Bench, Flexible IO Tester, and Threaded I/O Tester. Obviously, this testing was managed through the Phoronix Test Suite.
The Linux 2.6.35 kernel actually brought performance improvements for our Apache web server benchmark in both the EXT4 and Btrfs file-systems, but with the Linux 2.6.36 kernel the performance did regress atop this Intel Core i7 system. Though as both file-systems regressed in Linux 2.6.36 by roughly the same measure, the regression may be in a more common layer of the kernel and not specific to a particular file-system module. Between Linux 2.6.35 and where we are at now in the Linux 2.6.36 cycle, this is a performance drop of more than 10%.
With the PostgreSQL server benchmark, there was another regression between the Linux 2.6.35 and 2.6.36 kernels that affected both EXT4 and Btrfs.
There was not much of a change in the PostMark performance between the 2.6.34 and 2.6.35 kernels for either EXT4 or Btrfs, but with the Linux 2.6.36-rc3 kernel the performance has fallen significantly. The EXT4 performance is down by 33% and Btrfs is down by 40%.