Freigeben über


Abrufen statistischer Leistungsdaten

In WMI können Sie statistische Leistungsdaten basierend auf Daten in formatierten Leistungsklassen definieren, die von Win32_PerfFormattedData abgeleitet werden. Die verfügbaren Statistiken sind „Average“, „Minimum“, „Maximum“, „Range“ und „Variance“, wie in Statistische Leistungsindikatortypen definiert.

Die folgende Liste enthält die spezifischen Typen statistischer Leistungsindikatoren:

Die folgenden beiden Beispiele zeigen die Vorgehensweise:

  • Erstellen Sie eine MOF-Datei, die eine Klasse berechneter Daten definiert.
  • Schreiben Sie ein Skript, das eine Instanz der Klasse erstellt, und die Daten in der Instanz regelmäßig mit den neu berechneten statistischen Werten aktualisiert.

MOF-Datei

Im folgenden MOF-Codebeispiel wird eine neu berechnete Datenklasse namens Win32_PerfFormattedData_AvailableMBytes erstellt. Diese Klasse enthält Daten aus der Eigenschaft AvailableMBytes der rohen Klasse Win32_PerfRawData_PerfOS_Memory. Die Klasse Win32_PerfFormattedData_AvailableBytes definiert die Eigenschaften Average, Min, Max, Range und Variance.

Die MOF-Datei verwendet die Eigenschaftsqualifizierer für formatierte Leistungsindikatorklassen, um die Eigenschaftsdatenquelle und die Berechnungsformel zu definieren.

  • Die Eigenschaft Average ruft Rohdaten aus der Eigenschaft Win32_PerfRawData_PerfOS_Memory.AvailableMBytes ab.
  • Der Qualifizierer Counter für die Eigenschaft Average gibt die Rohdatenquelle an.
  • Der Qualifizierer CookingType gibt die Formel COOKER_MIN zum Berechnen der Daten an.
  • Der Qualifizierer SampleWindow gibt die Zahl der Proben vor der Durchführung der Berechnung an.
// 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;
};

Skript

Im folgenden Skriptcodebeispiel werden Statistiken zum verfügbaren Arbeitsspeicher (in Megabyte) über die zuvor erstellte MOF-Datei abgerufen. Das Skript verwendet das Skriptobjekt SWbemRefresher, um eine Aktualisierung zu erstellen, die eine einzelne Instanz der von der MOF-Datei erstellten Statistikklasse enthält: Win32_PerfFormattedData_MemoryStatistics. Weitere Informationen zur Verwendung von Skripts finden Sie unter Aktualisieren von WMI-Daten in Skripts. Wenn Sie in C++ arbeiten, finden Sie unter Zugreifen auf Leistungsdaten in C++ weitere Informationen.

Hinweis

SWbemRefreshableItem.Object muss aufgerufen werden, nachdem das Element aus dem Aufruf von SWbemRefresher.Add erhalten wurde. Ansonsten schlägt das Skript fehl. SWbemRefresher.Refresh muss aufgerufen werden, bevor die Schleife gestartet wird, um Basiswerte zu erhalten. Ansonsten sind die statistischen Eigenschaften beim ersten Durchgang null (0).

 

' 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

Ausführen des Skripts

Im Folgenden wird die Ausführung des Beispiels beschrieben.

So führen Sie das Beispielskript aus

  1. Kopieren Sie sowohl den MOF-Codedatei als auch die Skriptdatei zu Ihrem Computer.
  2. Geben Sie der MOF-Datei die Erweiterung .mog und der Skriptdatei die Erweiterung .vbs.
  3. Ändern Sie in der Befehlszeile das Verzeichnis, in dem die Dateien gespeichert werden, und führen Sie Mofcomp für die MOF-Datei aus. Wenn Sie der Datei beispielsweise den Namen CalculatedData.mof geben, lautet der Befehl "Mofcomp CalculatedData.mof.
  4. Führen Sie das Skript aus.

Überwachen von Leistungsdaten

Zugreifen auf vorinstallierte WMI-Leistungsklassen

Eigenschaftsqualifizierer für formatierte Leistungsindikatorklassen

Statistische Leistungsindikatortypen