前言
在前几天在论坛有人遇到SQLSERVER识别逻辑CPU的问题
帖子地址:
环境
LZ当时的环境是这样的:
操作系统:Windows Server 2008 R2 企业版 SP1
高可用配置:群集
数据库:SQLSERVER 2005 企业版 64位 SP4
服务器硬件配置:
CPU:HP DL980 G7 4*10核心 2.00 G主频 有超线程功能
内存:256GB
SQLSERVER的情况
LZ当时描述说:他当时开启了超线程
操作系统能识别得到80个逻辑CPU(在任务管理器里看)
如果操作系统能识别80个逻辑CPU表明:
4颗10核2.00处理器 ,每核心双线程(4*10*2=80),也就是80个逻辑处理器(每个线程代表一个逻辑CPU)
或者
4颗10核2.00处理器 ,每核心一个线程,但是使用了超线程技术之后变为每核心双线程(4*10*2=80),
也就是80个逻辑处理器(每个线程代表一个逻辑CPU)
LZ说:在sql server 2005中数据库属性处理器一项中只能识别cpu0-cpu59,并且群集切换后,另一台接管资源节点只能识别到20颗逻辑处理器。
只能识别到60个逻辑CPU
论坛说法
而在帖子中两位仁兄都给出了各自的说法:
说法一:
当你在同一个集群上有多个SQLSERVER实例,最好把这些处理器划分开,供给多个实例使用。对于任何一个SQLSERVER实例
不能使用“自动设置所有处理器关联掩码”
rmiao的意思是说,不能勾选“自动设置所有处理器的处理器关联掩码”,以防止集群的某一个实例将所有逻辑CPU资源都用尽了
说法二:
按照MSDN的说法,SQLSERVER2005企业版是支持