Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W usłudze WMI można zdefiniować statystyczne dane wydajności na podstawie danych w sformatowanych klasach wydajności pochodzących z Win32_PerfFormattedData. Dostępne statystyki to średnia, minimalna, maksymalna, zakres i wariancja, zgodnie z definicjami w Typy Liczników Statystycznych.
Poniższa lista zawiera specjalne typy liczników statystycznych:
W poniższych przykładach pokazano, jak:
- Utwórz plik MOF, który definiuje klasę danych obliczeniowych.
- Napisz skrypt, który tworzy wystąpienie klasy i okresowo odświeża dane w wystąpieniu przy użyciu ponownie obliczonych wartości statystycznych.
Plik MOF
Poniższy przykład kodu MOF tworzy nową klasę danych obliczeniowych o nazwie Win32_PerfFormattedData_AvailableMBytes. Ta klasa zawiera dane z właściwości AvailableMBytes klasy nieprzetworzonej Win32_PerfRawData_PerfOS_Memory. Klasa Win32_PerfFormattedData_AvailableBytes definiuje właściwości Average, Min, Max, Rangei Variance.
Plik MOF używa kwalifikatorów właściwości dla sformatowanych klas liczników wydajności do zdefiniowania źródła danych właściwości i formuły obliczeniowej.
- Właściwość Average uzyskuje nieprzetworzone dane z Win32_PerfRawData_PerfOS_Memory, a właściwośćAvailableMBytes.
- Kwalifikator licznika dla właściwości Average określa pierwotne źródło danych.
- Kwalifikator CookingType określa formułę COOKER_MIN do obliczania danych.
- Kwalifikator SampleWindow określa liczbę próbek do wykonania przed wykonaniem obliczeń.
// 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;
};
Skrypt
Poniższy przykład kodu skryptu uzyskuje statystyki dotyczące dostępnej pamięci w megabajtach przy użyciu utworzonego wcześniej narzędzia MOF. Skrypt używa obiektu skryptowego SWbemRefresher, aby utworzyć moduł odświeżania zawierający jedno wystąpienie klasy statystyk tworzonej przez plik MOF, który jest Win32_PerfFormattedData_MemoryStatistics. Aby uzyskać więcej informacji na temat używania skryptów, zobacz Odświeżanie danych usługi WMI w skryptach. Jeśli pracujesz w języku C++, zobacz Uzyskiwanie dostępu do danych wydajności w języku C++.
Notatka
SWbemRefreshableItem.Object należy wywołać po uzyskaniu elementu z wywołania do SWbemRefresher.Add lub skrypt zakończy się niepowodzeniem. SWbemRefresher.Refresh należy wywołać przed rozpoczęciem pętli w celu uzyskania wartości punktu odniesienia, inaczej właściwości statystyczne wynoszą zero (0) podczas pierwszego przebiegu.
' 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
Uruchamianie skryptu
Poniższa procedura opisuje sposób uruchamiania przykładu.
Aby uruchomić przykładowy skrypt
- Skopiuj zarówno kod MOF, jak i skrypt do plików na komputerze.
- Nadaj plikowi MOF rozszerzenie ".mof" i plikowi skryptu rozszerzenie ".vbs".
- W wierszu polecenia przejdź do katalogu, w którym są przechowywane pliki, i uruchom Mofcomp w pliku MOF. Jeśli na przykład nadasz plikowi nazwę CalculatedData.mof, polecenie to MofcompCalculatedData.mof
- Uruchom skrypt.
Tematy pokrewne
-
uzyskiwanie dostępu do wstępnie zainstalowanych klas wydajności usługi WMI
-
kwalifikatory właściwości dla sformatowanych klas liczników wydajności