Como configurar o SQL Server para usar o soft-NUMA

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 ou DWORD (hexadecimal ou decimal). Para configurar mais que as primeiras 32 CPUs, use valores de registro BINARY. Você deve reinicializar o Mecanismo de Banco de Dados para configurar o NUMA de software. Antes de configurar o NUMA de software, consulte Compreendendo o Non-uniform Memory Access e Como o SQL Server oferece suporte a NUMA.

DicaDica

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 de NUMA de software estão configurados. A instância A do Mecanismo de Banco de Dados está 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 experimenta E/S significativa agora tem dois threads de E/S e dois threads 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, elas recebem memória do mesmo bloco de memória do sistema operacional e não há nenhuma afinidade entre memória e processador.

ObservaçãoObservação

As chaves de 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

  1. 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;
    
  2. 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;
    

Mapeie nós do 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 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

    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 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

    Grupo

    0

    DicaDica

    Para especificar as CPUs 60 a 63, use um valor BINARY de 1111000000000000000000000000000000000000000000000000000000000000.