soft-NUMA (SQL Server)Soft-NUMA (SQL Server)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Os processadores modernos têm vários núcleos por soquete.Modern processors have multiple cores per socket. Cada soquete é representado, em geral, como um único nó NUMA.Each socket is represented, usually, as a single NUMA node. O mecanismo de banco de dados do SQL Server particiona diversas estruturas internas e particiona threads de serviço para cada nó NUMA.The SQL Server database engine partitions various internal structures and partitions service threads per NUMA node. Com processadores contendo 10 ou mais núcleos por soquete, o uso de software NUMA para dividir nós NUMA de hardware geralmente aumenta a escalabilidade e o desempenho.With processors containing 10 or more cores per socket, using software NUMA to split hardware NUMA nodes generally increases scalability and performance. Antes do SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2, o soft-NUMA (NUMA baseado em software) exigia a edição do Registro para adicionar uma máscara de afinidade de configuração de nó e era configurado no nível do host e não por instância.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. Desde o SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 e o SQL Server 2016 (13.x)SQL Server 2016 (13.x), o soft-NUMA passou a ser configurado automaticamente no nível da instância do banco de dados quando o serviço Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine é iniciado.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 Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine service starts.

Observação

O soft-NUMA não dá suporte para processadores incluídos a quente.Hot-add processors are not supported by soft-NUMA.

Soft-NUMA automáticoAutomatic Soft-NUMA

Com o SQL Server 2016 (13.x)SQL Server 2016 (13.x), sempre que o Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine detectar mais de oito núcleos por nó NUMA ou soquete na inicialização, os nós soft-NUMA serão criados automaticamente por padrão.With SQL Server 2016 (13.x)SQL Server 2016 (13.x), whenever the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine detects more than eight physical cores per NUMA node or socket at startup, soft-NUMA nodes are created automatically by default. Núcleos de processador Hyper-threaded não são diferenciados na contagem de núcleos físicos em um nó.Hyper-threaded processor cores are not differentiated when counting physical cores in a node. Quando o número detectado de núcleos físicos for mais de oito por soquete, o Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine criará nós soft-NUMA contendo o ideal de 8 núcleos, podendo reduzir para cinco ou aumentar para nove núcleos lógicos por nó.When the detected number of physical cores is more than eight per socket, the Mecanismo de Banco de Dados do SQL ServerSQL 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. O tamanho do nó de hardware pode limitar-se a uma máscara de afinidade de CPU.The size of the hardware node can be limited by a CPU affinity mask. O número de nós NUMA nunca excede o número máximo de nós NUMA permitidos.The number of NUMA nodes never exceeds the maximum number of supported NUMA nodes.

Você pode desabilitar ou reabilitar o soft-NUMA usando a instrução ALTER SERVER CONFIGURATION (Transact-SQL) com o argumento SET SOFTNUMA.You can disable or re-enable soft-NUMA using the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument. Alterar o valor dessa configuração requer a efetivação da reinicialização do mecanismo de banco de dados.Changing the value of this setting requires a restart of the database engine to take effect.

A figura a seguir mostra o tipo de informações sobre o soft-NUMA que aparece no log de erros do SQL Server, quando o SQL ServerSQL Server detecta nós NUMA com mais de oito núcleos físicos para cada nó ou soquete.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.   

Observação

Do SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 em diante, use o sinalizador de rastreamento 8079 para permitir que SQL ServerSQL Server use Soft-NUMA automático.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2, use trace flag 8079 to allow SQL ServerSQL Server to use Automatic Soft-NUMA. Começando com SQL Server 2016 (13.x)SQL Server 2016 (13.x), esse comportamento é controlado pelo mecanismo e o sinalizador de rastreamento 8079 não tem nenhum efeito.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) this behavior is controlled by the engine and trace flag 8079 has no effect. Para obter mais informações, veja DBCC TRACEON – sinalizadores de rastreamento.For more information, see DBCC TRACEON - Trace Flags.

Soft-NUMA manualManual Soft-NUMA

Para configurar o SQL ServerSQL Server manualmente para usar o soft-NUMA, desabilite o soft-NUMA automático e edite o Registro para adicionar uma máscara de afinidade de configuração de nó.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. Ao usar esse método, a máscara do soft-NUMA pode ser declarada como uma entrada de registro binária, DWORD (hexadecimal ou decimal) ou QWORD (hexadecimal ou decimal).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. Para configurar mais que as primeiras 32 CPUs, use os valores do Registro QWORD ou BINARY (os valores QWORD não podem ser usados antes do 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)). Depois de modificar o Registro, você precisará reiniciar o Mecanismo de Banco de DadosDatabase Engine para que a configuração do soft-NUMA entre em vigor.After modifying the registry, you must restart the Mecanismo de Banco de DadosDatabase Engine for the soft-NUMA configuration to take effect.

Dica

As CPUs são numeradas a partir de 0.CPUs are numbered starting with 0.

Aviso

A edição incorreta do Registro pode danificar seriamente o sistema.Incorrectly editing the registry can severely damage your system. Antes de fazer alterações no Registro, é recomendável fazer backup dos dados importantes no computador.Before making changes to the registry, we recommend that you back up any valued data on the computer.

Considere o exemplo de um computador com oito CPUs, que não tem NUMA de hardware.Consider the example of a computer with eight CPUs, that does not have hardware NUMA. Três nós soft-NUMA são configurados.Three soft-NUMA nodes are configured.
A instância A Mecanismo de Banco de DadosDatabase Engine é configurada para usar as CPUs 0 a 3.Mecanismo de Banco de DadosDatabase Engine instance A is configured to use CPUs 0 through 3. Uma segunda instância do Mecanismo de Banco de DadosDatabase Engine está instalada e configurada para usar as CPUs 4 a 7.A second instance of the Mecanismo de Banco de DadosDatabase Engine is installed and configured to use CPUs 4 through 7. O exemplo pode ser visualmente representado como: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>

A instância A, que apresenta E/S significativa, agora tem dois threads de E/S e um thread de gravador lento.Instance A, which experiences significant I/O, now has two I/O threads and one lazy writer thread. A instância B, que executa operações de processamento intenso, tem apenas um thread de E/S e um thread de gravador lento.Instance B, which performs processor-intensive operations, has only one I/O thread and one lazy writer thread. Diferentes quantidades de memória podem ser atribuídas às instâncias, mas ao contrário do NUMA de hardware, ambas recebem memória do mesmo bloco de memória do sistema operacional e não há nenhuma afinidade do processador com a memória.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.

O thread de gravador lento é vinculado à exibição do SQLOS dos nós de memória NUMA físicos.The lazy writer thread is tied to the SQLOS view of the physical NUMA memory nodes. Por isso, aquilo que o hardware apresentar como os nós NUMA físicos equivalerá ao número de threads de gravador lento criados.Therefore, whatever the hardware presents as the number of physical NUMA nodes, this will be the number of lazy writer threads that are created. Para obter mais informações, confira Como funciona: Como funcionam o soft NUMA, o thread de término de E/S, os trabalhadores de gravador lento e os nós de memória.For more information, see How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes.

Observação

As chaves do Registro Soft-NUMA não são copiadas quando você atualiza uma instância do SQL ServerSQL Server.The Soft-NUMA registry keys are not copied when you upgrade an instance of SQL ServerSQL Server.

Defina a máscara de afinidade de CPUSet the CPU affinity mask

Execute a instrução a seguir na instância A para configurá-la para usar as CPUs 0, 1, 2 e 3, definindo a máscara de afinidade da CPU: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;  

Execute a instrução a seguir na instância B para configurá-la para usar as CPUs 4, 5, 6 e 7, definindo a máscara de afinidade da CPU: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;  

Mapear nós NUMA de software para CPUsMap soft-NUMA nodes to CPUs

Usando o programa Editor do Registro (regedit.exe), adicione as duas chaves do Registro seguintes para mapear o nó soft-NUMA 0 às CPUs 0 e 1, o nó soft-NUMA 1 para as CPUs 2 e 3 e o nó soft-NUMA 2 para as CPUs 4, 5, 6 e 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.

Dica

Para especificar as CPUs 60 a 63, use um valor QWORD de F000000000000000 ou um valor BINARY de 1111000000000000000000000000000000000000000000000000000000000000.To specify CPUs 60 through 63, use a QWORD value of F000000000000000 or a BINARY value of 1111000000000000000000000000000000000000000000000000000000000000.

No exemplo a seguir, suponha que você tenha um servidor DL580 G9, com 18 núcleos por soquete (em 4 soquetes) e cada soquete esteja em seu próprio grupo 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. Uma configuração de soft-NUMA que você poderia criar seria algo semelhante a isto: seis núcleos por nó, três nós por grupo, quatro grupos.A soft-NUMA configuration that you might create would look something like the following: six cores per Node, three nodes per group, four groups.

Exemplo para um servidor SQL Server 2016 (13.x)SQL Server 2016 (13.x) com vários Grupos KExample for a SQL Server 2016 (13.x)SQL Server 2016 (13.x) server with multiple K-Groups TipoType Nome do valorValue name Dados do valorValue 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 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 AgruparGroup 33

MetadadosMetadata

Você pode usar as DMVs a seguir para exibir o estado e a configuração atuais do soft-NUMA.You can use the following DMVs to view the current state and configuration of soft-NUMA.

Observação

Embora seja possível exibir o valor de execução para o soft-NUMA automático usando sp_configure (Transact-SQL), não é possível alterar seu valor usando 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. Você deve usar a instrução ALTER SERVER CONFIGURATION (Transact-SQL) com o argumento SET SOFTNUMA.You must use the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument.

Consulte TambémSee Also

Mapear portas TCP/IP para nós NUMA (SQL Server) Map TCP IP Ports to NUMA Nodes (SQL Server)
Opção affinity mask de configuração de servidor 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)