Архитектура Soft-NUMA (SQL Server)Soft-NUMA (SQL Server)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Современные процессоры имеют несколько ядер на одном сокете.Modern processors have multiple cores per socket. Каждый сокет обычно представлен одним узлом NUMA.Each socket is represented, usually, as a single NUMA node. Ядро базы данных SQL Server секционирует разные внутренние структуры и потоки служб в узлы NUMA.The SQL Server database engine partitions various internal structures and partitions service threads per NUMA node. Если используются процессоры с 10 и более ядрами на сокет, распределение нагрузки между аппаратными узлами NUMA с помощью программной архитектуры NUMA зачастую позволяет повысить масштабируемость и производительность системы.With processors containing 10 or more cores per socket, using software NUMA to split hardware NUMA nodes generally increases scalability and performance. До SQL Server 2014 (12.x)SQL Server 2014 (12.x) с пакетом обновления 2 (SP2) для использования программной архитектуры NUMA (Soft-NUMA) нужно было редактировать реестр, чтобы добавить маску сходства для настройки узла. Такая настройка выполнялась на уровне узла, а не для экземпляра.Prior to SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2, software-based NUMA (soft-NUMA) required you to edit the registry to add a node configuration affinity mask, and was configured at the host level, rather than per instance. Начиная с SQL Server 2014 (12.x)SQL Server 2014 (12.x) с пакетом обновления 2 (SP2) и SQL Server 2016 (13.x)SQL Server 2016 (13.x) архитектура Soft-NUMA настраивается автоматически на уровне экземпляра базы данных при запуске службы Компонент SQL Server Database EngineSQL Server Database Engine.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and SQL Server 2016 (13.x)SQL Server 2016 (13.x), soft-NUMA is configured automatically at the database-instance level when the Компонент SQL Server Database EngineSQL Server Database Engine service starts.

Примечание

Архитектура Soft-NUMA не поддерживает процессоры с "горячей" заменой.Hot-add processors are not supported by soft-NUMA.

Автоматическое создание архитектуры Soft-NUMAAutomatic Soft-NUMA

По умолчанию в SQL Server 2016 (13.x)SQL Server 2016 (13.x) Компонент SQL Server Database EngineSQL Server Database Engine автоматически создает узлы архитектуры Soft-NUMA, если во время запуска обнаруживает более восьми физических ядер на один сокет или узел NUMA.With SQL Server 2016 (13.x)SQL Server 2016 (13.x), whenever the Компонент SQL Server Database EngineSQL Server Database Engine detects more than eight physical cores per NUMA node or socket at startup, soft-NUMA nodes are created automatically by default. Процессорные ядра с технологией Hyper-Threading не различаются при подсчете физических ядер на узле.Hyper-threaded processor cores are not differentiated when counting physical cores in a node. Если обнаружено больше восьми физических ядер на один сокет, Компонент SQL Server Database EngineSQL Server Database Engine создает узлы архитектуры Soft-NUMA. В идеале узлы содержат по восемь ядер, но поддерживают и другое количество: от пяти до девяти логических ядер на один узел.When the detected number of physical cores is more than eight per socket, the Компонент SQL Server Database EngineSQL Server Database Engine creates soft-NUMA nodes that ideally contain eight cores, but can go down to five or up to nine logical cores per node. Размер аппаратного узла может быть ограничен маской сходства ЦП.The size of the hardware node can be limited by a CPU affinity mask. Количество узлов NUMA не может превышать максимальное количество поддерживаемых узлов NUMA.The number of NUMA nodes never exceeds the maximum number of supported NUMA nodes.

Использование архитектуры Soft-NUMA можно отключать и включать с помощью инструкции ALTER SERVER CONFIGURATION (Transact-SQL) с аргументом SET SOFTNUMA.You can disable or re-enable soft-NUMA using the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument. Чтобы изменение этого параметра вступило в силу, потребуется перезапустить ядро базы данных.Changing the value of this setting requires a restart of the database engine to take effect.

На рисунке ниже показан пример сведений об архитектуре Soft-NUMA, которые вы увидите в журнале ошибок SQL Server, если SQL ServerSQL Server обнаружит аппаратные узлы NUMA с более чем восемью физическими ядрами на каждый узел или сокет.The figure below shows the type of information regarding soft-NUMA that you see in the SQL Server error log, when SQL ServerSQL Server detects hardware NUMA nodes with greater than eight physical cores per each node or socket.

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.   

Создание архитектуры Soft-NUMA вручнуюManual Soft-NUMA

Чтобы вручную настроить SQL ServerSQL Server для использования архитектуры Soft-NUMA, отключите автоматическую настройку архитектуры Soft-NUMA и добавьте в реестре маску сходства для настройки узла.To manually configure SQL ServerSQL Server to use soft-NUMA, disable automatic soft-NUMA, and edit the registry to add a node configuration affinity mask. Маска архитектуры Soft-NUMA в этом случае указывается как запись реестра с двоичным типом данных, типом данных DWORD (шестнадцатеричным или десятичным) или QWORD (шестнадцатеричным или десятичным).When using this method, the soft-NUMA mask can be stated as a binary, DWORD (hexadecimal or decimal), or QWORD (hexadecimal or decimal) registry entry. Чтобы настроить большее количество процессоров (больше чем первые 32), используйте значения реестра QWORD или BINARY. (Значения QWORD нельзя использовать до SQL Server 2012 (11.x)SQL Server 2012 (11.x)).To configure more than the first 32 CPUs use QWORD or BINARY registry values (QWORD values cannot be used prior to SQL Server 2012 (11.x)SQL Server 2012 (11.x)). Отредактировав реестр, перезапустите Компонент Database EngineDatabase Engine, чтобы конфигурация архитектуры Soft-NUMA вступила в силу.After modifying the registry, you must restart the Компонент Database EngineDatabase Engine for the soft-NUMA configuration to take effect.

Совет

Нумерация процессоров начинается с 0.CPUs are numbered starting with 0.

Предупреждение

Неправильное изменение реестра может вызвать серьезные проблемы.Incorrectly editing the registry can severely damage your system. Перед внесением изменений в реестр рекомендуется создать резервную копию всех важных данных.Before making changes to the registry, we recommend that you back up any valued data on the computer.

Рассмотрим пример компьютера с восемью ЦП, который не имеет оборудования NUMA.Consider the example of a computer with eight CPUs, that does not have hardware NUMA. Настраиваются три узла программной архитектуры NUMA.Three soft-NUMA nodes are configured.
Экземпляр А компонента Компонент Database EngineDatabase Engine настраивается для использования процессоров в количестве от 0 до 3. Компонент Database EngineDatabase Engine instance A is configured to use CPUs 0 through 3. Второй экземпляр компонента Компонент Database EngineDatabase Engine установлен и настроен для использования процессоров с 4 до 7.A second instance of the Компонент Database EngineDatabase Engine is installed and configured to use CPUs 4 through 7. Визуально пример может быть представлен следующим образом.The example can be visually represented as:

CPUs 0 1 2 3 4 5 6 7

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

SQL Server <instance A ><instance B>

Экземпляр А, испытывающий значительную нагрузку ввода-вывода, теперь имеет два потока ввода-вывода и один поток модуля отложенной записи.Instance A, which experiences significant I/O, now has two I/O threads and one lazy writer thread. Экземпляр В, выполняющий операции с интенсивным использованием процессора, имеет только один поток ввода-вывода и один поток модуля отложенной записи.Instance B, which performs processor-intensive operations, has only one I/O thread and one lazy writer thread. Экземплярам может быть выделено различное количество памяти, но в отличие от оборудования NUMA, они оба получают память из одного блока памяти операционной системы, и здесь нет соответствия памяти и процессора.Differing amounts of memory can be assigned to the instances, but unlike hardware NUMA, they both receive memory from the same operating system memory block, and there is no memory-to-processor affinity.

Поток модуля отложенной записи связан с представлением физических узлов памяти NUMA в SQLOS.The lazy writer thread is tied to the SQLOS view of the physical NUMA memory nodes. Поэтому любое число физических узлов NUMA, представленное оборудованием, будет равно числу создаваемых потоков модуля отложенной записи.Therefore, whatever the hardware presents as the number of physical NUMA nodes, this will be the number of lazy writer threads that are created. Дополнительные сведения см. в разделе Как это работает: программная архитектура NUMA, поток завершения ввода-вывода, рабочие процессы отложенной записи и узлы памяти.For more information, see How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes.

Примечание

Разделы реестра Soft-NUMA не копируются при обновлении экземпляра SQL ServerSQL Server.The Soft-NUMA registry keys are not copied when you upgrade an instance of SQL ServerSQL Server.

Установка маски схожести ЦПSet the CPU affinity mask

Выполните следующую инструкцию в экземпляре А, чтобы настроить его для использования процессоров 0, 1, 2 и 3 путем задания маски схожести ЦП.Run the following statement on instance A to configure it to use CPUs 0, 1, 2, and 3 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=0 TO 3;  

Выполните следующую инструкцию в экземпляре В, чтобы настроить его для использования процессоров 4, 5, 6 и 7 путем задания маски схожести ЦП.Run the following statement on instance B to configure it to use CPUs 4, 5, 6, and 7 by setting the CPU affinity mask:

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

Установка соответствия программной архитектуры NUMA нескольким процессорамMap soft-NUMA nodes to CPUs

С помощью программы "Редактор реестра" (regedit.exe) добавьте приведенные ниже разделы реестра, чтобы установить соответствие между узлом 0 программной архитектуры NUMA и ЦП 0 и 1, узлом 1 программной архитектуры NUMA и ЦП 2 и 3, а также узлом 2 и ЦП 4, 5, 6 и 7.Using the Registry Editor program (regedit.exe), add the following registry keys to map soft-NUMA node 0 to CPUs 0 and 1, soft-NUMA node 1 to CPUs 2 and 3, and soft-NUMA node 2 to CPUs 4, 5, 6, and 7.

Совет

Чтобы указать процессоры с 60 по 63, используйте значение QWORD F000000000000000 или значение BINARY 1111000000000000000000000000000000000000000000000000000000000000.To specify CPUs 60 through 63, use a QWORD value of F000000000000000 or a BINARY value of 1111000000000000000000000000000000000000000000000000000000000000.

В приведенном ниже примере предположим, что имеется сервер DL580 G9 с 18 ядрами на сокет (в четырех сокетах) и каждый сокет находится в собственной K-группе.In the following example, assume you have a DL580 G9 server, with 18 cores per socket (in four sockets), and each socket is in its own K-group. Создаваемая конфигурация программной архитектуры NUMA может быть следующей: шесть ядер на узел, три узла на группу, четыре группы.A soft-NUMA configuration that you might create would look something like the following: six cores per Node, three nodes per group, four groups.

Пример для сервера SQL Server 2016 (13.x)SQL Server 2016 (13.x) с несколькими K-группамиExample for a SQL Server 2016 (13.x)SQL Server 2016 (13.x) server with multiple K-Groups ТипType Имя значенияValue name ДанныеValue data
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD ГруппированиеGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD ГруппированиеGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD ГруппированиеGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD ГруппированиеGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD ГруппированиеGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD ГруппированиеGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD ГруппированиеGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD ГруппированиеGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD ГруппированиеGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD ГруппированиеGroup 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD ГруппированиеGroup 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD ГруппированиеGroup 33

МетаданныеMetadata

Для просмотра текущего состояния и конфигурации архитектуры Soft-NUMA можно использовать указанные ниже динамические административные представления.You can use the following DMVs to view the current state and configuration of soft-NUMA.

Примечание

Можно просмотреть текущее значение для автоматического создания программной архитектуры NUMA с помощью инструкции sp_configure (Transact-SQL), но изменить это значение с помощью sp_configure невозможно.While you can view the running value for automatic soft-NUMA using sp_configure (Transact-SQL), you cannot change its value using sp_configure. Необходимо использовать инструкцию ALTER SERVER CONFIGURATION (Transact-SQL) с аргументом SET SOFTNUMA.You must use the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument.

См. также:See Also

Сопоставление портов TCP/IP с узлами NUMA (SQL Server) Map TCP IP Ports to NUMA Nodes (SQL Server)
Параметр конфигурации сервера «affinity mask» affinity mask Server Configuration Option
ALTER SERVER CONFIGURATION (Transact-SQL) ALTER SERVER CONFIGURATION (Transact-SQL)
sys.dm_os_nodes (Transact-SQL)sys.dm_os_nodes (Transact-SQL)