Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Современные процессоры имеют несколько ядер на одном сокете. Каждый сокет обычно представлен одним узлом NUMA. Ядро СУБД SQL Server разделяет различные внутренние структуры и служебные потоки по узлам NUMA. Если используются процессоры с 10 и более ядрами на сокет, распределение нагрузки между аппаратными узлами NUMA с помощью программной архитектуры NUMA зачастую позволяет повысить масштабируемость и производительность системы. До SQL Server 2014 (12.x) SP2 для программного NUMA (soft-NUMA) требовалось изменить реестр, чтобы добавить маску привязки конфигурации узла, и он настраивался на уровне хоста, а не на уровне отдельного экземпляра. Начиная с версии SQL Server 2014 (12.x) с пакетом обновления 2 (SP2) и SQL Server 2016 (13.x), soft-NUMA автоматически настраивается на уровне экземпляра SQL Server при запуске службы ядра СУБД SQL Server.
Процессоры с возможностью горячего добавления не поддерживаются soft-NUMA.
Автоматическая soft-NUMA
В SQL Server 2016 (13.x) по умолчанию при запуске, если компонент SQL Server Database Engine обнаруживает более восьми физических ядер в каждом узле NUMA или сокете, узлы soft-NUMA создаются автоматически. Одновременные многопоточные ядра процессора (SMT) не различаются при подсчете физических ядер в узле. Если обнаруженное число физических ядер превышает восемь на сокет, ядро СУБД SQL Server создает узлы soft-NUMA, которые в идеале содержат восемь ядер, но могут сократиться до четырех или до восьми физических ядер на узел. Размер аппаратного узла может быть ограничен маской привязки к процессору. Количество узлов NUMA не может превышать максимальное количество поддерживаемых узлов NUMA.
Вы можете отключить или снова включить soft-NUMA с помощью оператора ALTER SERVER CONFIGURATION и аргумента SET SOFTNUMA. Чтобы изменение этого параметра вступило в силу, потребуется перезапустить ядро базы данных.
На рисунке ниже показано, какая информация о soft-NUMA отображается в журнале ошибок SQL Server, когда SQL Server обнаруживает аппаратные узлы NUMA, содержащие более восьми физических ядер в каждом узле или сокете.
2016-11-14 13:39:43.17 Server SQL Server detected 2 sockets with 12 cores per socket and 24 logical processors per socket, 48 total logical processors; using 48 logical processors based on SQL Server licensing. This is an informational message; no user action is required.
2016-11-14 13:39:43.35 Server Automatic soft-NUMA was enabled because SQL Server has detected hardware NUMA nodes with greater than 8 physical cores.
2016-11-14 13:39:43.63 Server Node configuration: node 0: CPU mask: 0x0000000000555555:0 Active CPU mask: 0x0000000000555555:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server Node configuration: node 1: CPU mask: 0x0000000000aaaaaa:0 Active CPU mask: 0x0000000000aaaaaa:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server Node configuration: node 2: CPU mask: 0x0000555555000000:0 Active CPU mask: 0x0000555555000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server Node configuration: node 3: CPU mask: 0x0000aaaaaa000000:0 Active CPU mask: 0x0000aaaaaa000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
Примечание.
Начиная с SQL Server 2014 (12.x) с пакетом обновления 2 (SP 2) используйте флаг трассировки 8079, чтобы разрешить SQL Server использовать automatic soft-NUMA. Начиная с SQL Server 2016 (13.x), это поведение контролируется ядром СУБД, и флаг трассировки 8079 не оказывает никакого влияния. Дополнительные сведения см. в разделе "Настройка флагов трассировки с помощью DBCC TRACEON".
Вручную soft-NUMA
Чтобы вручную настроить SQL Server на использование soft-NUMA, отключите автоматический soft-NUMA и измените реестр, добавив маску привязки конфигурации узла. При использовании этого метода маску soft-NUMA можно указать в виде параметра реестра типа REG_BINARY, DWORD (шестнадцатеричного или десятичного) либо QWORD (шестнадцатеричного или десятичного). Чтобы настроить более 32 ЦП, используйте значения реестра типа QWORD или BINARY (значения QWORD нельзя использовать в версиях до SQL Server 2012 (11.x)). После изменения реестра необходимо перезапустить ядро СУБД, чтобы конфигурация soft-NUMA вступила в силу.
Совет
ЦП нумеруются начиная с 0.
Предупреждение
Неправильное редактирование реестра может серьезно повредить вашу систему. Перед внесением изменений в реестр рекомендуется создать резервную копию всех важных данных.
Рассмотрим пример компьютера с восемью ЦП, не имеющими аппаратного NUMA. Настраиваются три узла программной архитектуры NUMA. Экземпляр A компонента ядро СУБД настроен на использование процессоров с 0 по 3. Установлен и настроен на использование процессоров с 4-го по 7-й второй экземпляр компонента ядро СУБД. Визуально пример может быть представлен следующим образом.
CPUs 0 1 2 3 4 5 6 7
Soft-NUMA <-N0-><-N1-><----N2---->
SQL Server <instance A><instance B>
Экземпляр А, испытывающий значительную нагрузку ввода-вывода, теперь имеет два потока ввода-вывода и один поток модуля отложенной записи. экземпляр B, выполняющий операции, интенсивно использующие процессор, имеет только один поток ввода-вывода и один поток отложенной записи. Экземплярам могут быть выделены разные объемы памяти, но, в отличие от аппаратной архитектуры NUMA, оба они получают память из одного и того же блока памяти операционной системы, и привязка памяти к процессору отсутствует.
Поток отложенной записи привязан к представлению SQLOS о физических узлах памяти NUMA. Таким образом, какое бы число физических узлов NUMA ни определялось аппаратным обеспечением, именно столько потоков отложенной записи и создаётся. Дополнительные сведения см. в разделе Как это работает: программная архитектура 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;
Сопоставить узлы soft-NUMA с процессорами
С помощью программы редактирования реестра (regedit.exe) добавьте следующие разделы реестра, чтобы сопоставить узел soft-NUMA 0 с ЦП 0 и 1, узел soft-NUMA 1 с ЦП 2 и 3, а также узел soft-NUMA 2 с ЦП 4, 5, 6 и 7.
Совет
Чтобы указать ЦП 60–63, используйте значение QWORD, равное F000000000000000, или значение BINARY, равное 1111000000000000000000000000000000000000000000000000000000000000.
В приведенном ниже примере предположим, что имеется сервер DL580 G9 с 18 ядрами на сокет (в четырех сокетах) и каждый сокет находится в собственной K-группе. Конфигурация soft-NUMA, которую можно создать, будет выглядеть примерно так: шесть ядер на узел, три узла для каждой группы, четыре группы.
| Пример для экземпляра SQL Server с несколькими группами K-Group | Тип | Имя параметра | Данные значения |
|---|---|---|---|
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 |
DWORD | CPUMask |
0x3f |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 |
DWORD | Group |
0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 |
DWORD | CPUMask |
0x0fc0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 |
DWORD | Group |
0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 |
DWORD | CPUMask |
0x3f000 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 |
DWORD | Group |
0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 |
DWORD | CPUMask |
0x3f |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 |
DWORD | Group |
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 |
DWORD | CPUMask |
0x0fc0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 |
DWORD | Group |
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 |
DWORD | CPUMask |
0x3f000 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 |
DWORD | Group |
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 |
DWORD | CPUMask |
0x3f |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 |
DWORD | Group |
2 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 |
DWORD | CPUMask |
0x0fc0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 |
DWORD | Group |
2 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 |
DWORD | CPUMask |
0x3f000 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 |
DWORD | Group |
2 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 |
DWORD | CPUMask |
0x3f |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 |
DWORD | Group |
3 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 |
DWORD | CPUMask |
0x0fc0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 |
DWORD | Group |
3 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 |
DWORD | CPUMask |
0x3f000 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 |
DWORD | Group |
3 |
Метаданные
Для просмотра текущего состояния и конфигурации архитектуры Soft-NUMA можно использовать указанные ниже динамические административные представления.
sp_configure (Transact-SQL): отображает текущее значение (
0или1) для SOFTNUMA.sys.dm_os_sys_info (Transact-SQL): столбцы
softnuma_configurationотображаютsoftnuma_configuration_descтекущие значения конфигурации.
Хотя текущее значение параметра автоматического soft-NUMA можно просмотреть с помощью sp_configure, изменить его с помощью sp_configure нельзя. Необходимо использовать инструкцию ALTER SERVER CONFIGURATION с аргументом SET SOFTNUMA .