如何将 SQL Server 配置为使用软件 NUMA

新建日期: 2005 年 12 月 5 日

若要将 SQL Server 配置为使用软件非一致性内存访问(软件 NUMA),必须编辑注册表以添加节点配置关联掩码。软件 NUMA 掩码可以表示为二进制或 DWORD(十六进制或十进制)注册表项。要配置软件 NUMA,必须重新启动数据库引擎。配置软件 NUMA 之前,请参阅了解非一致性内存访问SQL Server 2005 如何支持 NUMA

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

在此示例中,计算机有八个 CPU,但没有硬件 NUMA。已配置了三个软件 NUMA 节点。数据库引擎实例 A 配置为使用 CPU 1 到 CPU 4。安装了第二个数据库引擎实例并将其配置为使用 CPU 5 到 CPU 8。此示例可以直观地表示为:

CPUs          1  2  3  4  5  6  7  8

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

SQL Server  <instance A ><instance B>

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

设置 CPU 关联掩码

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

    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    sp_configure 'affinity mask', 15;
    RECONFIGURE;
    GO
    
  2. 在实例 B 中运行下面的语句,通过设置 CPU 关联掩码将它配置为使用 CPU 5、CPU 6、CPU 7 和 CPU 8:

    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    sp_configure 'affinity mask', 240;
    RECONFIGURE;
    GO
    
ms345357.note(zh-cn,SQL.90).gif注意:
此示例中的关联掩码值将应用到使用 32 位操作系统的计算机。

将软件 NUMA 节点映射到 CPU

  1. 使用注册表编辑器程序 (regedit.exe) 添加下面的两个注册表项以便将软件 NUMA 节点 0 映射到 CPU 1 和 CPU 2,将软件 NUMA 节点 1 映射到 CPU 3 和 CPU 4,将软件 NUMA 节点 2 映射到 CPU 5、CPU 6、CPU 7 和 CPU 8:
类型 值名称 值数据

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

请参阅

任务

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

概念

affinity mask 选项

帮助和信息

获取 SQL Server 2005 帮助