Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: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 .