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, each with the potential to modify its behavior considerably;

  • as stated above, you had to remember that 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 about read/write speed and metadata handling;

  • sysbench (version 0.4.12) is a semi-synthetic test about read/write speed and database performance (PostgreSQL in this case);

  • tar/untar and cat are representative of common real world usage patterns;

  • finally, filefrag is a very helpful filesystem utility able to monitor file fragmentation.

All filesystems where created with default options, using the mkfs.<fs> Linux utility.

File fragmentation level was checked after the write-intensive sysbench fileio test in order to find the most fragmentation-prone filesystem.

All tests were executed using a Fedora 14 x86_64 Live CD with stock kernel, while the benchmarks run over a filesystem created on a internal hard disk, which was mounted in /opt directory. The use of a Live CD enable me to fully isolate the tested hard disk / filesystem from the rest of the operating system. CPU frequency/voltage scaling was disabled and the system was used in text-only mode (no X running here).

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. Linux Fedora 14 x86_64 (booted from Live CD) with stock kernel and PostgreSQL 8.4.5-1