BTRFS vs EXT3 vs EXT4 vs XFS performance on Fedora 17

Written by Gionatan Danti on . Posted in Linux & Unix

User Rating:  / 19

Postgresql performance

Postgresql is another widely adopted open souce database system. It has an historical focus on correctness and scalability over pure speed. How todays heroes will perform with it?

First, lets examine the time needed to create a test database and populate it with 100K rows:

BTRFS EXT3 EXT4 XFS: Sysbench postgresql prepare time

Again btrfs is very slow. On the other hand, EXT4 is the leader.

BTRFS EXT3 EXT4 XFS: Sysbench postgresql simple benchmark

In this simple read-only test all filesystems perform quite well, but ext3 is noticeably slower. Will the complex, read-write test change anything?

BTRFS EXT3 EXT4 XFS: Sysbench postgresql complex benchmark

Yes! EXT4 now is the leader now, with EXT3 in the second place. XFS badly performs, but it remain faster then BTRFS.

It's time to compare Sysbench results with pgbench ones. First, lets see how much time is needed to create a test database with scale factor set to 100:

BTRFS EXT3 EXT4 XFS: Pgbench prepare time

XFS is the slower now, while EXT4 continue to be the faster.

It is time of real pgbench performance results now:

BTRFS EXT3 EXT4 XFS: Pgbench benchmark

Again we see that ext4 is, by far, the true leader, but this time BTRFS secure a unexpected second place, right before ext3. XFS is the slower here.

So, what filesystem is the best for a postgresql workload? From the above results, it appear that you simply can not go wrong with EXT4.


#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