Maildir Filesystem Benchmark
This benchmark is based on fsbench, a set of perl scripts to simulate delivery and reading files on Maildir system.
The goal is compare delivering and reading performance on Maildir using the four most
popular journaling filesystems on Linux: EXT3 (Ordered and Writeback), ReiserFS
3.6, XFS and JFS.
As the tests of the fsbench author's were performed on an older version
of the kernel, this benchmark shows the results in an operating system with an
updated kernel. The OS that I chose was the CentOS 5.0, a popular enterprise
Linux distribution, with kernel 2.6.18-8.1.15.
What is Maildir?
Wikipedia says: “Maildir
is a widely-used format for storing e-mail that does not require
application-level file locking to maintain message integrity as messages are
added, moved and deleted. Each message is kept in a separate file with a unique
name. All changes are made using atomic filesystem operations so that the
filesystem handles file locking concurrency issues. A Maildir is a directory
(often named Maildir) with three subdirectories named tmp, new, and cur.”
Benchmark scripts:
The details of fsbench can be found on author’s Website: http://untroubled.org/benchmarking/2004-04/
System Configuration:
CPU: 2 Xeon Quad Core 2.33 GHz
RAM: 4 GB DDR2 667
Storage: RAID 10 with 8 Drives SATA2 on 3ware 9650SE-8LP
OS: CentOS 5.0
Kernel: 2.6.18-8.1.15
Filesystems:
The filesystems was formatted and mounted with specified options to increase performance on maildir, like noatime and dir_index (ext3).
Ext3 Ordered
mkfs: mke2fs -j -J size=400 -i 8192 -O dir_index
mount: ext3 -o noatime,data=ordered
Ext3 Writeback
mkfs: mke2fs -j -J size=400 -i 8192 -O dir_index
mount: ext3 -o noatime,data=writeback
XFS
mkfs: mkfs.xfs -f -l size=32768b,version=2
mount: xfs -o noatime,logbufs=8,logbsize=131072
ReiserFS
mkfs: mkreiserfs --journal-size 32749 --format 3.6
mount: reiserfs -o noatime,notail
JFS
mkfs: jfs_mkfs
mount: jfs -o noatime
Results:
Three tests were done for each filesystem. The amount of time of first two have been configured for 2 minutes and the last for 10 minutes.
The result log for three tests can be downloaded here: log.tar.gz
The charts were based on average values of the loop counts, that represents a message delivery/read, and number of writers, which is the number of concurrent delivery process. (bigger is better)
Last updated Sun Dec 2 14:14:55 BRST 2007.