为什么活动监视器与资源监视器中的处理器百分比不同?

Aar*_*ron 6 sql-server-2008-r2 activity-monitor windows-server

我正在跟踪 SQL Server 活动监视器中报告的处理器百分比与资源监视器中使用的总处理器百分比之间的显着差异。我看到两者之间大约有 50% 的差异,而活动监视器总是更高。

系统规格:

  • SQL Server EE 2008 R2
  • 视窗 2008 R2
  • 裸机
  • 96 个核心,无处理器关联集(4 个物理插槽,每个 12 个核心,启用超线程)
  • 768 GB 内存
  • 主动/被动集群
  • SSD 的直连存储

什么会导致这种差异?

我应该看哪一个?

CPU比较

更新:

我看到资源监视器将其分为不同的类别,但是“CPU - 总计”图表不会显示机器上的所有 CPU 使用情况吗?

任务管理器性能选项卡显示它与活动监视器之间的相同差异。

活动监视器与任务管理器性能

  • 活动监视器刷新 1 秒。

活动监视器没有看到每个核心都是超线程的,这会不会有问题?不确定 SQL Server 如何看待所有 96 个内核。

SQL Server 属性

2018 年 6 月 28 日更新

即使在迁移到 AWS 并将操作系统更新到 Server 2012 R2 之后,SQL Server 2008 r2 活动监视器仍然与任务管理器显示的内容相差甚远。下面的屏幕截图来自刚刚执行的负载测试。两个指标之间存在明显的 20% 差异。即使任务管理器报告总体 CPU 刚刚超过 55%,SQL 活动监视器也被锁定在 100%。来自 AWS Cloud watch 的指标显示的结果与 Task Manager 相同,因此我有两个数据指标与第三个甚至不在球场上相关。

AWS 服务器

更新的系统规格: 系统规格:

  • SQL Server EE 2008 R2
  • Windows 2012 数据中心 R2
  • i3.16xl - 专用主机
  • 64 核,无处理器关联集(2 个插槽,每个 32 核)
  • 488 GB 内存
  • 同步镜像
  • 启用 ENA,启用 EBS 优化

在此处输入图片说明

Dan*_*vey 7

资源监视器在两个不同的图表上显示来自进程和服务的 CPU。(在您的示例中,32% + 37%,这意味着总共 69% 的 CPU)。

至于 SQL 活动监视器,它显示安装 SQL 的机器的 CPU 利用率。(在您的示例中,为 64%,与资源监视器相距不远。)

我使用查询来获取服务器上的 CPU 利用率。我在我的服务器上运行一项工作,如果我在过去 10 分钟内获得了超过 90% 的平均值,就会发出警报。

这是我的查询:

DECLARE @ts_now bigint = (SELECT cpu_ticks/(cpu_ticks/ms_ticks)FROM sys.dm_os_sys_info); 

-- Top 10 : for the last 10 minutes
SELECT TOP(10)  100 - SystemIdle as TotalCPU,
           DATEADD(ms, -1 * (@ts_now - [timestamp]), GETDATE()) AS [Event Time] 
FROM ( 
  SELECT record.value('(./Record/@id)[1]', 'int') AS record_id, 
        record.value('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]', 'int') 
        AS [SystemIdle], 
        record.value('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]', 
        'int') 
        AS [SQLProcessUtilization], [timestamp] 
  FROM ( 
        SELECT [timestamp], CONVERT(xml, record) AS [record] 
        FROM sys.dm_os_ring_buffers 
        WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR' 
        AND record LIKE '%<SystemHealth>%') AS x 
  ) AS y 
ORDER BY record_id DESC;
Run Code Online (Sandbox Code Playgroud)

  • @DaniellePaquette-Harvey Process Explorer by MS/sysinternals 是一个漂亮的小程序(你需要的一切都在一个 EXE 中)。我使用 Iarsn 的 taskinfo 直到找到 Process Explorer。 (2认同)