PowerShell :: Get-Counter 显示错误的 CPU 使用率

Posted

技术标签:

【中文标题】PowerShell :: Get-Counter 显示错误的 CPU 使用率【英文标题】:PowerShell :: Get-Counter shows wrong CPU usage 【发布时间】:2021-04-04 20:21:18 【问题描述】:

在official Microsoft documentation 之后,我发现了一个应该打印 CPU 使用率的命令:

Get-Counter -Counter "\Processor(_Total)\% Processor Time" -Continuous

问题在于它打印的 CPU 使用率有 5-10% 的差异(点击 GIF 以获得更好的视图):

这尤其糟糕,因为 Microsoft suggests 命令 Get-Counter 作为在迁移到 Azure SQL DB 之前计算 DTU 的官方方式。

【问题讨论】:

您很可能必须添加其中的几个才能获得您在任务管理器中所说的相同输出。它使用所谓的副本。所以得到生熟的价值并做一些数学运算 【参考方案1】:

它可以在我的计算机上正常工作。 但就我而言,当我使用 -sampleinterval 2 时它更可靠

Get-Counter -Counter "\Processor(_Total)\% Processor Time" -Continuous -SampleInterval 2

但是正如这里提到的:这个例子每秒获取一个计数器的连续样本。若要停止该命令,请按 CTRL+C。要指定更长的采样间隔,请使用 SampleInterval 参数。 Get-Counter

你到底想做什么?

【讨论】:

谢谢@PowershellNoob,我更新了我的问题【参考方案2】:

即使我跑:

typeperf "\Processor(_Total)\% Processor Time"

CPU 计算总是存在差异的。

Get-Counter 按预期工作,总会有差异。

如果您转到任务管理器 > 视图 > 更新速度 > 高,则可以减少这种差异

这样刷新率会更高,Get-Counter 的结果更接近你在任务管理器中看到的结果。但不要期望是一样的。

【讨论】:

以上是关于PowerShell :: Get-Counter 显示错误的 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章

加速PowerShell Get-Counter和Get-Process

Get-Counter 未检索到有效详细信息

在 Powershell 的表中格式化计数器数据

运行 powershell 命令以在 c# 上按进程获取 GPU 使用情况

微调 Get-Counter 脚本以加快执行速度

如何使用名称中带有 * 的 Get-Counter 选择性能计数器