February 18, 2009 at 12:31 pm
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!
February 18, 2009 at 2:08 pm
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
February 18, 2009 at 2:53 pm
WOW, So professional. I need time to digest the knowledge. I will response you back soon.
Thanks a lot.
February 23, 2009 at 9:24 am
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
February 23, 2009 at 9:28 am
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