HomePage » Linux » LinuxFileSystem » FileSystemsBenchmark


File Systems Benchmarks


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

# This produce cleaner output. Output=write, Input=read
bonnie++ -d /storage -r 512 -u root -s 2g -n0 -q -f -b


Show iostat
iostat -Nx


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 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++


EXT4 - 4 LVM stripes over SAN storage
bonnie++ -d /OS -r 512 -u root -s 2g -n0 -q -f -b
Version 1.03e       ------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
mongodb2.thumbpl 2G           87118  99 205443  57           1873668  99  3210   6
mongodb2.thumbplay.com,2G,,,87118,99,205443,57,,,1873668,99,3209.6,6,,,,,,,,,,,,,


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.

Another test (IOZone)

http://www.iozone.org/
"The tests performed by IOzone measure many things, starting with the simpler metrics such as read, write, reread, and rewrite performance. Read and write are obvious. Reread is measures how well a system caches a file that was recently read. There are two rewrite tests; the one reported as simply rewrite overwrites an existing file. The record rewrite writes to a specific location in a file over and over again. " http://www.linux.com/archive/feature/139744

./iozone -M -l2 -u2 -r1m -s512m -i0 -i1 -i2 -F /storage/t1 /storage/t2
# 3 threads, 1m record size, 512M, read/write/random tests only.


Output
Command line used: iozone -l3 -u3 -r16k -s512m -i0 -i1 -i2 -F /opt/t1 /opt/t2 /opt/t3
	Output is in Kbytes/sec
	Time Resolution = 0.000001 seconds.
	Processor cache size set to 1024 Kbytes.
	Processor cache line size set to 32 bytes.
	File stride size set to 17 * record size.
	Min process = 3 
	Max process = 3 
	Throughput test with 3 processes
	Each process writes a 524288 Kbyte file in 16 Kbyte records

	Children see throughput for  3 initial writers 	=  190551.92 KB/sec
	Parent sees throughput for  3 initial writers 	=   95358.14 KB/sec
	Min throughput per process 			=   59399.04 KB/sec 
	Max throughput per process 			=   67102.94 KB/sec
	Avg throughput per process 			=   63517.31 KB/sec
	Min xfer 					=  464848.00 KB

	Children see throughput for  3 rewriters 	=  192879.43 KB/sec
	Parent sees throughput for  3 rewriters 	=   97202.22 KB/sec
	Min throughput per process 			=   61424.02 KB/sec 
	Max throughput per process 			=   67892.16 KB/sec
	Avg throughput per process 			=   64293.14 KB/sec
	Min xfer 					=  475440.00 KB

	Children see throughput for  3 readers 		= 5169973.62 KB/sec
	Parent sees throughput for  3 readers 		= 5043432.88 KB/sec
	Min throughput per process 			= 1274313.12 KB/sec 
	Max throughput per process 			= 2559450.75 KB/sec
	Avg throughput per process 			= 1723324.54 KB/sec
	Min xfer 					=  254640.00 KB

	Children see throughput for 3 re-readers 	= 5141331.25 KB/sec
	Parent sees throughput for 3 re-readers 	= 5082621.95 KB/sec
	Min throughput per process 			= 1280551.88 KB/sec 
	Max throughput per process 			= 2565787.75 KB/sec
	Avg throughput per process 			= 1713777.08 KB/sec
	Min xfer 					=  259664.00 KB

	Children see throughput for 3 random readers 	= 4574113.12 KB/sec
	Parent sees throughput for 3 random readers 	= 4539378.00 KB/sec
	Min throughput per process 			= 1218295.25 KB/sec 
	Max throughput per process 			= 2109693.00 KB/sec
	Avg throughput per process 			= 1524704.38 KB/sec
	Min xfer 					=  303872.00 KB

	Children see throughput for 3 random writers 	=   49672.07 KB/sec
	Parent sees throughput for 3 random writers 	=   30601.92 KB/sec
	Min throughput per process 			=   15888.48 KB/sec 
	Max throughput per process 			=   17488.86 KB/sec
	Avg throughput per process 			=   16557.36 KB/sec
	Min xfer 					=  476272.00 KB



sysbench

sysbench --test=fileio --num-threads=4 --file-num=4 --file-total-size=512M --file-test-mode=rndrw prepare
sysbench --test=fileio --num-threads=4 --file-num=4 --file-total-size=512M --file-test-mode=rndrw run
sysbench --test=fileio --num-threads=4 --file-num=4 --file-total-size=512M --file-test-mode=rndrw cleanup


Result on Seagate hybrid:
Operations performed:  6001 Read, 4004 Write, 396 Other = 10401 Total
Read 93.766Mb  Written 62.562Mb  Total transferred 156.33Mb  (3.8785Mb/sec)
  248.22 Requests/sec executed

Test execution summary:
	total time:                          40.3067s
	total number of events:              10005
	total time taken by event execution: 6.2396
	per-request statistics:
		 min:                                  0.01ms
		 avg:                                  0.62ms
		 max:                                350.00ms
		 approx.  95 percentile:               0.11ms

Threads fairness:
	events (avg/stddev):           2501.2500/34.74
	execution time (avg/stddev):   1.5599/0.18


Compared with a LinuxVM sitting on san
Operations performed:  6002 Read, 3999 Write, 401 Other = 10402 Total
Read 93.781Mb  Written 62.484Mb  Total transferred 156.27Mb  (89.85Mb/sec)
 5750.43 Requests/sec executed

Test execution summary:
	total time:                          1.7392s
	total number of events:              10001
	total time taken by event execution: 6.1917
	per-request statistics:
		 min:                                  0.00ms
		 avg:                                  0.62ms
		 max:                                369.01ms
		 approx.  95 percentile:               1.55ms

Threads fairness:
	events (avg/stddev):           2500.2500/370.49
	execution time (avg/stddev):   1.5479/0.12
Comments [Hide comments/form]
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki