20
2023
02
17:08:58

using 40 logical processors based on SQL Server licensing SqlServer CPU核心数限制问题

公司服务器是120核心cpu,但是实际应用中只有40核,原因是业务部门发现服务器cpu承载30%的时候sql 就会卡死;

然后从sqlserver 去查询,cpu核心数;

SELECT COUNT(1) FROM SYS.DM_OS_SCHEDULERS WHERE SCHEDULER_ID<255

结果:120

但是cpu核心数对于sqlserver 是可以配置调节;

然后查看在使用是多少个?

SELECT COUNT(1) FROM SYS.DM_OS_SCHEDULERS WHERE SCHEDULER_ID<255 AND IS_ONLINE=1

结果:40

到此问题差不多有了答案! 下面找到就要解决:

然后从启动日志ERROR 找到对应启动项,sqlserver 使用cpu数以及NUMA;---当然我所在公司服务器配置有点好,知道就行了;

xp_readerrorlog

(CPU)SQL Server detected 4 sockets with 15 cores per socket and 30 logical processors per socket, 120 total logical processors; using 40 logical processors based on SQL Server licensing. This is an        informational message; no user action is required.

(NUMA)

 

从error上看,系统许可40逻辑cpu 给sqlserver 使用,那80cpu 岂不白白的浪费掉了;

MSDN:

这是SQL的企业版,所以我期待它使用所有处理器和机器的全部功能。我搜索许可指南,发现从SQL Server 2012起,有两个企业许可证 - 核心和基于服务器/ CAL为主。根据我的研究,基于CAL许可证限制SQL企业仅使用20个物理处理器。如果超线程已启用,这将是40个逻辑处理器。

我们已经确定,这种行为是正确的,因为每个许可证他们购买。由于这是他们最重要的服务器,他们已经购买了基于内核许可。他们回来找我,问 - “?我们怎样才能改变安装的SQL Server使用的基于核心许可证”

秘钥? 重新安装,再重启服务! 没办法了;

Command:

Setup.exe   /q /ACTION=editionupgrade /INSTANCENAME=MSSQLSERVER /PID=<PID key for new edition>” /IACCEPTSQLSERVERLICENSETERMS

具体参数:(msdn)https://msdn.microsoft.com/zh-SG/library/df40c888-691c-4962-a420-78a57852364d(v=sql.110)

也可以界面化:

比如

 

 

完成之后,执行以下查询语句,检查CPU使用情况,看更改是否生效:

select cpu_id,status,is_online from sys.dm_os_schedulers

select  * from sys.dm_os_schedulers where is_online=1 AND status='VISIBLE ONLINE'



进一步搜索发现,关于20 cores的限制问题,需要区分CPU是否支持超线程

如果非超线程,SQL Server检测到4个插槽,每个插槽有6个核,且有6个逻辑处理器(单线程),则总共为24个逻辑处理器,受限于SQL Server licenseing,只能使用20个逻辑处理器;

·如果超线程,SQL Server检测到4个插槽,每个插槽有8个核,且有16个逻辑处理器(单线程),则总共为64个逻辑处理器,受限

于SQL Server licenseing,只能使用40个逻辑处理器;




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/3668.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: