Configurar o SQL Server para usar o NUMA de software (SQL Server)
O NUMA (acesso não uniforme à memória) é detectado e usado automaticamente. Se você desejar simular o NUMA de computadores SMB grandes, ou se desejar subdividir os computadores NUMA para melhorar a localidade, poderá usar o NUMA de software (soft-NUMA). Para configurar o SQL Server para usar o NUMA de software, você deve editar o registro para adicionar uma máscara de afinidade de configuração de nó. A máscara do NUMA de software pode ser declarada como uma entrada de registro binária, DWORD (hexadecimal ou decimal) ou QWORD (hexadecimal ou decimal). Para configurar mais que as primeiras 32 CPUs usam o valor do registro QWORD ou BINARY. (Os valores QWORD não podem ser usados antes de SQL Server 2012.) Você deve reinicializar o Mecanismo de Banco de Dados para configurar o NUMA de software.
Dica |
---|
As CPUs são numeradas a partir de 0. |
A edição incorreta do Registro pode danificar seriamente o sistema. Antes de fazer alterações no Registro, é recomendável fazer backup dos dados importantes no computador.
Considere o exemplo a seguir. Um computador com oito CPUs não tem NUMA de hardware. Três nós soft-NUMA são configurados. A instância A Mecanismo de Banco de Dados é configurada para usar as CPUs 0 a 3. Uma segunda instância do Mecanismo de Banco de Dados está instalada e configurada para usar as CPUs 4 a 7. O exemplo pode ser visualmente representado como:
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 tem E/S significativa, agora tem dois threads de E/S e um thread de gravador lento, enquanto a instância B, que executa operações de processamento intenso, tem apenas um thread de E/S e um thread de gravador lento. 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á afinidade entre memória e processador.
O thread de gravador lento está vinculado à exibição do sistema operacional SQL dos nós físicos de memória NUMA. Por isso, aquilo que o hardware apresentar como os nós físicos NUMA equivalerá ao número de threads de gravador lento criados. Para obter mais informações, consulte Como funcionam NUMA de software, thread de término de E/S, trabalhadores de gravador lento e nós de memória.
Observação |
---|
As chaves do Registro Soft-NUMA não são copiadas quando você atualiza uma instância do SQL Server. |
Defina a máscara de afinidade de CPU
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:
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:
ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=4 TO 7;
Mapear nós NUMA de software para CPUs
Usando o programa Editor do Registro (regedit.exe), adicione as duas chaves de Registro seguintes para mapear o nó 0 do NUMA de software para as CPUs 0 e 1, o nó 1 do NUMA de software para as CPUs 2 e 3 e o nó 2 do NUMA de software para as CPUs 4, 5, 6 e 7.
SQL Server 2012
Tipo
Nome do valor
Dados do valor
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node0
DWORD
Group
0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node1
DWORD
Group
0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node2
DWORD
Group
0
Dica Para especificar as CPUs 60 a 63, use um valor QWORD de F000000000000000 ou um valor BINARY de 1111000000000000000000000000000000000000000000000000000000000000.
SQL Server 2008 R2
Tipo
Nome do valor
Dados do valor
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
Group
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
Group
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
Group
0
SQL Server 2008
Tipo
Nome do valor
Dados do valor
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 2005
Tipo
Nome do valor
Dados do valor
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
Consulte também
Referência
ALTER SERVER CONFIGURATION (Transact-SQL)