最近在工作中遇到了,sql server 2016 不能把CPU 的核心全部用到的问题.通过分析工具看到
总共CPU核心有72核,但sql 只能用到40核心,想信也有很多人遇到这问题,那么今天这节就先说说这问题是怎么出现的。
首先 介绍下服务器的环境
Windows 2008 R2 Enterprise Edition(X64) + Microsoft SQL Server 2012 (SP1)Enterprise Edition (64-bit)
CPU 2路 18核 开启超线程后是72核心 如图:
再看sql实例的属性 如图:
sql server 其实已经认出了总的核心数 72
那么sql server 是不是代表就能全部使用上呢,通过系统视图可以看到
select * from sys.dm_os_schedulers where is_online=1 AND status='VISIBLE ONLINE'
sql sever 真正用到的只有40个核心。
那么 我们知道,Process Group这个概念是在Windows server 2008 (x64)才引入的技术,sql server 2008 R2 及以后的版本,都使用Process Group 的技术,为什么 sql server 2016 Enterprise Edition (64-bit) 的居然还有这问题,
是不是 有点说不过去呢?
是不是 sql 的版本不对,那么我通过 执行 select @@version 查看版本的命令 ,查出版本是
Microsoft SQL Server 2016 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
是64位 企业版的啊 ! 为什么不行? 经过网上查找发现 ,sql server 2016 企业版的有两种 , 一种就是上面看到的 ,他最多只能认到单组64核心,因为处理器编组的原因,它只用到了其中的一组40核心的,而另一组32核心的,没有办法再用到。
那么最简单的办法就是把现有sql 的版本给升级到 SQL SERVER 2016 ENTERPRISE CORE Edition
打开 sqlserver 安装中心 如图:
维护 -版本升级
SQL Server 2016 Enterprise Core Edition: TBR8B-BXC4Y-298NV-PYTBY-G3BCP
输入 core 版本的序列号,然后就 下一步 下一步 下一步 一直点下去 ,等它升级完了。
接下来 ,我们再去看sql server 这时是不是真真正正的,全部都用上了 72个核心。
这时,我们再用 SELECT @@version 看下sql 的版本信息
Microsoft SQL Server 2016 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
我们看到 Core-based Licensing 的标识了 ,同时SQLSERVER的对内核的限制也取消了!!
到此这篇关于sql server 2016不能全部用到CPU的逻辑核心数的问题的文章就介绍到这了,更多相关CPU的逻辑核心数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关文章: