Our final test was running FS-Mark with 5000 files, 1MB size, and using four threads. EXT3 was again the fastest at 114 files/sec while XFS was in second at 38 files/sec. EXT4, ReiserFS, and Btrfs all ran at 26~28 files/sec.
While the EXT3 file-system has been in the mainline Linux kernel since 2001 and work started on it back in the late 90's, this mature file-system (that used to be the default for most Linux distributions up until this year when more vendors began adopting EXT4) is still running strong with the Linux 2.6.32 kernel. In fact, after the recent EXT4 changes, EXT3 by default is faster than EXT4 in many of our disk benchmarks. While EXT3 may be faster than EXT4 in many tests, this newer file-system still has the advantages of supporting larger volumes (up to one Exbibyte) and file sizes up to 16 Tebibytes, uses extents to replace block mapping in EXT3, support for persistent pre-allocation, delayed allocation, online defragmentation, faster file-system checking, and a multi-block allocator. EXT4 is widely regarded as just an interim step until Btrfs is ready to become the de facto standard Linux file-system, which continues to advance as is seen from the Linux 2.6.32 kernel work that improves the performance and implements new features. Compared to earlier file-system benchmarks, with our Linux 2.6.32 file-system tests Btrfs is outperforming EXT4 in more areas. In fact, in six of the tests the Btrfs file-system came out ahead of EXT4. EXT3 though did end up outperforming Btrfs in a number of the tests at this time.
Again, this testing was looking at the file-system performance when each file-system was left to its default mount options. EXT4 could be mounted in a way that it would not suffer as many performance penalties (at the risk of data being potentially lost in a crash) and the other file-systems can be tuned as well, but we will save that tuning and mount option testing for another article. Stay tuned to Phoronix though as the EXT4 performance is set to get even worse later with the Linux 2.6.33 kernel, which we will talk about later this week.