【问题标题】:(Batch) "wmic cpu" issue with multi-core system(批处理)多核系统的“wmic cpu”问题
【发布时间】:2019-05-19 04:29:42
【问题描述】:

我在具有 2 个逻辑 CPU 内核的虚拟机上运行“wmic cpu get loadpercentage /every:1”命令,我仅获得第一个内核的 LoadPercentage,如您在所附图像中所见: Multicore Issue

如何获得“真实”的 CPU 利用率(即 2 个内核的平均使用率)?

否则,我怎样才能单独读取第二个 CPU 使用率?

谢谢

【问题讨论】:

    标签: cpu multicore wmic


    【解决方案1】:

    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
    

    【讨论】:

    • 我的两个问题都使用 Win32_PerfFormattedData_PerfOS_Processor 和相应的“NOT name = ...”和“name =”语法解决。我看到测量的 CPU 通常比任务管理器的 CPU 少 10% 左右。但是,CPU 使用率确实很棘手,因为即使是任务管理器和性能监视器有时也会显示略有不同的量级。
    【解决方案2】:

    我回答我的问题可能很有趣,但由于我搜索和测试了很多,我想再分享一个选项:

    我使用了“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(基本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      相关资源
      最近更新 更多