BTRFS vs EXT3 vs EXT4 vs XFS performance on Fedora 17

Written by Gionatan Danti on . Posted in Linux & Unix

User Rating:  / 19

Testbed and methods

Benchmarking filesystems is not an easy task for many reasons:

  • there are endless usage scenarios, each with their specific requirements and usage patterns; 
  • each filesystem has its custom options that can modify its behavior considerably; 
  • different kernel releases can produce different benchmark results. 

So, in order to give you consistent, reproducible results, I had to do some very important choices about the benchmarks, the options and the kernel to use. The benchmark suite is composed of some theoretical and real world test:

  • bonnie++ (version 1.96) is a synthetic test measuring read/write speed and metadata handling; 
  • sysbench (version 0.4.12) is a semi-synthetic test useful to benchmark database performance; 
  • postgresql (version 9.1.3) and mysql (version 5.5.23) are the two benchmarked database systems; 
  • tar/untar and cat are representative of common, real world usage patterns; 
  • finally, filefrag is a very helpful filesystem utility used to evaluate file fragmentation. 

All filesystems where created with default options, using the mkfs. Linux utility. Files fragmentation level was checked after untarring the linux kernel.

  • All test were runs on a Dell D620 laptop. The complete system specifications are: Core2 T7200 CPU @ 2.0 GHz 
  • 4 GB of DDR2-667 RAM 
  • Quadro NVS110 videocard (used in text-only mode) 
  • a Seagate ST980825AS 7200 RPM 80 GB SATA hard disk drive (in IDE compatibility mode, as the D620's BIOS does not support AHCI operation) 
  • O.S. Fedora 17 amd64 with kernel version 3.4.0-1.fc17.x86_64 

The internal hard disk was partitioned into three slices: a first ~9 GB ext4 partition for the root directory, a second ~4 GB partition for the swap file and a third ~60 GB partition (mounted on /opt) for testing purposes. CPU frequency/voltage scaling was disabled and the system was used in text-only mode (no X running here). All benchmarked services (basically postgresql and mysql) were reconfigured to store their data into the 60 GB testing partition mounted on /opt.

UPDATE 2012/06/20: I foget to mention that, apart for write barriers (which were manually enabled, though Fedora should automatically enable them), all mount options were left at their default settings.


#1 Roger 2012-06-20 00:40
Could you share with us the mount options used to mount the file systems for these benchmarks?
#2 Gionatan Danti 2012-06-20 08:00
Hi Roger,
apart the write barriers option (which was manually enabled on all filesystems, ext3 included) I left the default mount options at their default settings.

To tell the truth, Fedora enable barriers by default on ext3 also; however, this is a Fedora-specific change that not all distributions followed (apart SuSe, I think).

The rationale behind this decision to not mess with mount options is that, as default settings are the most used settings, they _must_ be adequate; the failure to set them to reasonable default will affect many users.

On the other hand, write barriers should really be enabled to do an apple-to-apple comparison, so it is the only option I wish to manually enable.

#3 Oliver 2012-07-15 14:57
From official fedora documentation, Fedora 17 features the 3.3.4 Linux kernel [1].

However, I read on the first page of this article [2] the use of Fedora 17 3.4.x kernel branch.

I may be wrong (I do not use Fedora) but please explain where have you find this Linux kernel version within Fedora 17.

PS: I like article of this high quality, thanks ;)


#4 Gionatan Danti 2012-07-15 16:39
Hi Oliver,
you are right: F17 base image ships with kernel version 3.3.x.

However, a yum update resulted in kernel 3.4.x being installed, so I tested with this updated kernel release.

See here also:

#5 Oliver 2012-07-15 22:44

OK I see "F16 and F17 will be rebased around the time 3.4.1 is released" on the bottom of the page.

You have no rights to post comments