【发布时间】:2019-05-19 04:29:42
【问题描述】:
我在具有 2 个逻辑 CPU 内核的虚拟机上运行“wmic cpu get loadpercentage /every:1”命令,我仅获得第一个内核的 LoadPercentage,如您在所附图像中所见: Multicore Issue
如何获得“真实”的 CPU 利用率(即 2 个内核的平均使用率)?
否则,我怎样才能单独读取第二个 CPU 使用率?
谢谢
【问题讨论】:
我在具有 2 个逻辑 CPU 内核的虚拟机上运行“wmic cpu get loadpercentage /every:1”命令,我仅获得第一个内核的 LoadPercentage,如您在所附图像中所见: Multicore Issue
如何获得“真实”的 CPU 利用率(即 2 个内核的平均使用率)?
否则,我怎样才能单独读取第二个 CPU 使用率?
谢谢
【问题讨论】:
Win32_PerfFormattedData_PerfOS_Processor class:
Win32_PerfFormattedData_PerfOS_Processor 格式化数据类 性能计数器类提供预先计算的性能数据 监视处理器活动方面的计数器。处理器是 计算机中执行算术和逻辑的部分 计算,启动外围设备的操作,并运行 进程的线程。一台计算机可以有多个处理器。这 处理器对象将每个处理器表示为 对象。
此类在系统监视器中显示为处理器对象,并且 返回在系统监视器中找到的相同数据。这个类派生出它的 来自相应原始类的原始数据 Win32_PerfRawData_PerfOS_Processor。原始数据源是 PerfOS 性能库。为此动态提供数据 由 WmiPerfInst 提供程序从性能库对象中提取类。
在 Windows 中cmd:
wmic path Win32_PerfFormattedData_PerfOS_Processor where "NOT name = '_Total'" get name, PercentProcessorTime /every:1
【讨论】:
我回答我的问题可能很有趣,但由于我搜索和测试了很多,我想再分享一个选项:
我使用了“typeperf”,发现结果非常接近任务管理器的 CPU 利用率。
控制台的命令是:
typeperf "\Processor Information(_Total)\% Processor Utility"
或下面的批处理文件:
typeperf "\Processor Information(_Total)\%% Processor Utility"
缺点是:
1) 输出格式不是很方便(例如 "01/29/2019 21:24:26.000","8.650791" )
2)如果CPU利用率为100%,则输出>100(基本上~120)
3) 如果 CPU 利用率为 1-2%,则输出为 ~0.5(基本
【讨论】: