我需要将 PagesPersec 值从 Win32_PerfRawData_PerfOS_Memory 转换为 PerfFormatted Data 值。如何将 PerfRaw 数据值从 WMI 性能计数器转换为 PerfFormatted 数据值。Windows 是否推荐了可用的标准公式。
问问题
787 次
2 回答
1
您需要的公式取决于 CounterType ...请参阅 http://msdn.microsoft.com/en-us/library/aa392761(v=VS.85).aspx
要开始,请查看http://msdn.microsoft.com/en-us/library/aa394597.aspx
于 2011-02-17T14:32:23.447 回答
0
在这里回答太长了。有一篇非常好的带有示例的文章http://msdn.microsoft.com/en-us/library/ms974615.aspx
简而言之:这取决于计数器类型。对于某些计数器,我可以只读取(磁盘可用空间)并根据两个请求进行计算,其中一个请求比另一个请求晚一点,例如:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_PerfRawData_PerfOS_Processor Where Name = '0'")
For Each objItem in colItems
CounterValue1 = objItem.InterruptsPerSec
TimeValue1 = objItem.TimeStamp_PerfTime
TimeBase = objItem.Frequency_PerfTime
Next
For i = 1 to 5
Wscript.Sleep(1000)
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_PerfRawData_PerfOS_Processor Where Name = '0'")
For Each objItem in colItems
CounterValue2 = objItem.InterruptsPerSec
TimeValue2 = objItem.TimeStamp_PerfTime
If TimeValue2 - TimeValue1 = 0 Then
Wscript.Echo "Interrupts Per Second = 0"
Else
intInterrupts = (CounterValue2 - CounterValue1) / _
( (TimeValue2 - TimeValue1) / TimeBase)
Wscript.Echo "Interrupts Per Second = " & Int(intInterrupts)
End if
CounterValue1 = CounterValue2
TimeValue1 = TimeValue2
Next
Next
于 2014-04-14T17:16:31.850 回答