来自不同来源的 PowerShell WQL 性能
PowerShell WQL from different sources performance
有以下 WQL 查询,效果很好。
$avg = Get-WmiObject win32_processor -computername $computername |
Measure-Object -property LoadPercentage -Average |
Foreach {$_.Average}
$tcat = Get-WmiObject Win32_PerfFormattedData_PerfProc_Process -computername $computername |
Where-Object {$_.Name -like "*tomcat*"} |
Sort-Object PercentProcessorTime -Descending |
select -First 1
$mem = Get-WmiObject win32_operatingsystem -ComputerName $computername |
Foreach {"{0:N2}" -f ((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)*100)/ $_.TotalVisibleMemorySize)}
将这些结果记录到 SQL 数据库一个多星期了。
第一个 "overall" CPU 使用率为 70%,进程 CPU 为 98%。
这是否意味着 70% 使用率的 98% 或系统的 98% CPU?
这让我有点困惑。
您的 Process_CPU 列由 WMI 的 "Percent Processor Time" 字段中的数据填充。 "Percent Processor Time" 测量的是处理器在非空闲线程上花费的时间量(从技术上讲,它计算线程 处于 空闲的时间量,然后减去它作为100 的百分比)。
由于您要测量 Tomcat,我想您是在网络服务器上测量的。这就是说 98% 的时间,Tomcat 是 运行 处于非空闲状态(这意味着它正在做 某事 ,比如处理请求或为网站提供服务).
为了更具体地回答您的问题,而不是您的 PROCESS_CPU 列测量 70% 的 98%,它测量的是 98% 的时间 >0% 的使用率。
有以下 WQL 查询,效果很好。
$avg = Get-WmiObject win32_processor -computername $computername |
Measure-Object -property LoadPercentage -Average |
Foreach {$_.Average}
$tcat = Get-WmiObject Win32_PerfFormattedData_PerfProc_Process -computername $computername |
Where-Object {$_.Name -like "*tomcat*"} |
Sort-Object PercentProcessorTime -Descending |
select -First 1
$mem = Get-WmiObject win32_operatingsystem -ComputerName $computername |
Foreach {"{0:N2}" -f ((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)*100)/ $_.TotalVisibleMemorySize)}
将这些结果记录到 SQL 数据库一个多星期了。
第一个 "overall" CPU 使用率为 70%,进程 CPU 为 98%。 这是否意味着 70% 使用率的 98% 或系统的 98% CPU?
这让我有点困惑。
您的 Process_CPU 列由 WMI 的 "Percent Processor Time" 字段中的数据填充。 "Percent Processor Time" 测量的是处理器在非空闲线程上花费的时间量(从技术上讲,它计算线程 处于 空闲的时间量,然后减去它作为100 的百分比)。
由于您要测量 Tomcat,我想您是在网络服务器上测量的。这就是说 98% 的时间,Tomcat 是 运行 处于非空闲状态(这意味着它正在做 某事 ,比如处理请求或为网站提供服务).
为了更具体地回答您的问题,而不是您的 PROCESS_CPU 列测量 70% 的 98%,它测量的是 98% 的时间 >0% 的使用率。