系统运行状况扩展事件导致的进程利用率不正确?

Beg*_*DBA 10 sql-server extended-events sql-server-2012 sql-server-2014 sql-server-2016

我最近一直致力于了解存储在系统健康扩展事件事件文件中的数据或指标。

我们正在尝试使用此处提供的系统运行状况来实现性能指标的数据收集

有一些报告提供了从名为的系统运行状况事件收集的 CPU 利用率、其他进程利用率等指标

scheduler_monitor_system_health_ring_buffer_recorded
Run Code Online (Sandbox Code Playgroud)

对于一些繁忙的服务器,我无法理解为什么报告中列为 SQL CPU 利用率的字段“process_utilization”大部分时间都在 100 以上。在高峰时间,它在 120-160 之间变化,因此报告是始终显示 CPU 高于 100,即使当我从服务器活动监视器中检查时,情况并非如此。

我在 Github 中提出了这个问题,但似乎没有修复或回应。

因此,我的问题是

  1. 如何使用记录的系统运行状况环缓冲区获取服务器的 SQL CPU 利用率的准确数字?

  2. 报告还显示根据其报告计算的以下 2 个字段的计数器

  1. 100-System_idle-process_utilization 作为 OtherProcessUtil

  2. 100-system_idle 作为 SystemUtil

这些OtherProcessUtilSystemUtil需要/有什么帮助?

  1. 我也看到内存利用率每次总是显示为 100。这似乎也不正确。有人注意到了吗?

其他工具(如 Idera 和 sentry [我测试过的])不会显示相同服务器的 CPU 使用率超过 100%。我对相同的负载进行了并排比较。

小智 1

超过 100% 的磁盘和处理器百分比计数器的值应除以系统中存在的处理器或磁盘的数量。因此 100% 意味着它正在 100% 使用一个处理器。250% 意味着它使用两个半处理器。因此,如果它报告 120%,请查看这是否等于 120 / <处理器数量>。

\n\n

请注意,tigertools 的最新更改是 2018 年 6 月。您可以查看sqlwatch.io,因为它似乎是一个更加活跃的项目。

\n\n

请参阅social.msdn.microsoft.com/Forums/sqlserver/en-US/\xe2\x80\xa6,只需将其更改为 TOP(1) 即可获取当前 SQL CPU 使用情况。

\n\n

\xe2\x80\x93托尼·欣克尔

\n