With MeeGo using Btrfs by default, Canonical making plans for Btrfs in as soon as Ubuntu 10.10, and Novell now pushing Btrfs in openSUSE, among other milestones for this advanced Linux file-system, we decided to see where the Btrfs performance is now at with the Linux 2.6.35 kernel that's currently in development. We compare the Btrfs performance to EXT4 and see how some of the different mount options are affecting the file-system's performance in different benchmarks.
We have been benchmarking the Btrfs file-system for more than one year now and while it originally was not the performance king, its performance has improved as we have been delivering many benchmarks and compared it to competitors such as Reiser4. Just two months ago we delivered file-system benchmarks with the Linux 2.6.34 kernel, but with the Linux 2.6.35 kernel carrying more file-system changes and this is going to be the Ubuntu 10.10 kernel, we found it time for another extensive Btrfs performance analysis.
For testing we used a ZaReason Verix notebook that we are currently reviewing. This notebook that is based upon an MSI MS-1656 has an Intel Core i7 Q720 processor, 6GB of system memory, an 80GB Intel SSDSA2MH08 SSD, and a NVIDIA GeForce GTS 250M GPU. We loaded Ubuntu 10.04 LTS on this powerful notebook with the Linux 2.6.35-rc1 kernel while continuing to use X.Org Server 1.7.6, GCC 4.4.3, and the GNOME 2.30.0 desktop.
We compared the performance of the EXT4 file-system with the default mount options to Btrfs also with the default mount options. We then also tested out Btrfs with the compress mount option and then the compress mount option when using the nodatacow option too. The nodatacow option makes Btrfs not copy-on-write data where as the default settings does not allow partially updated files written to the disk for data safety, but with this option makes it like EXT4 where data can be directly overwritten. The SSD mount option is not needed when using a solid-state drive as Btrfs automatically detected that an SSD was being used and enabled this option by default for providing SSD-optimized behaviors.
Our EXT4/Btrfs file-system benchmarks on the Linux 2.6.35 kernel included Apache, PostgreSQL, CompileBench, FS-Mark, Flexible IO Tester, IOzone, Dbench, Threaded I/O Tester, and PostMark. The Phoronix Test Suite handled the automated test execution.
The EXT4 file-system is still much faster than Btrfs at simple static web-page serving using Apache. The EXT4 file-system could handle more than 12,600 requests per second but with Btrfs and the different mount options Apache was only doing just over 400 requests per second.