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 about read/write speed and database performance (postgresql in this case);
- postgresql (version 9.1.0) and mysql (version 5.1.58) are the two benchmarked database system;
- 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.<fs> Linux utility. Files fragmentation level was checked both after untarring the linux kernel and after the write-intensive sysbench fileio tests.
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. Debian Testing (codename “wheezy”) amd64 with kernel version 3.0.0-1
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.