The following are the results of the Bonnie++ Disk Performance benchmark tests that I ran on my new OpenFiler V2.2 server before placing it into production. I was testing to prove that the disk drive/drive controller configuration I had come up with was cost effective and performed well.
I am replacing an old OpenFiler V1.1 server that has a LSI Logic MegaRAID i4 controller and five 80GB hard drives. This is also running on an older motherboard and has less than stellar performance.
The new hardware consists of:
So you can see that it's pretty cheap (around $500). And it's a terabyte! (Well, almost. The drives show up as 238GB, so the total size is around 952GB, but it's all in how you count it and I'm going to call it a terabyte!) My current filer is only 320GB and it's filling up with MP3s and digital photos.
Notes:
The motherboard has two on-board IDE controllers and two dual-channel PCI bus controllers for a total of four separate PCI buses (and six PCI slots).
The Promise Ultra100 TX2 cards were flashed with the latest firmware update (2.20.0.15)
The motherboard PnP BIOS configuration was cleared each time the Ultra100 TX2 cards were added or removed.
The latest version of OpenFiler (2.2) was installed and "conary updateall" was performed.
bonnie++ V1.03 (the latest stable version) was installed using the following procedure found on the OpenFiler Forums:
All tests were performed with an md software RAID 5 array made of full disk partitions on five 250GB drives using the default 64K chunk size for a total RAID 5 size of ~1TB.
An LVM volume group was created out of the whole array.
A 200000MB XFS formatted volume was created to run the tests in.
All the RAID and volume creation was done using the OpenFiler web interface. Some of the volume removal had to be performed using the command line utilities as there appear to be some OpenFiler bugs related to this procedure.
The bonnie++ command line was:
bonnie++ -u root \ -d /mnt/vol-huge/test-vol1/test \ -s 2016M \ -n 10:102400:1024:1024 \ -m yakko \ -q > /var/tmp/bonnie_test.csv 2> /var/tmp/bonnie_test.out
bonnie++ options explained:
Each bonnie++ test was run 10 times with a 60 second sleep between each run to let everything settle and then the results were averaged.
Four different tests were performed. Additionally, after the new filer is moved into production a test will be run on the old filer for sake of comparison.
The following table is a summary of the results. All the test results can be seen on the Full Results page. And are available in an Excel file and a CSV file in case you want to play with the numbers yourself.
| Sequential Output | Sequential Input | Random Seeks | Sequential Create | Random Create | ||||||||||||||||||||
| Per Char | Block | Rewrite | Per Char | Block | Create | Read | Delete | Create | Read | Delete | ||||||||||||||
| K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | / sec | % CPU | / sec | % CPU | / sec | % CPU | / sec | % CPU | / sec | % CPU | / sec | % CPU | / sec | % CPU | |
| Test 1 | ||||||||||||||||||||||||
| Minimum | 14321 | 92 | 60392 | 29 | 11046 | 4 | 13281 | 65 | 86725 | 23 | 312 | 1 | 206 | 5 | 2302 | 15 | 145 | 2 | 197 | 5 | 2452 | 16 | 109 | 1 |
| Maximum | 30289 | 96 | 76245 | 37 | 13069 | 6 | 30181 | 91 | 93801 | 27 | 373.1 | 1 | 243 | 6 | 5056 | 32 | 187 | 2 | 226 | 5 | 3916 | 25 | 143 | 2 |
| Max Deviation | 15968 | 4 | 15853 | 8 | 2023 | 2 | 16900 | 26 | 7076 | 4 | 61.1 | 0 | 37 | 1 | 2754 | 17 | 42 | 0 | 29 | 0 | 1464 | 9 | 34 | 1 |
| Median | 29448.5 | 94 | 67156 | 34 | 11702 | 5 | 24998 | 74 | 90060 | 25 | 327.1 | 1 | 220.5 | 5 | 3328.5 | 21.5 | 157.5 | 2 | 211.5 | 5 | 3101 | 20.5 | 121 | 1 |
| Average | 28011 | 94.1 | 66823.9 | 33.4 | 11811.7 | 5 | 24548.4 | 76 | 90555.4 | 25 | 335.27 | 1 | 222.5 | 5.3 | 3441 | 22.5 | 158.6 | 2 | 210.1 | 5 | 3118.1 | 20.3 | 122.5 | 1.3 |
| Test 2 | ||||||||||||||||||||||||
| Minimum | 29715 | 95 | 83638 | 45 | 14351 | 7 | 26849 | 74 | 70879 | 18 | 371.7 | 1 | 348 | 9 | 3284 | 22 | 245 | 3 | 323 | 8 | 3072 | 21 | 208 | 3 |
| Maximum | 30844 | 97 | 105861 | 58 | 17744 | 9 | 30927 | 95 | 119184 | 35 | 446.1 | 2 | 401 | 10 | 5759 | 38 | 538 | 6 | 363 | 9 | 6443 | 42 | 410 | 5 |
| Max Deviation | 1129 | 2 | 22223 | 13 | 3393 | 2 | 4078 | 21 | 48305 | 17 | 74.4 | 1 | 53 | 1 | 2475 | 16 | 293 | 3 | 40 | 1 | 3371 | 21 | 202 | 2 |
| Median | 30320 | 96 | 91001 | 49.5 | 16003 | 7.5 | 27443 | 82.5 | 115529.5 | 31 | 389.85 | 1 | 370.5 | 9 | 4377 | 29 | 334.5 | 4.5 | 343 | 9 | 4134 | 27 | 249.5 | 3 |
| Average | 30292.5 | 96.1 | 94399.8 | 51 | 16067.2 | 7.7 | 28151.5 | 82.5 | 111250.6 | 30.4 | 399.32 | 1.2 | 367 | 9.3 | 4421.2 | 29.4 | 356.7 | 4.3 | 344.8 | 8.7 | 4462.4 | 29.3 | 262.9 | 3.5 |
| Test 3 | ||||||||||||||||||||||||
| Minimum | 28962 | 95 | 83550 | 46 | 14365 | 7 | 27140 | 74 | 60896 | 17 | 380.3 | 1 | 324 | 8 | 3162 | 21 | 230 | 3 | 328 | 8 | 3301 | 22 | 193 | 3 |
| Maximum | 30565 | 96 | 109493 | 58 | 18301 | 9 | 28644 | 87 | 118818 | 33 | 449.7 | 2 | 442 | 11 | 9273 | 60 | 1447 | 15 | 390 | 10 | 5037 | 33 | 326 | 4 |
| Max Deviation | 1603 | 1 | 25943 | 12 | 3936 | 2 | 1504 | 13 | 57922 | 16 | 69.4 | 1 | 118 | 3 | 6111 | 39 | 1217 | 12 | 62 | 2 | 1736 | 11 | 133 | 1 |
| Median | 30138 | 96 | 95922 | 51.5 | 15821.5 | 8 | 27714.5 | 80.5 | 117408.5 | 29.5 | 420.55 | 2 | 369.5 | 9 | 3969.5 | 26.5 | 339.5 | 4.5 | 349 | 9 | 4165.5 | 27.5 | 239.5 | 3 |
| Average | 30053.4 | 95.8 | 96922 | 52 | 15926 | 7.7 | 27740.9 | 80.4 | 104540.8 | 27.9 | 414.65 | 1.6 | 372.8 | 9.4 | 4783.8 | 31.8 | 548.9 | 6.4 | 352.1 | 8.9 | 4157.1 | 27.5 | 245.1 | 3.2 |
| Test 4 | ||||||||||||||||||||||||
| Minimum | 30218 | 95 | 85954 | 44 | 13990 | 7 | 25478 | 70 | 91552 | 27 | 365.6 | 1 | 341 | 9 | 3129 | 22 | 218 | 3 | 319 | 8 | 3407 | 23 | 194 | 3 |
| Maximum | 30851 | 97 | 99114 | 52 | 17946 | 9 | 27842 | 83 | 97236 | 30 | 452.6 | 2 | 405 | 10 | 4910 | 33 | 446 | 5 | 374 | 10 | 7360 | 48 | 336 | 4 |
| Max Deviation | 633 | 2 | 13160 | 8 | 3956 | 2 | 2364 | 13 | 5684 | 3 | 87 | 1 | 64 | 1 | 1781 | 11 | 228 | 2 | 55 | 2 | 3953 | 25 | 142 | 1 |
| Median | 30348 | 96 | 88472 | 46.5 | 16409.5 | 8 | 26585 | 76.5 | 95806 | 29 | 397.2 | 1 | 363.5 | 9 | 4158 | 28 | 240.5 | 3 | 339 | 9 | 4175.5 | 28.5 | 234 | 3 |
| Average | 30449.2 | 96.2 | 90967.3 | 47.5 | 16041.1 | 7.8 | 26651.5 | 77.2 | 95225.6 | 29.2 | 400.6 | 1.3 | 367.7 | 9.2 | 4144.7 | 28.3 | 258.2 | 3.4 | 342.8 | 8.7 | 4592.9 | 30.9 | 244.8 | 3.2 |
I was surprised to see that Configuration 3 had slightly better performance on most of the read tests (which I feel is more important than the write tests.) I expected that Configuration 4 would be better, but it's not. So I will be building my filer following Configuration 3.
I swapped the five RAID 5 drives around between all the controllers - changing the drive device names - and the array was still clean. Surprised the hell out of me.
When I stuck the third Ultra100 TX2 card in the machine I was concerned by the fact that only two appeared to be recognised and that only 8 available drives were listed. Not to mention the fact that when I had five drives plugged into the three cards it only listed three drives!
But a bit of Googling led me to believe that it would work correctly under recent Linux kernels and when I booted into OpenFiler, sure enough, it saw all three controllers and all five drives.
This page and all content Copyright 2007 Timothy W. Foreman
Page last updated 06 January 2007