Delen via


Statistische prestatiegegevens verkrijgen

In WMI kunt u statistische prestatiegegevens definiëren op basis van gegevens in opgemaakte prestatieklassen die zijn afgeleid van Win32_PerfFormattedData. De beschikbare statistieken zijn gemiddeld, minimum, maximum, bereik en variantie, zoals gedefinieerd in Statistische tellertypen.

De volgende lijst bevat de speciale statistische teller typen:

In de volgende voorbeelden ziet u hoe u:

  • Maak een MOF-bestand dat een klasse berekende gegevens definieert.
  • Schrijf een script waarmee een exemplaar van de klasse wordt gemaakt en vernieuwt periodiek de gegevens in het exemplaar met de herberekende statistische waarden.

MOF-bestand

In het volgende MOF-codevoorbeeld wordt een nieuwe berekende gegevensklasse gemaakt met de naam Win32_PerfFormattedData_AvailableMBytes. Deze klasse bevat gegevens uit de eigenschap AvailableMBytes van de onbewerkte klasse Win32_PerfRawData_PerfOS_Memory. De klasse Win32_PerfFormattedData_AvailableBytes definieert de eigenschappen Gemiddelde, Min, Max, Bereiken Afwijking.

Het MOF-bestand maakt gebruik van de Eigenschapskwalificaties voor opgemaakte prestatiemeteritems om de eigenschapsgegevensbron en de berekeningsformule te definiëren.

  • De eigenschap Average verkrijgt onbewerkte gegevens uit de Win32_PerfRawData_PerfOS_Memoryen de eigenschapAvailableMBytes.
  • De teller kwalificeerder voor de eigenschap Gemiddelde bepaalt de onbewerkte gegevensbron.
  • De CookingType kwalificatie geeft de formule COOKER_MIN op voor het berekenen van de gegevens.
  • De SampleWindow kwalificatie geeft aan hoeveel monsters moeten worden genomen voordat de berekening wordt uitgevoerd.
// Store the new Win32_PerfFormattedData_MemoryStatistics
//     class in the Root\Cimv2 namespace
#pragma autorecover
#pragma namespace("\\\\.\\Root\\CimV2")

qualifier vendor:ToInstance;
qualifier guid:ToInstance;
qualifier displayname:ToInstance;
qualifier perfindex:ToInstance;
qualifier helpindex:ToInstance;
qualifier perfdetail:ToInstance;
qualifier countertype:ToInstance;
qualifier perfdefault:ToInstance;
qualifier defaultscale:ToInstance;

qualifier dynamic:ToInstance;
qualifier hiperf:ToInstance;
qualifier AutoCook:ToInstance;
qualifier AutoCook_RawClass:ToInstance;
qualifier CookingType:ToInstance;
qualifier Counter:ToInstance;


// Define the Win32_PerFormattedData_MemoryStatistics
//     class, derived from Win32_PerfFormattedData
[
  dynamic,
  // Name of formatted data provider: "WMIPerfInst" for Vista 
  //   and later
  provider("HiPerfCooker_v1"), 
  // Text that will identify new counter in Perfmon
  displayname("My Calculated Counter"),                            
  // A high performance class     
  Hiperf,
  // Contains calculated data 
  Cooked, 
  // Value must be 1 
  AutoCook(1), 
  // Raw performance class to get data for calculations
  AutoCook_RawClass("Win32_PerfRawData_PerfOS_Memory"),
  // Value must be 1        
  AutoCook_RawDefault(1),
  // Name of raw class property to use for timestamp in formulas 
  PerfSysTimeStamp("Timestamp_PerfTime"), 
  // Name of raw class property to use for frequency in formulas
  PerfSysTimeFreq("Frequency_PerfTime"), 
  // Name of raw class property to use for timestamp in formulas
  Perf100NSTimeStamp("Timestamp_Sys100NS"),
  // Name of raw class property to use for frequency in formulas
  Perf100NSTimeFreq("Frequency_Sys100NS"),
  // Name of raw class property to use for timestamp in formulas
  PerfObjTimeStamp("Timestamp_Object"),
  // Name of raw class property to use for frequency in formulas 
  PerfObjTimeFreq("Frequency_Object"),
  // Only one instance of class allowed in namespace
  singleton                                                   
]

class Win32_PerfFormattedData_MemoryStatistics
          : Win32_PerfFormattedData
{

// Define the properties for the class. 
// All the properties perform different
//     statistical operations on the same
//     property, AvailableMBytes, in the raw class

// Define the Average property,
//     which uses the "COOKER_AVERAGE" counter type and 
//     gets its data from the AvailableMBytes 
//     property in the raw class

    [
     CookingType("COOKER_AVERAGE"),
     Counter("AvailableMBytes"),
     SampleWindow(10)
    ]
    uint64 Average = 0;

// Define the Min property, which uses
//     the "COOKER_MIN" counter type and 
//     gets its data from the AvailableMBytes
//     property in the raw class

    [
     CookingType("COOKER_MIN"),
     Counter("AvailableMBytes"),
     SampleWindow(10)
    ]
    uint64 Min = 0;

// Define the Max property, which uses
//     the "COOKER_MAX" counter type and 
//     gets its data from the
//     AvailableMBytes property in the raw class

    [
     CookingType("COOKER_MAX"),
     Counter("AvailableMBytes"),
     SampleWindow(10)
    ]
    uint64 Max = 0;

// Define the Range property, which uses
//     the "COOKER_RANGE" counter type and 
//     gets its data from the AvailableMBytes
//     property in the raw class

    [
     CookingType("COOKER_RANGE"),
     Counter("AvailableMBytes"),
     SampleWindow(10)
    ]
    uint64 Range = 0;

// Define the Variance property, which uses
//     the "COOKER_VARIANCE" counter type and 
//     gets its data from the AvailableMBytes
//     property in the raw class

    [
     CookingType("COOKER_VARIANCE"),
     Counter("AvailableMBytes"),
     SampleWindow(10)
    ]
    uint64 Variance = 0;
};

Script

In het volgende voorbeeld van scriptcode worden statistieken verkregen over het beschikbare geheugen, in megabytes, met behulp van de eerder gemaakte MOF. Het script maakt gebruik van het SWbemRefresher scriptobject om een vernieuwingsfunctie te maken die één exemplaar van de statistiekenklasse bevat die door het MOF-bestand wordt gemaakt. Dit is Win32_PerfFormattedData_MemoryStatistics. Zie WMI-gegevens vernieuwen in scriptsvoor meer informatie over het gebruik van scripts. Als u in C++ werkt, zie Toegang tot prestatiegegevens in C++.

Notitie

SWbemRefreshableItem.Object moet worden aangeroepen nadat het item is opgehaald uit de aanroep van SWbemRefresher.Add, anders zal het script mislukken. SWbemRefresher.Refresh moet worden aangeroepen voordat u de lus betreedt om basislijnwaarden te verkrijgen, anders zijn de statistische eigenschappen nul (0) bij de eerste doorgang.

 

' Connect to the Root\Cimv2 namespace
strComputer = "."
Set objService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")

' Create a refresher
Set Refresher = CreateObject("WbemScripting.SWbemRefresher")
If Err <> 0 Then
WScript.Echo Err
WScript.Quit
End If

' Add the single instance of the statistics
'    class to the refresher
Set obMemoryStatistics = Refresher.Add(objService, _
    "Win32_PerfFormattedData_MemoryStatistics=@").Object

' Refresh once to obtain base values for cooking calculations
Refresher.Refresh

Const REFRESH_INTERVAL = 10

' Refresh every REFRESH_INTERVAL seconds 
For I=1 to 3
  WScript.Sleep REFRESH_INTERVAL * 1000
  Refresher.Refresh

  WScript.Echo "System memory statistics" _
      & "(Available Megabytes) " _
      & "for the past 100 seconds - pass " & i 
  WScript.Echo "Average = " _
     & obMemoryStatistics.Average & VBNewLine & "Max = " _
     & obMemoryStatistics.Max & VBNewLine & "Min = " _
     & obMemoryStatistics.Min & VBNewLine & "Range = " _ 
     & obMemoryStatistics.Range & VBNewLine & "Variance = " _
     & obMemoryStatistics.Variance 
Next

Het script uitvoeren

In de volgende procedure wordt beschreven hoe u het voorbeeld uitvoert.

Het voorbeeldscript uitvoeren

  1. Kopieer zowel de MOF-code als het script naar bestanden op uw computer.
  2. Geef het MOF-bestand een .mof-extensie en het scriptbestand een .vbs-beschrijving.
  3. Ga op de opdrachtregel naar de map waarin de bestanden zijn opgeslagen en voer Mofcomp- uit op het MOF-bestand. Als u bijvoorbeeld het bestand een naam geeft CalculatedData.mof, wordt de opdracht MofcompCalculatedData.mof
  4. Voer het script uit.

Prestatiegegevens bewaken

toegang tot vooraf geïnstalleerde WMI-prestatieklassen

Eigenschapskwalificaties voor opgemaakte prestatietellerklassen

Statistische tellertypen