我正在使用wmi客户端进行linux。通过它,您可以执行WQL以远程查询Windows服务器。
例如;
Select * from Win32_ComputerSystem
我要做的是计算使用的CPU百分比。
我从'Win32_PerfFormattedData_Counters_ProcessorInformation'获得'PercentProcessorTime'的值。我认为这对于具有单个CPU的计算机来说工作正常,但我对如何计算具有多个CPU的计算机的CPU使用率感到迷茫。
非常感谢任何帮助。
欢呼声。
答案 0 :(得分:2)
如果您SELECT * FROM Win32_PerfFormattedData_Counters_ProcessorInformation
,那么您将获得结果集列表。第一组是所有CPU的总值,其余是各CPU的值。
此代码显示了这个想法。请注意,您应将SYSTEM
替换为您要查询的计算机的名称。
use strict;
use warnings;
use Win32::OLE;
use Win32::OLE::Variant;
STDOUT->autoflush;
my $wmi = Win32::OLE->GetObject('winmgmts:\\\\SYSTEM\root\cimv2') or die Win32::OLE->LastError;
my $list = $wmi->ExecQuery('SELECT * FROM Win32_PerfFormattedData_Counters_ProcessorInformation');
my $n = 0;
for my $cpu (in $list) {
printf "%s: %d%%\n", $n ? "CPU$n" : ' ALL', $cpu->PercentProcessorTime;
$n++;
}
<强>输出强>
ALL: 8%
CPU1: 8%
CPU2: 12%
CPU3: 6%
CPU4: 12%
CPU5: 6%
CPU6: 6%
CPU7: 6%