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)
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)
Parameter | Description | Notes |
-c | Size 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). |
-d | The duration of the test, in seconds. | You can use 10 seconds for a quick test. For any serious work, use at least 60 seconds. |
-w | Percentage 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. |
-r | Random | Random is common for OLTP workloads. Sequential (when –r is not specified) is common for Reporting, Data Warehousing. |
-b | Size of the IO in KB | Specify 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. |
-t | Threads per file | For large IOs, just a couple is enough. Sometimes just one. For small IOs, you could need as many as the number of CPU cores. |
-o | Outstanding 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. |
-L | Capture latency information | Always important to know the average time to complete an IO, end-to-end. |
-h | Disable hardware and software caching | No 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