Every statistic that Windows can get uses the Powershell API:
Get-Counter https://technet.microsoft.com/en-us/library/hh849685.aspx
So, for example, if you do this:
Set-Alias grep Select-String (Get-Counter -List PhysicalDisk).PathsWithInstances | grep "C:"
You will get a list of all statistics for you. C: drive
\PhysicalDisk(0 C:)\Current Disk Queue Length \PhysicalDisk(0 C:)\% Disk Time \PhysicalDisk(0 C:)\Avg. Disk Queue Length \PhysicalDisk(0 C:)\% Disk Read Time \PhysicalDisk(0 C:)\Avg. Disk Read Queue Length \PhysicalDisk(0 C:)\% Disk Write Time \PhysicalDisk(0 C:)\Avg. Disk Write Queue Length \PhysicalDisk(0 C:)\Avg. Disk sec/Transfer \PhysicalDisk(0 C:)\Avg. Disk sec/Read \PhysicalDisk(0 C:)\Avg. Disk sec/Write \PhysicalDisk(0 C:)\Disk Transfers/sec \PhysicalDisk(0 C:)\Disk Reads/sec \PhysicalDisk(0 C:)\Disk Writes/sec \PhysicalDisk(0 C:)\Disk Bytes/sec \PhysicalDisk(0 C:)\Disk Read Bytes/sec \PhysicalDisk(0 C:)\Disk Write Bytes/sec \PhysicalDisk(0 C:)\Avg. Disk Bytes/Transfer \PhysicalDisk(0 C:)\Avg. Disk Bytes/Read \PhysicalDisk(0 C:)\Avg. Disk Bytes/Write \PhysicalDisk(0 C:)\% Idle Time \PhysicalDisk(0 C:)\Split IO/Sec
From the iostat man page ( http://linuxcommand.org/man_pages/iostat1.html )
svctm The average service time (in milliseconds) for I/O requests that were issued to the device. await The average time (in milliseconds) for I/O requests issued to the device to be served. This includes the time spent by the requests in queue and the time spent servicing them.
I follow these interpretations:
https://unix.stackexchange.com/questions/104192/iostat-await-vs-svctm
http://www.xaprb.com/blog/2010/09/06/beware-of-svctm-in-linuxs-iostat/
Including a discussion that svctm no longer needs to be used.
If you see https://blogs.technet.microsoft.com/askcore/2012/02/07/measuring-disk-latency-with-windows-performance-monitor-perfmon/ , you will see that Windows has something similar.
A counter named "\ PhysicalDisk (*) \ Avg. Disk sec / Transfer" measures the time taken to:
- Class driver
- Portal driver
- Miniport device driver
- disk subsystem
So, for example, we can track statistics:
Get-Counter -Counter "\PhysicalDisk(0 C:)\% Disk Time" Get-Counter -Counter "\PhysicalDisk(0 C:)\Avg. Disk sec/Transfer"
or, if you want, a more "pipelined" version:
"\PhysicalDisk(0 C:)\% Disk Time","\PhysicalDisk(0 C:)\Avg. Disk sec/Transfer" >> counters.txt cat counters.txt | Get-Counter
For a more detailed explanation of each counter, see:
https://blogs.technet.microsoft.com/askcore/2012/03/16/windows-performance-monitor-disk-counters-explained/