Sunday, April 21, 2013

Storage (HDD/DAS/NAS/SAN) Performance Testing With IOMeter - Raw Throughput


How to use IOMETER for testing raw storage throughput...just straight dumping and pulling data from disks sequentially. Another entry will show how to simulate different workloads (like SQL).

1. Download and Install IOMeter

2. Verify that the volume or drive that you want to test is already connected, partitioned, and formatted on the computer that is running the stress test. (you may also test mapped network drives)

3. Launch IOMeter and select your computer name in the Topology field (System in my example)

4. Select Worker 1.
    

5. The first tab, Disk Targets, should already be selected will display all of the volumes available to benchmark. Select the volume (or Target as IOMeter refers to them) that you want to test. (Note: You can only test one target at a time)
     

6. Enter a numerical value for Maximum Disk Size. IOMeter will create a file called iobw.tst on the volume for running its tests. Be sure to create a test file larger than the memory buffers on your storage device, otherwise you will only see cache I/O which is deceiving. I usually test with a 10GB Disk Size, so I enter 2048000. 
     Note: 204800 sectors = 1GB on a disk partitioned with 512KB sectors (the default), so a 10GB file would be 2048000, etc. (be sure you have this much free space on the target)

7. Change the value of # of Outstanding I/Os from 1 to 1 per target

8. Change the value of Write IO Data Pattern from Repeating bytes to Full Random (and click OK)
Note: If you have already performed steps 9-20 before, click the Open button (first button from the left) and select the configuration file you previously saved and skip ahead to step 18.  Here's a downloadable ICF file if you'd like to use it and skip ahead.


9. Select the Access Specifications tab and click New.

10. Only set the following access specifications:
          Transfer Request Size = 256 Kilobytes (text field)
          Percent Random/Sequential Distribution = 100% Sequential (slider bar)

          Percent Read/Write Distribution = 100% Write (slider bar)




11. Under the name file I enter in 256K_Write. Select OK.

12. Scroll down to the bottom of the “Global Access Specifications” field and select the new script and click on the << Add button.

     (Note: Steps 11-14 are repeat of steps 7-10 to create a Read version of the same job)


13. Select the Access Specifications tab and click New.

14. Only set the following access specifications:
          Transfer Request Size = 256 Kilobytes (text field)

          Percent Random/Sequential Distribution = 100% Sequential (slider bar)

          Percent Read/Write Distribution = 100% Read (slider bar)




15. Under the name file I enter in 256K_Read. Select OK.

16. Scroll down to the bottom of the Global Access Specifications field and select the new script named 256K_Read and click the Add button in the middle.


17. Select the Results Display tab and change the Update Frequency to 1.


18. Select the Test Setup tab. Modify the Run Time field to 15 Minutes.

19. Enter 180 Seconds for the Ramp Up Time.

20. Click the Save button along the top (2nd from the left) and save this configuration file for future tests. This will allow you to skip steps 9-19 by simply loading the configuration file.



21. Click on the tab Results Display so that you can watch the test run and then click the button along the top with the green flag on it to start the tests.


You can now use this configuration file to run tests on various types of storage to see the performance in comparison to each other.
 Note: The first time you run your benchmarks on a particular type of storage, you will not see anything immediately in the Results Display. This is because IOMeter must first create a test file on the storage device.
For comparison's sake, some test results I've seen with this test: