One of the primary metric, which permits to estimate the efficiency of the prevailing or designed storage system is IOPS (Input/Output Operations Per Second). In easy phrases, IOPS is the variety of learn/write operations with a storage, disk or a file system per a time unit. The bigger is that this quantity, the better the efficiency of your storage. (Frankly talking, the IOPS worth has to be thought-about together with different storage efficiency traits, like latency, throughput, and so forth.)
In this text, we are going to take a look at a number of methods to measure the storage efficiency (IOPS, latency, throughput) in Windows (you should utilize this guide for an area exhausting drive, SSD, SMB community folder, CSV quantity or LUN on SAN/iSCSI storage).
Capturing Storage I/O Using Disk Performance Counters in Windows
You can roughly estimate the present storage I/O workload in Windows utilizing the built-in disk efficiency counters from Performance Monitor. To accumulate these counters knowledge :
- Start the Perfmon;
- Create a brand new Data Collector Set and choose Create manually;
- Select the checkbox Create knowledge logs -> Performance counter;
- Now within the properties of the brand new knowledge assortment set, add the next efficiency counters for the Physical Disk object (you’ll be able to choose the counters for a selected disk or for all obtainable native disks):
- Avg. Disk Sec./Transfer
- Avg. Disk Queue Length
- Avg Disk Bytes/Transfer
- Disk Bytes/sec
- Disk Transfers/sec
- Split IO/sec
- You can change different knowledge assortment properties. By default, counter values are collected each 15 seconds.
To show actual time disk efficiency, you want to add the required Perfmon counters within the Monitoring Tools -> Performance Monitor part.
- It stays to begin gathering efficiency counters knowledge (choose Start) and look forward to the gathering of adequate info for evaluation. After that, proper click on your knowledge collector set and choose Stop;
- To view the collected efficiency knowledge go to the Perfmon -> Reports -> User Defined -> Data_Disk_IO — > check_the_last_set. By default, disk knowledge is displayed as graphs;
- Use Ctrl + G to swap to the sReport mode.
How to perceive storage efficiency counters collected by Perfmon? For a fast evaluation of the disk/storage efficiency, you want to take a look at the values of not less than the next 5 counters.
When analyzing the counter knowledge, it’s advisable for you to perceive the present bodily disks (storage) configuration (whether or not RAID or Stripe is used, the quantity and forms of disks, cache measurement, and so forth.).
- Disk sec/Transfer – the time required to carry out one write/learn operation with the storage machine or disk (disk latency). If the delay is greater than 25 ms (zero.25), then the disk array can’t deal with the I/O operation on time. For excessive load servers, the disk latency worth shouldn’t exceed 10 ms (zero.1);
- Disk Transfers/sec – (IOPS). The variety of learn/write operations per second. This is the primary indicator of the disk entry depth (approximate IOPS values for various disk sorts are listed on the finish of the article);
- Disk Bytes/Sec – Total disk throughput (learn+write) per second. Maximum values rely on the disk sort (150-250 Mb/s – for an everyday HDD disk and 500-10000 for SSD);
- Split IO/sec – a disk fragmentation indicator when the working system has to break up one I/O operation into a number of disk requests. It may additionally point out that the applying is requesting too giant blocks of knowledge that can not be transferred in a single operation;
- Avg. Disk Queue Length– common variety of learn/write requests that had been queued. For a single disk, the queue size shouldn’t exceed 2. For a RAID array of four disks, the brink worth of disk queue size is eight.
DiskSpd: Testing Disk Performance and IOPS in Windows
Microsoft recommends to use the DiskSpd (https://aka.ms/diskspd) utility for producing a load on a disk (storage) system and measuring its efficiency. This is a command line interface software that may carry out I/O operations with the required drive goal in a number of threads. I very often use DiskSpd to measure the storage efficiency and get the utmost obtainable learn/write velocity and IOPS from the precise server (in fact you’ll be able to measure the efficiency of storage as properly, on this case diskspd will likely be used to generate the storage load).
The DiskSpd doesn’t require set up, simply obtain and extract the archive to an area disk. For x64 bit programs, use the model of diskspd.exe from the amd64fre listing.
I take advantage of the next command to check the efficiency disk:
diskspd.exe –c50G -d300 -r -w40 -t8 -o32 -b64Okay -Sh -L E:diskpsdtmp.dat > DiskSpeedResults.txt
Important.When utilizing diskspd.exe, fairly a substantial load is generated on the disks and CPU of the examined system. To remove the efficiency degradation for customers, it’s not really useful to begin it on productive programs in peak hours.
-c50G– file measurement 50 GB (it’s higher to use a big file measurement in order that it doesn’t match within the cache of the storage controller);
-d300– check period in seconds;
-r– random learn/write operations (if you happen to want to check sequential entry, use –s);
-t8– variety of threads;
-w40– ratio of write to learn operations 40%/60%;
-o32— queue size;
-b64Okay— block measurement;
-Sh— don’t use cache;
-L— measure latency;
E:diskpsdtmp.dat– check file path.
After the stress check is accomplished, common storage efficiency values may be obtained from the output tables.
In my check, the next efficiency knowledge (verify the Total IO desk) was obtained:
- MiB/s — 241 (about 252 Mb/s, not dangerous);
- IOPS — 3866 (completely properly!);
- Average latency — 66.206 ms (fairly a giant latency!).
You can get particular person values for learn (part Read IO) or write (part Write IO) operations.
Having examined a number of disks or storage LUNs utilizing diskspd, you’ll be able to evaluate them or choose an array with the specified efficiency in your duties.
How to Measure Storage IOPS, Throughput and Latency Using EnergyShell?
I’ve discovered a EnergyShell script (by Mikael Nystrom, Microsoft MVP), which is basically an add-on to SQLIO.exe utility (a set of file storage efficiency exams).
Note. In December, 2015, Microsoft introduced the top of assist for this software and alternative of SQLIO for a extra common software Diskspd, and eliminated SQLIO distribution recordsdata from its web site. So you should have to seek for sqlio.exe your self, or obtain it from our web site. (It is positioned within the archive with the EnergyShell script.)
So, obtain the archive containing 2 recordsdata: SQLIO.exe and DiskPerformance.ps1 ( — 74 KB) and extract it to any folder.
An instance of working a EnergyShell script to estimate disk efficiency and IOPS:
.DiskPerformance.ps1 -TestFileName check.dat –TestFileSizeInGB 1 -TestFilepath C:temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView
Let’s think about the script arguments:
–TestFileName check.dat– the title of the file created by FSUTIL software;
–TestFileSizeInGB 1– the check file measurement. Possible values are 1.5, 10, 50, 100, 500, 1,000 GB. The file measurement has to be bigger than the scale of the storage system cache. Otherwise, IOPS will likely be measured for the cache knowledge, as an alternative for the disk;
-TestFilepath C:Temp– right here you specify the disk to measure the efficiency for and the folder on the disk, during which a check file will likely be created. You can even specify an UNC path to the community shared folder (SMB);
-TestMode Get-LargeIO– there are two choices of input-output measurement. Get-SmallIO permits to measure IOPS, and Get-LargeIO measures knowledge switch charge. The distinction between SmallIO and LargeIO arguments is within the block measurement of eight KB and 512 KB whereas measuring the speed, and the kind of entry, Random or Sequential, correspondingly;
-FastMode True– within the Fastmode, every check runs 10 seconds, in any other case it takes 60 seconds;
-RemoveTestFile True– take away the check file after the check is over;
-OutputFormat Out-GridView– the check outcomes may be displayed both in EnergyShell console (Format-Table) or in a separate graphic chart window (Out-Gridview).
In our case (a vmdk digital disk on the VMFS datastore on HP MSA 2040 related over SAN is used) the disk array confirmed the typical IOPS worth of about 15,000 and the info transmission charge (throughput) about 5 Gbit/s.
In the next desk, the approximate IOPS values for various disk sorts are proven:
|Raid5 of 6 drives with 10Okay RPM||1000|
I’ve discovered some suggestions for disk efficiency in IOPS for some fashionable Microsoft providers:
- Microsoft Exchange 2010 with 5,000 customers, every of them receives 75 and sends 30 emails per day, would require not less than three,750 IOPS;
- Microsoft SQL 2008 Server with three,500 SQL transactions per second (TPS) requires 28,000 IOPS;
- A typical Windows utility server for 10-100 customers requires 10-40 IOPS.