gpt4 book ai didi

sql-server - 如何使用 PowerShell 监控进程的 CPU 使用率?

转载 作者:行者123 更新时间:2023-12-02 10:00:21 30 4
gpt4 key购买 nike

我正在尝试编写一个 PowerShell 脚本来监视 SQL Server 进程的 CPU 利用率百分比。我想每天记录这个数字的快照,以便我们可以随着时间的推移对其进行监控并观察趋势。

我的在线研究表明这个 WMI 查询应该给我我想要的东西:

Get-WmiObject -Query "SELECT PercentProcessorTime FROM win32_PerfFormattedData_PerfProc_Process WHERE Name='SqlServr'"

当我运行 WMI 查询时,我通常会得到一个介于 30-50% 之间的值 enter image description here

但是,当我在资源监视器中观察进程时,它的平均 CPU 使用率通常低于 1% SQL Server Average CPU Utilization

我知道 WMI 查询只是返回 CPU 使用情况的快照,而不是很长一段时间内的平均值,因此我知道两者不能直接比较。即便如此,我认为快照通常应该小于 1%,因为资源监视器平均值小于 1%。

有人知道为什么会有如此大的差异吗?我如何才能准确测量进程的 CPU 使用率?

最佳答案

过去几天我学到的有关 WMI 和性能计数器的所有知识。

WMI 代表 Windows 管理规范。 WMI 是向 WMI 系统和 Windows COM 子系统注册的类的集合。这些类称为提供程序,并具有任意数量的公共(public)属性,在查询时返回动态数据。

Windows 预装了大量 WMI 提供程序,可为您提供有关 Windows 环境的信息。对于这个问题我们关心Win32_PerfRawData* providers以及基于它构建的两个包装器。

如果您直接查询任何 Win32_PerfRawData* 提供程序,您会发现它返回的数字看起来很可怕。这是因为这些提供商提供了原始数据,您可以使用它们来计算您想要的任何内容。

为了更轻松地使用 Win32_PerfRawData* 提供程序,Microsoft 提供了两个包装器,它们在查询时返回更好的答案:PerfMon 和 Win32_PerfFormattedData* 提供程序。

好的,那么我们如何获得进程的 CPU 利用率百分比呢?我们有三个选择:

  1. 从 Win32_PerfFormattedData_PerfProc_Process 提供程序获取格式良好的数字
  2. 从 PerfMon 获取格式良好的数字
  3. 使用 Win32_PerfRawData_PerfProc_Process 计算我们自己的 CPU 利用率百分比

我们会发现选项 1 存在一个错误,因此它并不在所有情况下都有效,尽管这是互联网上通常给出的答案。

如果您想从 Win32_PerfFormattedData_PerfProc_Process 获取此值,您可以使用问题中提到的查询。这将为您提供该进程的所有线程的 PercentProcessorTime 值的总和。问题是,如果有超过 1 个核心,则该总和可能 >100,但该属性的最大值为 100。因此,只要该进程的所有线程的总和小于 100,您就可以通过除以该进程的线程数来得到答案PercentProcessorTime 属性由机器的核心数量决定。

如果您想从 PowerShell 中的 PerfMon 获取此值,可以使用 Get-Counter "\Process(SqlServr)\% Processor Time"。这将返回 0 - (CoreCount * 100) 之间的数字。

如果您想自己计算该值,Win32_PerfRawData_PerfProc_Process 提供程序上的 PercentProcessorTime 属性将返回该进程已使用的 CPU 时间。因此,您需要拍摄两个快照,我们将它们称为 s1 和 s2。然后我们将执行 (s2.PercentProcessorTime - s1.PercentProcessorTime)/(s2.TimeStamp_Sys100NS - s1.TimeStamp_Sys100NS)。

这就是最终的决定。希望对您有帮助。

关于sql-server - 如何使用 PowerShell 监控进程的 CPU 使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523150/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com