Cómo configurar SQL Server para que use NUMA de software

El acceso no uniforme a memoria (NUMA) se detecta y utiliza automáticamente. Si desea simular la característica NUMA de equipos SMB grandes, o si desea subdividir equipos NUMA para facilitar la proximidad, puede usar NUMA de software. Para configurar SQL Server para que utilice NUMA de software, debe modificar el Registro para agregar una máscara de afinidad de configuración de nodo. La máscara de NUMA de software se puede establecer como una entrada del Registro binaria o DWORD (hexadecimal o decimal). Para configurar más de las 32 primeras CPU, use valores del Registro BINARY. Debe reiniciar Motor de base de datos para configurar NUMA de software. Antes de configurar NUMA de software, vea Descripción del acceso no uniforme a memoria y Cómo SQL Server es compatible con NUMA.

SugerenciaSugerencia

Las CPU se numeran a partir de 0.

Una modificación incorrecta del Registro puede provocar daños graves en el sistema. Antes de efectuar cambios en el Registro, es recomendable que realice una copia de seguridad de los datos importantes del equipo.

Considere el ejemplo siguiente. Un equipo con ocho CPU no dispone de NUMA de hardware. Se configuran tres nodos de NUMA de software. La instancia A de Motor de base de datos se configura para que use las CPU 0 a 3. Una segunda instancia de Motor de base de datos se instala y configura para que use las CPU 4 a 7. El ejemplo se puede representar visualmente como:

CPUs          0  1  2  3  4  5  6  7

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

SQL Server  <instance A ><instance B>

La instancia A, que experimenta actividades de E/S importantes, tiene ahora dos subprocesos de E/S y dos subprocesos de escritura diferida, mientras que la instancia B, que realiza operaciones que requieren un uso intensivo del procesador, solo tiene un subproceso de E/S y un subproceso de escritura diferida. Se pueden asignar diferentes cantidades de memoria a las instancias, pero, a diferencia de lo que ocurre con el NUMA de hardware, ambas reciben memoria del mismo bloque de memoria del sistema operativo y no hay afinidad entre la memoria y el procesador.

Nota

Las claves del Registro Soft-NUMA no se copian al actualizar una instancia de SQL Server.

Establecer la máscara de afinidad de la CPU

  1. Ejecute la siguiente instrucción en la instancia A para configurarla de modo que use las CPU 0, 1, 2 y 3 mediante el establecimiento de la máscara de afinidad de la CPU:

    ALTER SERVER CONFIGURATION 
    SET PROCESS AFFINITY CPU=0 TO 3;
    
  2. Ejecute la siguiente instrucción en la instancia B para configurarla de modo que use las CPU 4, 5, 6 y 7 mediante el establecimiento de la máscara de afinidad de la CPU:

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

Asignar nodos NUMA de software a las CPU

  • Mediante el programa Editor del Registro (regedit.exe), agregue las dos claves del Registro siguientes para asignar el nodo 0 de NUMA de software a las CPU 0 y 1, el nodo 1 de NUMA de software a las CPU 2 y 3, y el nodo 2 de NUMA de software a las CPU 4, 5, 6 y 7.

    SQL Server 2005

    Tipo

    Nombre del valor

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

    Nombre del valor

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

    Nombre del valor

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

    Grupo

    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

    Grupo

    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

    SugerenciaSugerencia

    Para especificar las CPU 60 a 63, use un valor BINARY de 1111000000000000000000000000000000000000000000000000000000000000.