This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Win32_PerfRawData vs Win32_PerfFormattedData in APM

I am using NPM 9.1 SP5 & APM 2.5

I am using a WMI query to get some disk IO statistics for my Windows hosts.  One example is:

SELECT CurrentDiskQueueLength FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk WHERE Name='_Total'

This query works great on 2003 systems.  Win32_PerfFormattedData is not available in Windows 2000, so i tried using this query instead:

SELECT CurrentDiskQueueLength FROM Win32_PerfRawData_PerfDisk_PhysicalDisk WHERE Name='_Total'

I can now collect statistics on 2000 & 2003 systems, but the numbers are HUGE.  I realize that the Raw data keeps adding up over time.  How can i make this data useful in APM?


  • They are huge numbers because the raw data has to be "cooked" with another number to convert it to something meaningful. Unfortunately, because the Performance Counter monitor doesn't provide a way to do arithmetic in the monitor itself, you can't use that monitor to get accurate disk size information from Windows 2000.


    You can write a Windows script monitor to get the data you want.  

    It seemed to be a common enough scenario, so as a example for another customer, I wrote a script that converts the raw data to something meaningful. The script reads the raw data %free for the C: logical drive, converts it to a percentage of disk space used, and reports that value as the statistic.

    I got the instructions on how to convert the raw data from a Microsoft Scripting tutorial: . You can probably change a few things in the script to make this work for physical disk sizes.


    1. This script requires the following script arguments


      Script Arguments:   ${IP} ${USER} ${PASSWORD}

    2. This script cannot monitor the status of the Orion NPM server itself, because it *only* makes remote WMI calls. You have to use the other script for that.

    strComputer = wscript.arguments(0)

    strUser = wscript.arguments(1)
    strPassword = wscript.arguments(2)

    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objSWbemLocator.ConnectServer (strComputer, "root\cimv2", strUser, strPassword)

    Set colDisks = objWMIService.ExecQuery _
        ("Select * from Win32_PerfRawData_PerfDisk_LogicalDisk Where Name = 'C:'")

    For Each objDisk in colDisks
        intBaseValue = objDisk.PercentFreeSpace_Base
        dblActualUsedSpace = 100 - ((100 * objDisk.PercentFreeSpace) / intBaseValue)
        WScript.Echo "Statistic:" & Int(dblActualUsedSpace)

  • I see how you do this calculation using the used space which has a "base" counter as well (objDisk.PercentFreeSpace_Base).  There are 4 specific metrics that I am trying to capture for Disk IO, but only 1 has a base metric as well.

    PercentDiskTime (has base)

    Is there an article or a way to do this calulation on a metric without a base?