Подозрительное значение из WMI Win32_PerfRawData_PerfOS_PagingFile PercentUsage figure - PullRequest
2 голосов
/ 05 февраля 2010

Я написал небольшую программу на VBScript для запроса использования файла подкачки в Windows XP (в конечном итоге и на сервере 2003/2008), но цифры, которые я получаю, выглядят странно.

Это программа:

Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
for i = 1 to 10
    Set qry1 = wmi.ExecQuery ("Select * from Win32_PageFileSetting")
    Set qry2 = wmi.ExecQuery ("Select * from Win32_PerfRawData_PerfOS_PagingFile")
    initial = 0
    maximum = 0
    For Each obj in qry1
        initial = initial + obj.InitialSize
        maximum = maximum + obj.MaximumSize
    Next
    For Each obj in qry2
        if obj.Name = "_Total" then
            Wscript.Echo _
                " Initial size: " & initial & _
                " Maximum size: " & maximum & _
                " Percent used: " & obj.PercentUsage & _
                ""
        end if
    Next
    qry1 = none
    qry2 = none
    WScript.sleep (1000)
Next

который выводит:

Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354
Initial size: 1512 Maximum size: 3024 Percent used: 21354

В документе MSDN указано:

PercentUsage
Data type: uint32
Access type: Read-only
Qualifiers:
DisplayName ("% Usage")
CounterType (537003008)
DefaultScale (0)
PerfDetail (200)
Percentage of the page file instance in use. For more information,
see the PageFileBytes property in Win32_PerfRawData_PerfProc_Process.

Теперь это кажется довольно простым. Почему мой файл подкачки 3G использует 21000% выделенного пространства? Это было бы около 630 ГБ, но pagefile.sys - всего лишь 1,5 ГБ (а весь мой жесткий диск - только 186 ГБ).


Обновление:

Когда я получаю то же поле из Win32_PerfFormattedData_PerfOS_PagingFile, я получаю более разумное значение 5, но оно все еще не совпадает с диспетчером задач, который показывает использование 1.06G из максимального 3G.

1 Ответ

1 голос
/ 05 февраля 2010

Вы не можете работать с таким значением напрямую.

CounterType свойства ProcessUsage равно 537003008, что согласно этой таблице соответствует счетчику PERF_RAW_FRACTION. Учитывая формулу из второй ссылки, мы получим что-то вроде этого:

" Percent used: " & ((obj.PercentUsage * 100) / obj.PercentUsage_Base) & _
...