一、 热添加CPU的要求
- 支持热添加CPU的硬件。
- 64位的Windows Server 2008 Datacenter或 Enterprise Edition(用于基于Itanium的系统)操作系统。
- 需要SQL Server Enterprise。
- 无法将SQL Server配置为使用软NUMA。有关软NUMA的更多信息,请参见Soft-NUMA(SQL Server)。
二、 注意事项
添加CPU之后,SQL Server不会自动使用它们,防止SQL Server使用可能为其他目的添加的CPU。需要执行RECONFIGURE语句,才会识别新的CPU为可用资源。
如果使用了affinity64掩码配置,必须将其修改为使用新的CPU。
三、 添加过程最佳实践
1. 检查是否启用SQL Server Processor Affinity
或者
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'affinity mask'
GO
2. 检查SQL Server Schedulers
sys.dm_os_schedulers在SQL Server中为每个Scheduler返回一行,每个Scheduler都映射到一个逻辑CPU。
其中scheduler_id小于1048576的用于调度来自用户的常规查询,大于等于1048576的则由SQL Server在内部(例如专用管理连接)使用。
SELECT * FROM sys.dm_os_schedulers;
3. 给服务器添加CPU
可以在线完成此操作,而不会中断服务器上任何正在运行的进程。热添加后,可以在Windows任务管理器中看到CPU变为预期数目,例如示例中的1核变为2核。但变为2核后sqlserver的CPU使用率最多只会到50%,因为SQL Server仍然无法利用热添加的CPU。
4. 检查SQL Server能看到的CPU数
可以看到SQL Server现在显示2个CPU,但是查sys.dm_os_schedulers会发现此时还是只有1个scheduler。
5. 运行Reconfigure 命令识别热添加的CPU
RECONFIGURE
GO
6. 再次检查前面各项
- “SQL Server处理器”属性页,可以看到热添加的新CPU。
- 再次检查sys.dm_os_schedulers,SQL Server已为热添加的CPU创建了一个scheduler,scheduler_id=1,status为VISIBLE ONLINE HOT_ADDED。
- 如果sqlserver负载较高,此时可以看到cpu使用率已超过了50%
7. scheduler状态变更
当重启SQL Server服务之后,sys.dm_os_schedulers视图中新加的CPUstatus列将变为VISIBLE ONLINE。
参考
https://www.mssqltips.com/sqlservertip/3040/how-to-hotadd-a-vcpu-to-a-virtual-sql-server/