Windows WMI Win32_PerfRawData_PerfOS_PagingFile PercentUsage figure中的可疑值
我已经编写了一个小的VBScript程序来查询WindowsXP下的页面文件使用情况(最终也是2003/2008服务器),但是我得到的数据似乎很奇怪 以下是节目:Windows WMI Win32_PerfRawData_PerfOS_PagingFile PercentUsage figure中的可疑值,windows,vbscript,wmi,Windows,Vbscript,Wmi,我已经编写了一个小的VBScript程序来查询WindowsXP下的页面文件使用情况(最终也是2003/2008服务器),但是我得到的数据似乎很奇怪 以下是节目: Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") for i = 1 to 10 Set qry1 = wmi.ExecQuery ("Select * from Win32_PageFileSetting")
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上的文档说明:
使用率百分比
数据类型:uint32
访问类型:只读
限定符:
DisplayName(“%Usage”)
计数器类型(537003008)
DefaultScale(0)
PerfDetail(200)
正在使用的页面文件实例的百分比。有关详细信息,请参见
请参阅Win32_PerfRawData_PerfProc_进程中的PageFileBytes属性。
现在这看起来很直截了当。为什么我的3G页面文件占用了21000%的分配空间?这大约是630G,但pagefile.sys大约只有1.5G(我的整个硬盘只有186G)
更新:
当我从Win32 PerfFormattedData PerfOS PagingFile中得到相同的字段时,我得到了一个更合理的值5,但这似乎与Task Manager并不一致,它显示3G最大使用量超出了1.06G。您不能像这样直接使用该值
ProcessUsage
属性的CounterType
是537003008
,它对应于计数器。根据第二个链接的公式,我们得出如下结论:
" Percent used: " & ((obj.PercentUsage * 100) / obj.PercentUsage_Base) & _
那更好。用这个公式,我得到5.77。。。在格式化数据的大致范围内。我只是想知道为什么任务管理器声明在3G中使用1.06G。我可能只是使用格式化的数据。我得到41.591。。。性能计数器显示约42%,任务管理器显示约50%。。。现在我们只能猜测谁在骗我们。(我倾向于任务管理器是这里的坏蛋,它是否考虑了虚拟内存的最大大小?…)我想我找到了解决方案。如果将Win32_performatteddata_PerfOS_内存中的CommitteedBytes相加,则会得到相同的值(目前约为1.1G)。这是分页文件中为活动进程写入其页面而保留的所有内存。所以我们可能会报告这个数字和百分比。谢谢并接受。