Are you looking for steps to measure storage performance and IOPS on Windows? Take a peek at this blog.
Here at Bobcares, we have seen several such Windows-related queries as part of our Server Management Services for web hosts and online service providers.
Today we’ll see how to measure storage performance and IOPS on Windows.
Capturing Storage I/O Using Disk Performance Counters in Windows
Now let’s take a look at how our Support Engineers measure the storage performance.
We can roughly estimate the current storage I/O workload in Windows using the built-in disk performance counters from Performance Monitor. To collect these counters data, we follow the below steps.
- First, we start the Perfmon
- Next, we create a new Data Collector Set and select Create manually
- After that, we select the checkbox Create data logs >> Performance counter
- Now in the properties of the new data collection set, we add the following performance counters for the Physical Disk object:
Average Disk Sec/Transfer, Disk Bytes/sec, Average Disk Queue Length, Average Disk Bytes/Transfer, Disk Transfers/sec, Split IO/sec
- Also, we can change other data collection properties. By default, counter values are collected every 15 seconds.
To display real-time disk performance, we need to add a specific Perfmon counter in the Monitoring Tools >> Performance Monitor section.
- Then it remains to start collecting performance counters data (select Start) and wait for the collection of sufficient information for analysis. After that, we right-click the data collector set and select Stop
- In order to view the collected performance data we go to the Perfmon >> Reports >> User Defined >> Data_Disk_IO >> check_the_last_set. By default, disk data displays as graphs.
- Finally, we use Ctrl + G to switch to the Report mode
DiskSpd: Testing Disk Performance and IOPS in Windows
Microsoft recommends using the DiskSpd (https://aka.ms/diskspd) utility for generating a load on a disk system and measuring its performance. It is a command-line interface tool. Moreover, it can perform I/O operations with the specified drive target in several threads. We quite often use DiskSpd to measure the storage performance and get the maximum available read/write speed and IOPS from the specific server.
Moreover, the DiskSpd does not require installation. So we just download and extract the archive to a local disk. For x64 bit systems, we use the version of diskspd.exe from the amd64fre directory.
We use the following command to test the performance of the disk:
diskspd.exe –c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E:\diskpsdtmp.dat > DiskSpeedResults.txt
After the stress test completes, we can obtain the average storage performance values from the output tables.
In our test, the following performance data (check the Total IO table) was obtained:
MiB/s — 241 (about 252 Mb/s, not bad); IOPS — 3866 (perfectly well!); Average latency — 66.206 ms (quite a big latency!).
Also, we can get individual values for reading (section Read IO) or write (section Write IO) operations.
After testing several disks or storage LUNs using diskspd, we can compare them or select an array with the desired performance for tasks.
How to Measure Storage IOPS, Throughput, and Latency Using PowerShell?
First, we download the archive containing 2 files: SQLIO.exe and DiskPerformance.ps1 (disk_perf_iops.ZIP — 74 KB) and extract it to any folder.
Here is an example of running a PowerShell script to estimate disk performance and IOPS:
.\DiskPerformance.ps1 -TestFileName test.dat –TestFileSizeInGB 1 -TestFilepath C:\temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView
In our case (a vmdk virtual disk on the VMFS datastore on HP MSA 2040 connected over SAN is used) the disk array showed the average IOPS value of about 15,000 and the data transmission rate (throughput) about 5 Gbit/s.
In the following table, the approximate IOPS values for different disk types are shown:
[Need any further assistance in measuring storage performance? – We are here to help you]
Today, we saw how our Support Engineers measure storage performance and IOPS on a Windows server.