I have finished construction of my ZFS NAS. Before I start transferring large amounts of data to it I wanted to make sure that performance was appropriate for the hardware. Here's what I'm running:
I ran a bunch of different tests using dd and bonnie++. I was hoping that you talented people with lots more ZFS experience would be able to tell me if I'm on track. I tested 3 different drive configurations a 2 drive mirror, 2 2 drive mirrors and a 12 drive RAIDZ2 (this is the planned final configuration). Someone suggested to me that setting atime=off and relatime=on could improve performance so I tested both as well. Here's what I'd like to know:
- Supermicro 846 24bay 4U Case
- Dual 920W redundant Power suplies
- Supermicro X9SRL-F Motherboard
- Intel Xeon E5-2603 CPU
- 16GBs ECC RAM
- (3) IBM M1015 HBAs flashed to IT firmware
- 120GB 2.5" Toshiba OS Drive
- 12 1TB WD RE4 D1003FBYX
- 12 2TB WD RE4 D2003FYYS
I ran a bunch of different tests using dd and bonnie++. I was hoping that you talented people with lots more ZFS experience would be able to tell me if I'm on track. I tested 3 different drive configurations a 2 drive mirror, 2 2 drive mirrors and a 12 drive RAIDZ2 (this is the planned final configuration). Someone suggested to me that setting atime=off and relatime=on could improve performance so I tested both as well. Here's what I'd like to know:
- Did I run reasonable tests for performance?
- If so does the performance match what I should be able to get?
- Is there anything I should do to improve performance?
Code:
{atime=on}
[2 Drive mirror Write]
root@muninn:/# time sh -c "dd if=/dev/zero of=/tank1/test.dd bs=4k count=6000000 && sync"
6000000+0 records in
6000000+0 records out
24576000000 bytes (25 GB) copied, 211.715 s, 116 MB/s
real 3m40.995s
user 0m10.357s
sys 1m53.347s
[2 Drive mirror Read]
root@muninn:/# time sh -c "dd if=/tank1/test.dd of=/dev/null"
48000000+0 records in
48000000+0 records out
24576000000 bytes (25 GB) copied, 291.195 s, 84.4 MB/s
real 4m51.198s
user 0m52.392s
sys 3m58.737s
[2 Drive mirror Bonnie++]
root@muninn:/# bonnie++ -d /tank1 -r 16384 -u ripley -n 1024
Using uid:1000, gid:1000.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
muninn 32G 82 99 105071 32 59240 17 193 99 176016 19 323.3 15
Latency 107ms 14036us 2469ms 59348us 419ms 309ms
Version 1.97 ------Sequential Create------ --------Random Create--------
muninn -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
1024 12162 99 327812 99 12349 99 11952 99 392036 99 11692 99
Latency 176ms 661us 923us 159ms 213us 19064us
1.97,1.97,muninn,1,1421967113,32G,,82,99,105071,32,59240,17,193,99,176016,19,323.3,15,1024,,,,,12162,99,327812,99,12349,99,11952,99,392036,99,11692,99,107ms,14036us,2469ms,59348us,419ms,309ms,176ms,661us,923us,159ms,213us,19064us
[2 2 Drive mirrors Write]
root@muninn:~# time sh -c "dd if=/dev/zero of=/tank1/test.dd bs=4k count=6000000 && sync"
6000000+0 records in
6000000+0 records out
24576000000 bytes (25 GB) copied, 107.992 s, 228 MB/s
real 2m0.339s
user 0m7.691s
sys 1m28.301s
[2 2 Drive mirrors Read]
root@muninn:~# time sh -c "dd if=/tank1/test.dd of=/dev/null"
48000000+0 records in
48000000+0 records out
24576000000 bytes (25 GB) copied, 286.534 s, 85.8 MB/s
real 4m46.537s
user 0m52.275s
sys 3m54.164s
[2 2 Drive mirrors Bonnie++]
root@muninn:/# bonnie++ -d /tank1 -r 16384 -u ripley -n 1024
Using uid:1000, gid:1000.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
muninn 32G 62 99 205804 56 120419 40 196 99 342134 34 535.4 21
Latency 136ms 15372us 2065ms 73134us 258ms 188ms
Version 1.97 ------Sequential Create------ --------Random Create--------
muninn -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
1024 12365 99 335887 99 12404 99 12215 99 398375 99 12277 99
Latency 179ms 657us 4510us 183ms 23us 4280us
1.97,1.97,muninn,1,1421951305,32G,,62,99,205804,56,120419,40,196,99,342134,34,535.4,21,1024,,,,,12365,99,335887,99,12404,99,12215,99,398375,99,12277,99,136ms,15372us,2065ms,73134us,258ms,188ms,179ms,657us,4510us,183ms,23us,4280us
[12 drive RAIDZ2 Write]
root@muninn:/# time sh -c "dd if=/dev/zero of=/tank1/test.dd bs=4k count=6000000 && sync"
6000000+0 records in
6000000+0 records out
24576000000 bytes (25 GB) copied, 87.3114 s, 281 MB/s
real 1m27.694s
user 0m7.208s
sys 1m20.053s
[12 drive RAIDZ2 Read]
root@muninn:/# time sh -c "dd if=/tank1/test.dd of=/dev/null"
48000000+0 records in
48000000+0 records out
24576000000 bytes (25 GB) copied, 294.115 s, 83.6 MB/s
real 4m54.118s
user 0m52.463s
sys 4m1.529s
[12 drive RAIDZ2 Bonnie++]
root@muninn:/# bonnie++ -d /tank1 -r 16384 -u ripley -n 1024
Using uid:1000, gid:1000.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
muninn 32G 82 99 510005 98 226927 69 200 99 878879 99 248.3 14
Latency 105ms 8099us 1837ms 71367us 61029us 153ms
Version 1.97 ------Sequential Create------ --------Random Create--------
muninn -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
1024 11565 99 333760 99 12291 99 11650 99 394102 99 10196 99
Latency 233ms 833us 4132us 278ms 113us 8251us
1.97,1.97,muninn,1,1421962472,32G,,82,99,510005,98,226927,69,200,99,878879,99,248.3,14,1024,,,,,11565,99,333760,99,12291,99,11650,99,394102,99,10196,99,105ms,8099us,1837ms,71367us,61029us,153ms,233ms,833us,4132us,278ms,113us,8251us
{atime off, relatime on}
[2 Drive mirror Write]
root@muninn:/# time sh -c "dd if=/dev/zero of=/tank1/test.dd bs=4k count=6000000 && sync"
6000000+0 records in
6000000+0 records out
24576000000 bytes (25 GB) copied, 215.51 s, 114 MB/s
real 3m59.471s
user 0m10.014s
sys 1m55.938s
[2 Drive mirror Read]
root@muninn:/# time sh -c "dd if=/tank1/test.dd of=/dev/null"
48000000+0 records in
48000000+0 records out
24576000000 bytes (25 GB) copied, 287.072 s, 85.6 MB/s
real 4m47.075s
user 0m52.511s
sys 3m54.466s
[2 Drive mirror Bonnie++]
root@muninn:/# bonnie++ -d /tank1 -r 16384 -u ripley -n 1024
Using uid:1000, gid:1000.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
muninn 32G 81 99 104857 33 60546 18 195 99 177635 19 326.5 15
Latency 105ms 14650us 2236ms 70346us 503ms 280ms
Version 1.97 ------Sequential Create------ --------Random Create--------
muninn -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
1024 11838 99 327691 99 12234 99 11742 99 390507 99 11870 99
Latency 193ms 496us 1015us 180ms 30us 4225us
1.97,1.97,muninn,1,1421965202,32G,,81,99,104857,33,60546,18,195,99,177635,19,326.5,15,1024,,,,,11838,99,327691,99,12234,99,11742,99,390507,99,11870,99,105ms,14650us,2236ms,70346us,503ms,280ms,193ms,496us,1015us,180ms,30us,4225us
[2 2 Drive mirrors Write]
root@muninn:/# time sh -c "dd if=/dev/zero of=/tank1/test.dd bs=4k count=6000000 && sync"
6000000+0 records in
6000000+0 records out
24576000000 bytes (25 GB) copied, 109.423 s, 225 MB/s
real 2m3.079s
user 0m7.765s
sys 1m38.359s
[2 2 Drive mirrors Read]
root@muninn:/# time sh -c "dd if=/tank1/test.dd of=/dev/null"
48000000+0 records in
48000000+0 records out
24576000000 bytes (25 GB) copied, 289.35 s, 84.9 MB/s
real 4m49.353s
user 0m53.412s
sys 3m55.851s
[2 2 Drive mirrors Bonnie++]
root@muninn:/# bonnie++ -d /tank1 -r 16384 -u ripley -n 1024
Using uid:1000, gid:1000.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
muninn 32G 64 99 206422 57 119291 39 200 99 339873 33 519.5 20
Latency 133ms 13539us 2290ms 68845us 268ms 217ms
Version 1.97 ------Sequential Create------ --------Random Create--------
muninn -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
1024 5674 77 168728 52 5252 99 12400 99 394056 99 12481 99
Latency 204ms 38855us 25770us 171ms 25us 26036us
1.97,1.97,muninn,1,1421952667,32G,,64,99,206422,57,119291,39,200,99,339873,33,519.5,20,1024,,,,,5674,77,168728,52,5252,99,12400,99,394056,99,12481,99,133ms,13539us,2290ms,68845us,268ms,217ms,204ms,38855us,25770us,171ms,25us,26036us
[12 Drive RAIDZ2 Write]
root@muninn:/tank1# time sh -c "dd if=/dev/zero of=/tank1/test.dd bs=4k count=6000000 && sync"
6000000+0 records in
6000000+0 records out
24576000000 bytes (25 GB) copied, 87.6158 s, 280 MB/s
real 1m28.047s
user 0m7.168s
sys 1m20.622s
[12 Drive RAIDZ2 Read]
root@muninn:/tank1# time sh -c "dd if=/tank1/test.dd of=/dev/null"
48000000+0 records in
48000000+0 records out
24576000000 bytes (25 GB) copied, 301.988 s, 81.4 MB/s
real 5m1.991s
user 0m52.308s
sys 4m2.378s
[12 Drive RAIDZ2 Bonnie++]
root@muninn:/tank1# bonnie++ -d /tank1 -r 16384 -u ripley -n 1024
Using uid:1000, gid:1000.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
muninn 32G 80 99 505593 98 220501 67 190 99 880084 99 238.8 13
Latency 106ms 6547us 136ms 71490us 16216us 142ms
Version 1.97 ------Sequential Create------ --------Random Create--------
muninn -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
1024 11377 99 329742 99 12094 99 11519 99 390066 99 10420 99
Latency 219ms 471us 4182us 246ms 21us 5603us
1.97,1.97,muninn,1,1421957471,32G,,80,99,505593,98,220501,67,190,99,880084,99,238.8,13,1024,,,,,11377,99,329742,99,12094,99,11519,99,390066,99,10420,99,106ms,6547us,136ms,71490us,16216us,142ms,219ms,471us,4182us,246ms,21us,5603us