With the EXT4 file-system being marked as stable in the forthcoming Linux 2.6.28 kernel, and some Linux distributions potentially switching to it as an interim step until the btrfs file-system is ready, we decided it was time to benchmark this journaled file-system for ourselves. We ran a number of disk-centric Linux benchmarks along with several of our real-world tests from the Phoronix Test Suite to gauge how well the EXT4 file-system performance will be noticed by desktop users and computer gamers. We have compared these EXT4 results to the EXT3, XFS, and ReiserFS file-systems.
For those that have yet to read about the EXT4 file-system, it has several advantages over its predecessor, EXT3, but it's more along the lines of just an update and not a complete overhaul. In fact, EXT4 is both forward and backwards compatible with EXT3. One of the major differences between EXT4 and EXT3 (and EXT2 for that matter) is the introduction of Extents. The Extents feature replaces block mapping, which is designed to improve performance with the creation of larger files, and will reduce fragmentation on the hard disk. Extents are similarly used within Reiser4, XFS, and Apple's HFS+. Some of the other features for EXT4 include delayed allocation, persistent pre-allocation, and journal check summing. The EXT4 file-system supports partition sizes up to 1 Exabyte and up to 640,000 sub-directories per directory.
While the EXT4 file-system was marked as "ext4dev" within the kernel to signify its development status, Red Hat has been shipping EXT4 as an install-time option since Fedora 9. This support has continued into Fedora 10 with the newest kernel components. When installing Fedora, to create an EXT4 file-system you must append "ext4" to the boot line when starting the Anaconda installer. Beyond the Fedora option, EXT4 has yet to find itself as an option in many distribution installers.
For our testing we had compared the performance of the EXT3, EXT4, XFS, and ReiserFS file-systems. We had done standard installs of Fedora 10 x86_64 and each time we went without using a Logical Volume Manager and the SWAP size was constant at 4GB. Fedora 10 was reinstalled each time and we had just changed the default / file-system to what was being tested and let that occupy the remaining disk space. All file-systems were left with their defaults, which does include the use of Extents on EXT4. Fedora 10 was left at its defaults except for disabling SELinux. The Serial ATA hard drive was using AHCI mode.
Our test system was made up of dual Intel Xeon E5320 Quad-Core "Clovertown" processors, Tyan Tempest i5400XT motherboard, 2GB of Kingston DDR2 FB-DIMM RAM, a 160GB Western Digital WD1600YS-01SHB1 hard drive, and a ASUS GeForce 9600GT 512MB graphics card. Recapping the software defaults in Fedora 10 x86_64 is the Linux 2.6.27 kernel, X Server 1.5.3, GNOME 2.24.1, GCC 4.3.2, and IcedTea 1.3.1. The NVIDIA driver we were using for the GeForce 9600GT was NVIDIA 180.08.
To automate all of our benchmarking we had used Phoronix Test Suite 1.6.0 Alpha 2. The real-world tests we carried out within there was Nexuiz, World of Padman, Unreal Tournament 2004, 7-Zip compression, Parallel BZIP2 compression, LZMA compression, LAME MP3 encoding, FFmpeg encoding, GnuPG file encryption, OpenSSL, and Bork File Encrypter. The pure disk tests we were using from the Phoronix Test Suite included Bonnie++, IOzone, and Flexible IO Tester. On the following pages are our EXT4 benchmarking results starting with the disk tests and proceeding to the real-world Linux EXT4 benchmarks.