2010-02-05 2 views
2

Windows XP (결국 2003/2008 서버에서도)에서 페이지 파일 사용을 쿼리하기 위해 약간의 VBScript 프로그램을 작성했지만 내가 얻고있는 것처럼 보이는 수치는 기괴합니다.WMI의 의심스러운 값 Win32_PerfRawData_PerfOS_PagingFile PercentUsage figure

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에 DOCO이 상태 :

PercentUsage
    01

는 프로그램 237,819,  Data type: uint32
        Access type: Read-only
        Qualifiers:
                DisplayName ("% Usage")
         ,319,431 365,583,210     CounterType (537003008)
                DefaultScale (0)
                PerfDetail (200)
        Percentage of the page file instance in use. For more information,
  012

    see the PageFileBytes property in Win32_PerfRawData_PerfProc_Process.
37,819,는 이제 꽤 솔직 보인다. 내 3G 페이지 파일의 21000 %가 할당 된 공간을 사용하는 이유는 무엇입니까? 그것은 대략 630G 일 것이지만 pagefile.sys은 약 1.5G입니다 (그리고 내 전체 하드 디스크는 186G입니다).


업데이트 : Win32_PerfFormattedData_PerfOS_PagingFile에서 같은 분야를 얻을 때

, 나는 5의보다 합리적인 값을 얻을 수 있지만 여전히 작업 관리자, 일치하지 않는 것은이 1.06G의 사용법을 보여줍니다 3G에서 최대.

답변

1

이와 같은 값으로 직접 조작 할 수 없습니다.

ProcessUsage 속성의 CounterType537003008이고, according to this tablePERF_RAW_FRACTION 카운터에 해당합니다.두 번째 링크의 수식이 주어지면 다음과 같이 끝납니다.

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

이렇게 좋습니다. 이 수식을 사용하면 포맷 된 데이터의 구석에있는 5.77이됩니다. 나는 단지 작업 관리자가 3G에서 1.06G를 사용하는 이유를 궁금해합니다. 포맷 된 데이터를 사용하면 끝날 수도 있습니다. – paxdiablo

+0

41.591 ... 성능 카운터는 ~ 42 %, 작업 관리자는 ~ 50 %를 보여줍니다. 이제 누가 우리에게 거짓말을하는지 추측 할 수 있습니다. (나는 여기에 나쁜 녀석이되는 작업 관리자를 향해 기울고있다, 그것은 가상 메모리의 최대 크기를 고려하고 있는가? ...) – arul

+0

나는 해결책을 찾았다 고 생각한다. Win32_PerfFormattedData_PerfOS_Memory에서 CommittedBytes를 더하면 같은 값을 얻게됩니다 (현재 약 1.1G). 이것이 활성 페이지가 페이지를 쓰는 페이징 파일에 예약 된 모든 메모리입니다. 그래서 우리는 아마도 그것과 퍼센트 수치를보고 할 것입니다. 고마워하고 받아 들여라. – paxdiablo

관련 문제