将 SQL Server 配置为使用软件 NUMA (SQL Server)

将自动检测和使用非一致性内存访问 (NUMA)。 如果您想要模拟大量 SMB 计算机的 NUMA,或者想要细分 NUMA 计算机以便获得更好的本地性,则可以使用软件 NUMA (soft-NUMA)。 若要将 SQL Server 配置为使用 soft-NUMA,必须编辑注册表以添加节点配置关联掩码。 软件 NUMA 掩码可以表示为二进制、DWORD(十六进制或十进制)或 QWORD(十六进制或十进制)注册表项。 若要配置头 32 个 CPU 以后的 CPU,请使用 QWORD 或 BINARY 注册表值。 (在低于 SQL Server 2012 的版本中,不能使用 QWORD 值)。要配置软件 NUMA,必须重新启动数据库引擎。

提示提示

CPU 从 0 开始编号。

错误编辑注册表会严重损坏您的系统。更改注册表项之前,建议您备份计算机中的所有重要数据。

请参考如下示例。 计算机有八个 CPU,但没有硬件 NUMA。 配置了三个软件 NUMA 节点。 将数据库引擎实例 A 配置为使用第 0 个到第 3 个 CPU。 安装数据库引擎的第二个实例并将其配置为使用第 5 个到第 8 个 CPU。 该示例可以直观表示为:

CPUs          0  1  2  3  4  5  6  7

Soft-NUMA   <-N0--><-N1-><----N2---->

SQL Server  <instance A ><instance B>

大量使用 I/O 的实例 A 现在有两个 I/O 线程和一个惰性编写器线程,执行大量占用处理器操作的实例 B 仅有一个 I/O 线程和一个惰性编写器线程。 可以向实例分配不同的内存量,但是与硬件 NUMA 不同,它们都从同一个操作系统内存块中接收内存,并且不具有从内存到处理器的关联。

惰性编写器线程与物理 NUMA 内存节点的 SQL 操作系统视图有关。 因此,不管存在什么硬件,物理 NUMA 节点将等于创建的惰性编写器线程数。 有关详细信息,请参阅软件 NUMA、I/O 完成线程、惰性编写器工作线程和内存节点的工作机制

注意注意

在升级 SQL Server 的实例时,不复制 Soft-NUMA 注册表项。

设置 CPU 关联掩码

  1. 在实例 A 中运行下面的语句,通过设置 CPU 关联掩码将它配置为使用 CPU 0、CPU 1、CPU 2 和 CPU 3:

    ALTER SERVER CONFIGURATION 
    SET PROCESS AFFINITY CPU=0 TO 3;
    
  2. 在实例 B 中运行下面的语句,通过设置 CPU 关联掩码将它配置为使用 CPU 4、CPU 5、CPU 6 和 CPU 7:

    ALTER SERVER CONFIGURATION 
    SET PROCESS AFFINITY CPU=4 TO 7;
    

将软件 NUMA 节点映射到 CPU

  • 使用注册表编辑器程序 (regedit.exe) 添加以下注册表项,从而将软件 NUMA 节点 0 映射到 CPU 0 和 CPU 1、将软件 NUMA 节点 1 映射到 CPU 2 和 CPU 3,以及将软件 NUMA 节点 2 映射到 CPU 4、 CPU 5、CPU 6 和 CPU 7。

    SQL Server 2012

    类型

    值名称

    值数据

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node0

    DWORD

    CPUMask

    0x03

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node0

    DWORD

    Group

    0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node1

    DWORD

    CPUMask

    0x0c

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node1

    DWORD

    Group

    0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node2

    DWORD

    CPUMask

    0xf0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node2

    DWORD

    Group

    0

    提示提示

    若要指定 CPU 60 到 63,请使用 QWORD 值 F000000000000000 或 BINARY 值 1111000000000000000000000000000000000000000000000000000000000000。

    SQL Server 2008 R2

    类型

    值名称

    值数据

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0

    DWORD

    CPUMask

    0x03

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0

    DWORD

    Group

    0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1

    DWORD

    CPUMask

    0x0c

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1

    DWORD

    Group

    0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2

    DWORD

    CPUMask

    0xf0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2

    DWORD

    Group

    0

    SQL Server 2008

    类型

    值名称

    值数据

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0

    DWORD

    CPUMask

    0x03

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1

    DWORD

    CPUMask

    0x0c

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2

    DWORD

    CPUMask

    0xf0

    SQL Server 2005

    类型

    值名称

    值数据

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node0

    DWORD

    CPUMask

    0x03

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node1

    DWORD

    CPUMask

    0x0c

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node2

    DWORD

    CPUMask

    0xf0

请参阅

参考

ALTER SERVER CONFIGURATION (Transact-SQL)

概念

将 TCP/IP 端口映射到 NUMA 节点

affinity mask 服务器配置选项