Microsoft KB Archive/269481

From BetaArchive Wiki

INFO: Changes to LogicalDisk and PhysicalDisk Precision Counter Types for Windows 2000

Q269481



The information in this article applies to:


  • Microsoft Win32 Application Programming Interface (API), included with:
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional
    • Microsoft Windows 2000 Server
    • Microsoft Windows NT Server version 4.0
    • Microsoft Windows NT Workstation version 4.0





SUMMARY

An application can use either the Performance Data Helper (PDH) functions or the RegQueryValueEx function with HKEY_PERFORMANCE_DATA to collect performance data information of any performance object. This article explains the LogicalDisk and PhysicalDisk counter types that changed from Windows NT 4.0 to Windows 2000.



MORE INFORMATION

Windows 2000 added a new counter, % Idle Time, to both logical and physical disks. It also changed the type of some counter data. The remainder of this article discusses the disk counters on Windows NT 4.0 and on Windows 2000.

Windows NT 4.0 Disk Counters

On Windows NT 4.0, the LogicalDisk and PhysicalDisk performance objects have the following counter definitions:


Counter Name Counter Index Counter Type
% Disk Time 200 PERF_COUNTER_TIMER
% Disk Read Time 202 PERF_COUNTER_TIMER
% Disk Write Time 204 PERF_COUNTER_TIMER
Avg. Disk Queue Length 1400 PERF_COUNTER_LARGE_QUEUELEN_TYPE
Avg. Disk Read Queue Length 1402 PERF_COUNTER_LARGE_QUEUELEN_TYPE
Avg. Disk Write Queue Length 1404 PERF_COUNTER_LARGE_QUEUELEN_TYPE


The calculation for PERF_COUNTER_TIMER counter type is performed as follows:


Element Value
X CounterData
Y PerfTime from PERF_DATA_BLOCK
Time base PerfFreq
Data Size 8 Bytes
Display Suffix %
Calculation 100*(X1-X0)/(Y1-Y0)
  • X0 = counter value from first measurement.
  • X1 = counter value from second measurement.
  • Y0 = time from the PERF_DATA_BLOCK.PerfTime member for the first measurement.
  • Y1 = time from the PERF_DATA_BLOCK.PerfTime member for the second measurement.

The calculation for PERF_COUNTER_LARGE_QUEUELEN_TYPE counter type is performed as follows:


Element Value
X CounterData
Y PerfTime from PERF_DATA_BLOCK
Time base PerfFreq
Data Size 8 Bytes
Display Suffix No suffix
Calculation (X1-X0)/(Y1-Y0)
  • X0 = counter value from first measurement.
  • X1 = counter value from second measurement.
  • Y0 = time from the PERF_DATA_BLOCK.PerfTime member for the first measurement.
  • Y1 = time from the PERF_DATA_BLOCK.PerfTime member for the second measurement.

Windows 2000 Disk Counters

On Windows 2000, the % Time counters in LogicalDisk as well as PhysicalDisk performance objects are changed to use precision counters. Precision counters consist of two counter values:

  • The counter data of the event that is being monitored.
  • The "clock" time in the same units as the first item.This is when the measurement was made.

A precision counter consists of the performance data object and a timestamp counter immediately following it with the same counter index. Precision counters are used where the standard system timers are not precise enough for accurate readings. The performance service that is supplying the performance data provides a timestamp at the same time, which eliminates any error that is caused by small and variable lapses between the time the system timestamp is captured and when the data is collected from the performance DLL.

The LogicalDisk and PhysicalDisk performance objects have the following counter definitions on Windows 2000:


Counter Name Counter Index Counter Type
% Disk Time 200 PERF_PRECISION_100NS_TIMER
% Disk Time 200 PERF_PRECISION_TIMESTAMP
% Disk Read Time 202 PERF_PRECISION_100NS_TIMER
% Disk Read Time 202 PERF_PRECISION_TIMESTAMP
% Disk Write Time 204 PERF_PRECISION_100NS_TIMER
% Disk Write Time 204 PERF_PRECISION_TIMESTAMP
% Idle Time 1482 PERF_PRECISION_100NS_TIMER
% Idle Time 1482 PERF_PRECISION_TIMESTAMP
Avg. Disk Queue Length 1400 PERF_COUNTER_100NS_QUEUELEN_TYPE
Avg. Disk Read Queue Length 1402 PERF_COUNTER_100NS_QUEUELEN_TYPE
Avg. Disk Write Queue Length 1404 PERF_COUNTER_100NS_QUEUELEN_TYPE


The calculation for PERF_PRECISION_100NS_TIMER counter type is performed as follows:


Element Value
X CounterData
Y N/A
Time base PerfTime100nSec from PERF_DATA_BLOCK
Data Size 8 Bytes
Display Suffix %
Calculation 100*(X1-X0)/(B1-B0)
  • X0 = counter value from first measurement (PERF_PRECISION_100NS_TIMER).
  • X1 = counter value from second measurement (PERF_PRECISION_100NS_TIMER).
  • B0 = time from the PERF_PRECISION_TIMESTAMP for the first measurement.
  • B1 = time from the PERF_PRECISION_TIMESTAMP for the second measurement.

For the PERF_PRECISION_100NS_TIMER counter type, the data collected is in the PERF_PRECISION_100NS_TIMER counter. The timestamp, which is stored in a PERF_PRECISION_TIMESTAMP counter, follows immediately and has the same counter index. For example, after the application has determined the counter index 200 and location of the % Disk Time counter, the precision timestamp base is the counter following it with a counter index of 200.

The calculation for PERF_COUNTER_100NS_QUEUELEN_TYPE counter type is performed as follows:


Element Value
X CounterData
Y PerfTime100nSec from PERF_DATA_BLOCK
Time base 100NS
Data Size 8 Bytes
Display Suffix No suffix
Calculation (X1-X0)/(Y1-Y0)
  • X0 = counter value from first measurement.
  • X1 = counter value from second measurement.
  • Y0 = time from the PERF_DATA_BLOCK.PerfTime member for the first measurement.
  • Y1 = time from the PERF_DATA_BLOCK.PerfTime member for the second measurement.



REFERENCES

For detailed information about how to retrieve these counter values, refer to the Performance Monitoring topic in Microsoft Platform SDK or the Microsoft Developer Network (MSDN) documentation, under Base Services.

Additional query words:

Keywords : kbKernBase kbOSWin2000 kbPerfMon kbSDKWin32 kbDSupport kbGrpDSKernBase
Issue type : kbinfo
Technology : kbAudDeveloper kbWin32sSearch kbWin32API


Last Reviewed: October 28, 2000
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.