Как настроить сервер 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. |
Установка маски схожести ЦП
Следующая инструкция выполняется на экземпляре А, чтобы настроить его для использования процессоров 0, 1, 2 и 3 путем задания маски схожести ЦП:
ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=0 TO 3;
Следующая инструкция выполняется на экземпляре В, чтобы настроить его для использования процессоров 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.
См. также