Armed with a HP ML350P, a huge pile of hard drives, SQLIO, PowerShell, CreateFile, and Captain Morgan (with diet coke) I set out to test what type of performance the HP Smart Array 420i controller would give me. Here is the result.
Background info
Benchmarking is never an exact science, but with the same type of load, and disk arrays, you can at least get a good idea about what disks that gives the most performance / dollar spent. The server used in the test was a HP 350P server with the HP Smart Array 420i controller.
The HP ML350p used in the tests.
For disk I/O I like using SQLIO, and the critical thing about using SQLIO is to have enough amount of data to test with, a 100 GB file is enough for most tests, and to run the tests a least a few minutes. And please do not create the file using FSUtil, because it will just create an empty file, which the controller cache may suck into RAM immediately and your test results will be off the charts. Create a “real” file, with content, generate a giant ISO file, or a large WinRAR archive, anything you can think of as long as the file is full with data.
I like to use the free CreateFile.exe written by Deepak Kumar (Adaptiva), which create test files that are uncompressible, again, so you can get real results. For all tests I was using 4 worker threads which gives me a good maximum load of the disk I/O.
In the test I compared two different SAS disk arrays with a SSD disk array, here is the result:
Result Summary
The HP Smart Array 420i controller does a pretty good job, but it all comes down to what disks you put in the server. SSD drives may have fantastic performance in theory, but it’s the combination of server, controller and disks that in the determines performance.
For sequential read, 64 kb blocks, the SSD’s were about 3 – 4 times faster than the two SAS arrays
For random read, 64 kb blocks, the SSD’s were about 13 - 18 times faster than the two SAS arrays
For write, 64 kb blocks, the SSD’s were about 11 - 17 times faster than the two SAS arrays
Test Details
Below you find the gory details from the tests. The PowerShell script that did the testing looked like this:
# Read Sequential, 64kb blocksize .\SQLIO.EXE -s120 -kR -fsequential -b64 -t4 -o2 -LS -BN D:\Benchmarkfile.dat # Read Random, 64 kb blocksize .\SQLIO.EXE -s120 -kR -frandom -b64 -t4 -o16 -LS -BN D:\Benchmarkfile.dat # Write Random, 64 kb blocksize .\SQLIO.EXE -s120 -kW -frandom -b64 -t4 -o16 -LS -BN D:\Benchmarkfile.dat
Test with 2 x 146 GB disks (RAID 1, 64 kb blocks)
These drives are some older HP EH0146FARWD SAS drives, 146 GB each, but they still gives quite good speed.
The first test was the 64 kb sequential read.
IOs/sec: 3999.57
MBs/sec: 249.97
Second test was the 64 kb random read.
IOs/sec: 961.67
MBs/sec: 60.10
The final test was the 64 kb write
IOs/sec: 607.25
MBs/sec: 37.95
Test with 2 x 500 GB disks (RAID 1, 64 kb blocks)
These drives are some newer HP MM0500FBFVQ SAS drives, 500 GB each.
The first test was the 64 kb sequential read.
IOs/sec: 2889.47
MBs/sec: 180.59
Second test was the 64 kb random read.
IOs/sec: 690.65
MBs/sec: 43.16
The final test was the 64 kb write
IOs/sec: 397.24
MBs/sec: 24.82
Test with 2 x 180 GB SSD disks (RAID 1, 64 kb blocks)
These drives are the ATA INTEL SSDSC2CW18 (SATA SSD), 180 GB each.
The first test was the 64 kb sequential read.
IOs/sec: 10226.23
MBs/sec: 639.13
Second test was the 64 kb random read.
IOs/sec: 12390.94
MBs/sec: 774.43
The final test was the 64 kb write
IOs/sec: 6798.36
MBs/sec: 424.89
More ...