我登录到一个新的客户端系统并运行 sp_blitz 看看发生了什么。它报告说“ CPU Schedulers Offline ”对我来说是一个新的。
由于关联屏蔽或许可问题,SQL Server 无法访问某些 CPU 内核。
很公平,我运行基本查询
SELECT
DOS.is_online
, DOS.status
, DOS.*
FROM
sys.dm_os_schedulers AS DOS
ORDER BY
1;
报告说我有 8 个设置为离线可见,43 个设置为在线。据我所知,这个客户端上没有人会故意设置任何 CPU 亲和性。
我决定看看能不能解开它。当我查看属性窗口时,我看到有 40 个处理器可用,并且没有一个设置为具有亲和力。
为什么在 is_online 为 true 的 dm_os_scheduler 中有 40 个显示但 43 个条目似乎也很奇怪。8 个离线的 cpu_id 是 32 到 39。
sys.configurations 似乎与未明确启用的亲和力一致
name value value_in_use description
affinity I/O mask 0 0 affinity I/O mask
affinity mask 0 0 affinity mask
affinity64 I/O mask 0 0 affinity64 I/O mask
affinity64 mask 0 0 affinity64 mask
这不是企业版,因此 CAL 祖父的东西不应该是这里的因素,但如果需要,我明天可以问这个问题
ProductVersion ProductLevel ProductUpdateLevel Edition
11.0.5058.0 SP2 NULL Standard Edition (64-bit)
运行 Glenn Berry 的诊断查询,这些东西可能是相关的
- 系统制造商:“Dell Inc.”,系统型号:“PowerEdge R720”。
- Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
那么,什么给了?我被虚拟化了却不知道吗?我应该寻找其他地方来确定为什么 SQL Server 不能使用某些 CPU 吗?
参考文章
我读过的文章列表,但显然理解得不够好,无法回答我自己的问题
鉴于可用的信息,您所看到的非常有意义。
SQL Server 2012 标准版仅限于 4 个插槽或 16 个物理内核中的较小者。
由于您有 40 个核心(可能是 2 个插槽 10 核心 + HT),因此 16 个物理核心将是 32 个逻辑核心(因为 HT)。如果您总共有 40 个,我希望有 8 个由于许可而离线可见。
SQL Server 2012 版本支持的功能 - Cross-Box Scale Limits
编辑:附加信息
根据所涉及的操作系统,计划可能会绑定到 CPU,这些 CPU 也会为您的系统进行不平衡的 NUMA 内存配置。虽然这不太可能给您带来任何问题(因为一开始并没有注意到所有 CPU 都在使用),但它可能会对外部内存访问确实可以访问的高度使用的系统产生更大的影响加起来。
我知道这个线程很旧,但我想我会添加。
似乎(至少在某些情况下)企业版将内核数量限制为 40。
SQL Server 未使用所有 CPU 内核/线程
https://serverfault.com/questions/395525/what-is-sql-server-core-edition