Как настроить сервер SQL Server на использование программной архитектуры NUMA

Архитектура NUMA определяется и используется автоматически. Если необходимо имитировать NUMA больших машин SMB либо если нужно разделить машины NUMA для улучшения аппаратного размещения, то можно пользоваться программной архитектурой NUMA. Чтобы настроить сервер SQL Server на использование программной архитектурой NUMA, необходимо добавить в реестр маску схожести конфигурации узла. Маска программной архитектуры NUMA может быть задана как запись реестра, имеющая двоичный тип данных или тип данных DWORD (шестнадцатеричный или десятичный). Для настройки более 32 первых процессоров используйте ДВОИЧНЫЕ значения реестра. Для настройки программной архитектуры NUMA необходимо перезапустить компонент Database Engine. Перед настройкой программной архитектуры NUMA ознакомьтесь с разделами Основные сведения о неоднородном доступе к памяти и Как SQL Server поддерживает архитектуру NUMA.

СоветСовет

Процессоры нумеруются, начиная с 0.

Неправильное изменение реестра может вызвать серьезные проблемы. Перед внесением изменений в реестр рекомендуется создать резервную копию всех важных данных.

Рассмотрим следующий пример. В этом примере компьютер с восемью процессорами не имеет оборудования NUMA. Настроены три узла программной архитектуры NUMA. Экземпляр А компонента Database Engine настроен для использования процессоров с 0 до 3. Второй экземпляр компонента Database Engine установлен и настроен для использования процессоров от 4 до 7. Визуально пример может быть представлен следующим образом.

CPUs          0  1  2  3  4  5  6  7

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

SQL Server  <instance A ><instance B>

Экземпляр А, испытывающий значительные нагрузки ввода-вывода, имеет теперь два потока ввода-вывода и два потока модуля отложенной записи, в то время как экземпляр В, выполняющий операции с интенсивным использованием процессора, имеет только один поток ввода-вывода и один поток отложенной записи. Экземплярам может быть выделено различное количество памяти, но в отличие от оборудования NUMA, они оба получают память из одного блока памяти операционной системы, и здесь нет соответствия памяти и процессора.

ПримечаниеПримечание

Разделы реестра Soft-NUMA не копируются при обновлении экземпляра SQL Server.

Установка маски схожести ЦП

  1. Следующая инструкция выполняется на экземпляре А, чтобы настроить его для использования процессоров 0, 1, 2 и 3 путем задания маски схожести ЦП:

    ALTER SERVER CONFIGURATION 
    SET PROCESS AFFINITY CPU=0 TO 3;
    
  2. Следующая инструкция выполняется на экземпляре В, чтобы настроить его для использования процессоров 4, 5, 6 и 7 путем задания маски схожести ЦП:

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

Установка соответствия узлов программной архитектуры NUMA процессорам

  • С помощью редактора реестра (regedit.exe) добавьте следующие разделы реестра, чтобы установить соответствие между узлом 0 программной архитектуры NUMA и процессорами ЦП0 и ЦП1, узлом 1 программной архитектуры NUMA и процессорами ЦП2 и ЦП3, а также узлом 2 и процессорами ЦП4. 5, 6 и 7.

    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

    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 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

    Группа

    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

    Группа

    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

    Группа

    0

    СоветСовет

    Для указания ЦП от 60 до 63 используйте ДВОИЧНОЕ значение 1111000000000000000000000000000000000000000000000000000000000000.