0

我们有 SQL 服务器所在的 VM。VM 有 36 个核心,而 SQL Server 消耗 24 个核心(由于版本限制,这里有一些捕获的指标以及我们有疑问的地方。

总 CPU 负载,用户和特权 在此处输入图像描述

SQL 服务器进程的总体 CPU 负载(SQL 服务器有 24 个可见的在线调度程序,因此服务器可以消耗的最大值为 2400%)

在此处输入图像描述

所以我们可以看到 SQL server 并没有消耗 100% 的 CPU 资源。

当 SQL 服务器的工作线程耗尽 4 毫秒时,它将进入可运行队列,SQL 服务器注册 SOS_SCHEDULER_YIELD 等待及其注册信号等待时间(工作线程在等待处理器队列中)。根据我的理解,当有大量工作线程在服务器上运行分配的任务时,它们经常进入可运行队列并且 CPU 负载很高,因为它应该执行持续的工作并且信号时间会增加。

这是 SOS_SCHEDULER_YIELD 的等待指标 在此处输入图像描述 在此处输入图像描述

因此,对于 30 分钟,我们有 700 分钟的 SOS_SCHEDULER_YIELD 等待时间,其中 100% 等待时间 = 100% 信号等待时间 - 当 CPU 成为瓶颈但 CPU 使用率不高时的模式。为什么会这样?这是正常行为吗?我们有这样的指标是正常情况吗?

4

0 回答 0