SQL Server未使用所有CPU内核/线程


15

升级SQL Server的硬件后,我们在Windows任务管理器中注意到SQL实例仅使用了可用线程的一半:

任务管理器

该服务器具有以下硬件和软件:

  • Windows 2008 R2企业版64位SP1
  • Intel Xeon E7-4870-4个处理器(40核,80线程)
  • Microsoft SQL Server 2012企业版(64位)

运行select cpu_count from sys.dm_os_sys_info返回40。

操作系统可以看到所有80个线程。

为什么只使用服务器一半的处理能力?

我们在两台服务器上具有相同的硬件和软件,并且它们都表现出相同的行为。

Answers:


23

在SQL Server错误日志中,它应该告诉您原因。我在客户系统上发现了此消息(实际上只是将消息粘贴到Google果汁中):

SQL Server检测到4个套接字,每个套接字有8个核心,每个套接字有16个逻辑处理器,总共有64个逻辑处理器。使用基于SQL Server许可的40个逻辑处理器。这是一条情报信息; 无需用户操作。

我从这里得到了可能的解释:

对于在现有SQL EE Server许可证上具有软件保障的客户(或在有效期内根据其当前的企业协议对其进行访问),创建了一个企业版版本,以使他们能够升级到SQL Server2012。此版本具有技术限制,将实例限制为仅使用20个处理器内核(带有超线程的40个CPU线程)。

摘要:在错误日志中,版本将报告为Enterprise EditionEnterprise Edition: Core-based Licensing。如果说是前者,则与上述客户系统一样,您将需要获取基于内核的许可证才能使用所有可用的内核。

如果不是这种情况,并且您已经获得所有内核的许可,请检查亲和力掩码设置,尤其是是否已设置亲和力掩码设置,并且基础硬件已升级。


我们有一个类似的问题。我们构建具有1个插槽和32个内核的VM。Sql只能识别8个CPU。我们将其切换为8个插槽和4个内核,问题就消失了。我们在Windows 2008r2上运行企业版editon sql 2008r2。
user3799984'3

我在标准版本上也遇到了同样的问题。我们使用了8个套接字,其余的将不使用。我们要做的就是更改VM并配置4个套接字2个内核。
Nicolas de Fontenay

7

查看SQL Server首次启动时的ERRORLOG。它会告诉您正在使用多少个CPU,以及原因。如果您可以将ERRORLOG文件发布到某个地方,这将有助于了解发生了什么情况。


3

我在Ajmer Dhariwal的另一篇文章中看到了这一点:

即使您具有企业版,如果所应用的许可模式是基于服务器+客户端访问许可(CAL)的,则每个实例服务器被限制为20个物理核心

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.