Disk Subsystem Benchmarking

When benchmarking disk subsystems, I generally benchmark against the most challenging task; which is random writes, with no buffering! The tool I use is the Microsoft SQLIO tool that measures IO performance.

The SQLIO tool can be acquired from:

Once installed the default location to find it is:  C:\Program Files\SQLIO

It is a command line tool which means when required you can easily create batch files for repeated testing.

For the changeling tasks of random writes I suggest:

  • sqlio -kW -t2 -s300 -frandom -o2 -b8 -LS -BN C:\Testfile.dat
  • sqlio -kW -t2 -s600 -frandom -o2 -b8 -LS -BN Z:\Testfile.dat

The latter parameters indicate:

  • -kW =  Kind of IO. W = Write.
  • -t2 =  Threads 2. Recommend you set this number of the number of CPU cores you have.
  • -s300 = Seconds. 300 seconds is 5 minutes.
  • -o2 = Outstanding queued I/Os on a single thread.
  • -frandom = Random testing.
  • -b8 = Block size in KB. Note SQL Server writes in pages, and a page is 8K, hence 8K is a good writing benchmark size. Also note that SQL Server reads in extents, and a extend is 64K.
  • -LS = Latency System timing.
  • -BN = Buffering none.
  • – Z:\Testfile.dat = Drive to test. Note manually delete file at end of test.

When executed the SQLIO process will create the Testfile.dat file against the given disk, however it does not delete it! So please manually delete when finished.

The output of SQLIO is pretty much self explanatory.

Against my cheap IDE drive with the following parameters:

  • sqlio -kW -t2 -s60 -frandom -o2 -b8 -LS -BN Z:\Testfile.dat

the output was:

  • IOs/sec: 268.34
  • MBs/sec: 2.09
  • Avg_Latency(ms): 14
  • Max_Latency(ms): 70
This entry was posted in SQL 2005, SQL 2008, SQL 2008 R2 and tagged . Bookmark the permalink.