Benchmark of various file systems
Benchmark command
I'm using
bonnie++∞ for benchmarking.
# create a file used as the test partition
dd if=/dev/zero of=/dev/testdrv bs=1024k count=1024
mkfs.??? /testdrv
mount -oloop -t??? /dev/testdrv /mnt/test
# Test with 256M file, limiting memory to 128M
bonnie++ -s256 -r128 -uroot -d/mnt/test
# Updated - specify -n 1 to test the creation of 1024 files
bonnie++ -d /tmp -r 512 -u root -s 1g -n 1
Testbed
Fedora core 7 x86_64 Kernel 2.6.23.1-21.fc7 (SMP)
Intel C2D6850 / 4G ddr2 / WD2000JS-00MHB0 sata 7200rpm 8M
Results
EXT3
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ism.comme.ca 256M 67760 99 105487 18 +++++ +++ 62100 99 +++++ +++ +++++ +++
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
JFS - supported by Fedora by default. Get jfsutils from
http://jfs.sourceforge.net/∞
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ism.comme.ca 256M 71175 99 +++++ +++ +++++ +++ 104159 99 +++++ +++ +++++ +++
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ 10525 34 +++++ +++ +++++ +++
XFS - Get xfsprogs from
ftp://oss.sgi.com/projects/xfs/cmd_tars∞ or yum install xfsprogs
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ism.comme.ca 256M 94347 96 +++++ +++ +++++ +++ 71158 99 +++++ +++ +++++ +++
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 13829 43 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
ReiserFS3 - yum install reiserfs-utils
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ism.comme.ca 256M 76964 96 30437 5 16506 1 103556 99 +++++ +++ +++++ +++
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ 32444 99 +++++ +++ +++++ +++
Conclusion
In this test, JFS &
ReiserFS offer the best read performance, while XFS offers the best write performance. But that's just sequential read/write of a not-so-large file. I've had some good experience with Oracle on JFS and some bad ones with
ReiserFS.
ReiserFS4 and ext4 have promising performance but I'm too lazy to get my kernel to support them, and they may not be as matured as the others.
One also have to take into consideration about how often random access is used. Certainly not to under-estimate the effect that ext3 is officially supported and is widely used for obvious reasons. Think about when your fs crashes, you certainly don't want to learn that the fs is not supported by your favorate live-cd/rescue-cd.
There are no comments on this page. [Add comment]