How totest SAN Perfomance

  • Hello Everyone,

    My company bought new SAN hardwares and finally got a consultant to work on them. my company is too small and no SAN person to work on this. I will involve in SAN performance test after SAN Array and OS are set up. I searched the internet and got some ideas.

    1. File copy test using Robocopy from DAS to SAN

    2. IOmeter

    8k block size 65% read, 50% Random.

    The question is how do I know that the result show good or bad performance.

    If you know other good test ways, please advise me.

    Thank you!

  • Another way to test the SAN: SQLIOSim (http://support.microsoft.com/default.aspx?scid=kb;en-us;231619)

    The first step is to ensure your test server can fully saturate the SAN during the test - meaning you've got the HBA queue depths and multipathing (if supported) configured optimally per the SAN vendor's recommendations, the fabric zoned for all paths, a powerful enough server to generate enough traffic, etc.

    Set up LUNs in the SAN that simulate how you will configure your SQL Server storage, approximating the volume sizes and RAID levels you plan to implement.

    Then fire up the test tool.

    Performance can be monitored using the SAN's tools, if it has them, Windows PerfMon, and periodically trapping the results of the DMV sys.dm_io_virtual_file_stats into a table.

    Initially, there are two key metrics:

    1. Input/Ouput Operations per Seconds (IOPS)

    2. Service times, both read and write.

    Expected IOPS: If the vendor has not provided an expected IOPS, you can calculate what to expect as approximately 150 IOPS per physical drive used in the volume.

    Expected Service Times: 'Service Time' refers to the time measured from when SQL Server issues a request to Windows for file data and when that request is fulfilled. SQL Server records these results in sys.dm_io_virtual_file_stats. Windows measures it in PerfMon from when it sends the request and gets the response. The SAN will measure from when it gets the request to when it completes the response. Those three numbers may be different.

    You're building this for SQL Server, so that's where the data is most relevant.

    What you're looking for:

    - Write Service Time: 1ms or less, on average. All writes should be to the SAN cache. Once you've filled the cache, you'll see that time jump dramatically.

    - Read Service Time: opinions vary, but 10ms to 20ms on average are the two most widely circulated numbers. Later, when you hit production, if you're monitoring that closely, you'll learn your magic line after which performance tanks (For us it's 17ms. Your line may be very different.).

    The IOPS are relevant to the amount of activity you will place on the SAN. High transactional systems need lots of IOPS to keep up, many departmental databases do not need massive disk scaling. If you're hitting the 150 IOPS per drive and still not getting enough throughput for your databases, you'll have to add more drives to get more.

    The service times generally affect all uses, regardless of size.

    This is just a simplification, but I hope there's enough to get you started.

    Eddie Wuerch
    MCM: SQL

  • WOW, So professional. I need time to digest the knowledge. I will response you back soon.

    Thanks a lot.

  • Eddie Wuerch (2/18/2009)


    Another way to test the SAN: SQLIOSim (http://support.microsoft.com/default.aspx?scid=kb;en-us;231619)

    I downloaded SQLIOSim and just slightly changed the default configure file to do stress test. I did two stress test, one is target IO =100 and one is target IO=20. The results had a big different.

    Target IO 100 result:

    Running Average IO Duration (ms) 47

    Number of times IO throttled 122901

    IO request blocks 580

    Reads 295636

    Scatter Reads 112257

    Writes 12995

    Gather Writes 66674

    Total IO Times (ms) 314594943

    Target IO 20

    Running Average IO Duration (ms) 16

    Number of times IO throttled 128209

    IO request blocks 8

    Reads196039

    Scatter Reads73753

    Writes5571

    Gather Writes42798

    Total IO Times (ms)343834916

  • I didn't finish my post and accidently posted it.

    I downloaded SQLIOSim and just slightly changed the default configure file to do stress test. I did two stress test, one is target IO =100 and one is target IO=20. The results had a big different.

    Target IO 100 result:

    Running Average IO Duration (ms) 47

    Number of times IO throttled 122901

    IO request blocks 580

    Reads 295636

    Scatter Reads 112257

    Writes 12995

    Gather Writes 66674

    Total IO Times (ms) 314594943

    Target IO 20

    Running Average IO Duration (ms) 16

    Number of times IO throttled 128209

    IO request blocks 8

    Reads 196039

    Scatter Reads 73753

    Writes 5571

    Gather Writes 42798

    Total IO Times (ms)343834916

    The Drives Info:

    SAN Drives- Data file to Drive H which is Raid 10. Log file to Drive G which is also raid 10.

    OS info: Windows Server 2003 64 bit

Viewing 5 posts - 1 through 4 (of 4 total)

You must be logged in to reply to this topic. Login to reply