Friday, 29 May 2015

SQLIO

http://www.microsoft.com/en-au/download/details.aspx?id=20163
http://www.brentozar.com/archive/2008/09/finding-your-san-bottlenecks-with-sqlio/
http://blogs.technet.com/b/josebda/archive/2013/03/25/sqlio-powershell-and-storage-performance-measuring-iops-throughput-and-latency-for-both-local-disks-and-smb-file-shares.aspx


sqlio -kW -t8 -s120 -o8 -frandom -b8 -BH -LS E:\TestFile.dat
sqlio -kR -t8 -s120 -o8 -frandom -b8 -BH -LS E:\TestFile.dat
sqlio -kW -t8 -s120 -o8 -fsequential -b64 -BH -LS E:\TestFile.dat
sqlio -kR -t8 -s120 -o8 -fsequential -b64 -BH -LS E:\TestFile.dat
Below results from a Seagate SATA 5,900 RPM drive: 
C:\Program Files (x86)\SQLIO>sqlio -kW -t8 -s120 -o8 -frandom -b8 -BH -LS d:\iobw.tst 
sqlio v1.5.SG
using system counter for latency timings, 2597675 counts per second
8 threads writing for 120 secs to file d:\iobw.tst
using 8KB random IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 48828 MB for file: d:\iobw.tst
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:   195.70
MBs/sec:     1.52
latency metrics:
Min_Latency(ms): 3
Avg_Latency(ms): 326
Max_Latency(ms): 621
histogram:
ms: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%:  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 100

C:\Program Files (x86)\SQLIO>sqlio -kR -t8 -s120 -o8 -frandom -b8 -BH -LS d:\iobw.tst 
sqlio v1.5.SG
using system counter for latency timings, 2597675 counts per second
8 threads reading for 120 secs from file d:\iobw.tst
using 8KB random IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 48828 MB for file: d:\iobw.tst
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:   221.86
MBs/sec:     1.73
latency metrics:
Min_Latency(ms): 3
Avg_Latency(ms): 287
Max_Latency(ms): 4562
histogram:
ms: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%:  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 99

C:\Program Files (x86)\SQLIO>sqlio -kW -t8 -s120 -o8 -fsequential -b64 -BH -LS d:\iobw.tst 
sqlio v1.5.SG
using system counter for latency timings, 2597675 counts per second
8 threads writing for 120 secs to file d:\iobw.tst
using 64KB sequential IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 48828 MB for file: d:\iobw.tst
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:  1618.35
MBs/sec:   101.14
latency metrics:
Min_Latency(ms): 3
Avg_Latency(ms): 39
Max_Latency(ms): 667
histogram:
ms: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%:  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 100

C:\Program Files (x86)\SQLIO>sqlio -kR -t8 -s120 -o8 -fsequential -b64 -BH -LS d:\iobw.tst 
sqlio v1.5.SG
using system counter for latency timings, 2597675 counts per second
8 threads reading for 120 secs from file d:\iobw.tst
using 64KB sequential IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 48828 MB for file: d:\iobw.tst
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:  1634.88
MBs/sec:   102.18
latency metrics:
Min_Latency(ms): 1
Avg_Latency(ms): 38
Max_Latency(ms): 5070
histogram:
ms: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%:  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1 97

Very similar to IOmeter results:
http://blog.zorangagic.com/2015/05/iometer-performance.html

Update 3/6/2015: Microsoft has new disk benchmark - diskspd
https://github.com/Microsoft/diskspd
https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
fsutil file createnew c:\iobw.tst 100000000000 (this 100GB)
diskspd.exe -b256K -d60 -o8 -t4 -j:\io.tst (sequential)
diskspd -d60 -o16 -b4k -r -w30 -h -L -t24 j:\io.tst (random)


ParameterDescriptionNotes
-cSize of file used.Specify the number of bytes or use suffixes like K, M or G (KB, MB, or GB). You should use a large size (all of the disk) for HDDs, since small files will show unrealistically high performance (short stroking).
-dThe duration of the test, in seconds.You can use 10 seconds for a quick test. For any serious work, use at least 60 seconds.
-wPercentage of writes.0 means all reads, 100 means all writes, 30 means 30% writes and 70% reads. Be careful with using writes on SSDs for a long time, since they can wear out the drive. The default is 0.
-rRandomRandom is common for OLTP workloads. Sequential (when –r is not specified) is common for Reporting, Data Warehousing.
-bSize of the IO in KBSpecify the number of bytes or use suffixes like K, M or G (KB, MB, or GB). 8K is the typical IO for OLTP workloads. 512K is common for Reporting, Data Warehousing.
-tThreads per fileFor large IOs, just a couple is enough. Sometimes just one. For small IOs, you could need as many as the number of CPU cores.
-oOutstanding IOs or queue depth (per thread)In RAID, SAN or Storage Spaces setups, a single disk can be made up of multiple physical disks. You can start with twice the number of physical disks used by the volume where the file sits. Using a higher number will increase your latency, but can get you more IOPs and throughput.
-LCapture latency informationAlways important to know the average time to complete an IO, end-to-end.
-hDisable hardware and software cachingNo hardware or software buffering. Buffering plus a small file size will give you performance of the memory, not the disk.

No comments:

Post a Comment