Btrfs v0.19 Brings Some Gains, Some Losses

Since we began benchmarking Btrfs
a few months ago we have found it to not deliver any spectacular file-system performance
results on Linux. This next-generation Linux file-system that has often been compared
to Sun's ZFS has not really performed that well, granted it's still very much under development. Btrfs is far from being the
performance king and even its
SSD mode has had little positive effect. Just weeks ago we delivered EXT4,
Btrfs, and NILFS2 benchmarks, but now there is a new release of Btrfs available.
Committed to the Linux
2.6.31 kernel was Btrfs v0.19. Does this release bring any performance improvements?
Yes and no.

The Btrfs v0.19 notes mention, "In general, v0.19 is a dramatic
speed improvement over v0.18 in almost every workload." One of the key changes
in this new development release is the file-system has changed the way that extent
back references are recorded, and this new way should be significantly more efficient.
As a sign that this new file-system is still not yet stabilized, there is a forward-rolling
format change where kernels using the older version of Btrfs will be unable to
read partitions created under this newer version of Btrfs. Btrfs v0.19 is the
first major update to this open-source file-system since January when Btrfs v0.18
was merged
into the mainline kernel. This new version is available beginning with Linux
2.6.31-rc1. For our testing we were using Btrfs with the Linux
2.6.31-rc2 kernel, which was the latest release at the time of conducting
these tests. With the new kernel we also used version 0.19 of the btrfs tools.

On the software side we were using an Ubuntu 9.10 snapshot with
GNOME 2.27.3, X Server 1.6.2 RC1, xf86-video-nv 2.1.13, and GCC 4.4.0. When testing
out Btrfs v0.18 we were using the Linux 2.6.30 final kernel while during our Btrfs
v0.19 testing we switched to using Linux 2.6.31-rc2.

All tests were managed through the Phoronix Test Suite
and they consisted of Parallel BZIP2 Compression, Bork File Encrypter, IOzone,
Threaded I/O Tester, and PostMark. During testing the OS and file-systems were
left with their stock settings.