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

15 sql-server sql-server-2012 hardware

升级 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 个线程。

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

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

Jon*_*gel 24

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

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

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

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

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

如果情况并非如此,并且您已经获得了所有内核的许可,请检查您的关联掩码设置,尤其是在设置了这些设置并且底层硬件已升级的情况下。


mrd*_*nny 8

查看 SQL Server 首次启动时的 ERRORLOG。它会告诉你它使用了多少 CPU,可能是为什么。如果您可以在某处发布 ERRORLOG 文件,这将有助于了解发生了什么。