sd performance tests, bonnie++ with different filesystems.

Gennady Kupava gb at bsdmn.com
Thu Jun 24 13:57:30 CEST 2010


Hi, list.

Unexpectedly, seems it's time for me to repartition my sd card.

So i decided to find which filesystem is best for current kernels, and
to share my results as this topic should be interesting to everyone who
is using sd card as storage for data.

The participants - btrfs nilfs2 ext2 ext3 ext4 reiserfs jfs xfs.

The old well-know test is bonnie++.

Resulting html table, with 2 runs:
http://www.bsdmn.com/openmoko/fstest/fstestresults.html

The test script:
http://www.bsdmn.com/openmoko/fstest/fsbench.sh

Results are really hard to interpret, all filesystems has weak and
strong sides, but i'll try to do some summary now, for whoose who is
interested.

1. sequental io, this is quite rare now, so not really matter.
1.1 sequental output per char
reiser, btrfs is non-usable in this respect. ext3 is close to unusable,
xfs is almost ok. all others same. 
1.2. sequental input per char
all almost the same - latency +-25%, expect btrfs, which is 30% slower
and have extraoridinary latencies. xfs is not good at speed too.

2. block io, most important thing.
2.1 8k blocks write
here is most surprise - ext4 and ext2 are slowest. almost 50% slower
than xfs, jfs. ext3 have outstandingly bad latency.
2.2 most important thing for fs - block read.
they all the same, except btrfs, which is much slower.
2.3. rewrite
all almost same, expect btrfs and ext3.

3. random seeks.
it's seek+read or write. useful operation. only test where btrfs is
relatively good in performance.

4. create/delete tests
1. Create (random)
great difference here, ext2, ext4, xfs, are bad. ext3, btrfs, reiser
5-10 times better.
2. delete (random)
ext2,ext3,ext4,reiser,btrfs are good, jfs and xfs 10 times slower.

my conclusion here is that good filesystems:
ext2 and ext4 have same performance in this test.
reiserfs is best, despite of name of it's creator.
ext2 is good except file creation and remove.
xfs is good except file creation and remove.
ext3 is good _for_ file creation and remove.

so, my choise of fs will be:
/boot -> ext2 for compatibility
/, /usr -> xfs, need fast block r/w.
/home -> reiser, need fast file create/remove, and overall balance
/var -> reiser, 'append fs', need good overall balance.

i wanted to test nilfs2 (and use it for /var), but it didn't pass
testing - out of free space.

All tests were done on .34, yesterday git (with FIFO LCM patch). Short
tests algorithm: for each fs: create fs on same mmc partition, mount
(with noatime) and run bonnie in mounted directory, then umount. I did
two runs to ensure results are sane.

plain dd read speed of my sd card is 2.7Mb/s.

Gennady.




More information about the community mailing list