Como configurar o SQL Server para usar o soft-NUMA

Para configurar o SQL Server para usar o NUMA (acesso de memória não uniforme) 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). 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.

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.

Nesse exemplo, 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 1 a 4. Uma segunda instância do Mecanismo de Banco de Dados está instalada e configurada para usar as CPUs 5 a 8. O exemplo pode ser visualmente representado como:

CPUs          1  2  3  4  5  6  7  8

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.

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 1, 2, 3 e 4, definindo a máscara de afinidade da CPU:

    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    sp_configure 'affinity mask', 15;
    RECONFIGURE;
    GO
    
  2. Execute a instrução a seguir na instância B para configurá-la para usar as CPUs 5, 6, 7 e 8, definindo a máscara de afinidade da CPU:

    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    sp_configure 'affinity mask', 240;
    RECONFIGURE;
    GO
    
ObservaçãoObservação

O valor da máscara de afinidade no exemplo aplica-se a um computador com um sistema operacional de 32 bits.

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 1 e 2, o nó 1 do NUMA de software para as CPUs 3 e 4 e o nó 2 do NUMA de software para as CPUs 5, 6, 7 e 8.

    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