Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Se aplica a:SQL Server
Los procesadores de hoy en día tienen varios núcleos por socket. Normalmente, cada socket se representa como un solo nodo NUMA. El motor de base de datos de SQL Server crea particiones de las diversas estructuras internas y de los subprocesos de servicio por nodo NUMA. En procesadores con 10 o más núcleos por socket, el uso de NUMA de software para dividir los nodos NUMA de hardware suele aumentar la escalabilidad y el rendimiento. Antes de SQL Server 2014 (12.x) SP2, NUMA basado en software (soft-NUMA) requería modificar el Registro para agregar una máscara de afinidad de configuración de nodo y, además, se configuraba en el nivel de host, en vez de por instancia. A partir de SQL Server 2014 (12.x) SP2 y SQL Server 2016 (13.x), soft-NUMA se configura automáticamente en el nivel de instancia de base de datos cuando se inicia el servicio Motor de base de datos de SQL Server.
soft-NUMA no admite procesadores de agregado en caliente.
Con SQL Server 2016 (13.x), cada vez que Motor de base de datos de SQL Server detecta más de ocho núcleos físicos por nodo NUMA o socket en el inicio, se crean nodos soft-NUMA de forma automática y predeterminada. Los núcleos de procesador multiproceso simultáneos (SMT) no se diferencian al contar núcleos físicos en un nodo. Cuando el número detectado de núcleos físicos es superior a ocho por socket, el motor de base de datos de SQL Server crea nodos SOFT-NUMA que contienen idealmente ocho núcleos, pero puede bajar a cuatro o hasta ocho núcleos físicos por nodo. El tamaño del nodo de hardware puede estar limitado por una máscara de afinidad de CPU. El número de nodos NUMA nunca supera el número máximo de nodos NUMA admitido.
Puede deshabilitar o volver a habilitar soft-NUMA mediante la instrucción ALTER SERVER CONFIGURATION con el argumento SET SOFTNUMA
. Para que el cambio del valor de esta configuración surta efecto, hay que reiniciar el motor de base de datos.
En la siguiente imagen se muestra el tipo de información sobre soft-NUMA que aparece en el registro de errores de SQL Server cuando SQL Server detecta nodos NUMA de hardware con más de ocho núcleos físicos en cada nodo o 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.
Nota
A partir de SQL Server 2014 (12.x) SP 2, use la marca de seguimiento 8079 para permitir que SQL Server use soft-NUMA automática. A partir de SQL Server 2016 (13.x), este comportamiento se controla mediante el motor y la marca de seguimiento 8079 no tiene ningún efecto. Para obtener más información, vea DBCC TRACEON: marcas de seguimiento.
Para configurar SQL Server manualmente de modo que use soft-NUMA, deshabilite soft_NUMA automático y modifique el Registro para agregar una máscara de afinidad de configuración de nodo. Al usar este método, la máscara soft-NUMA se puede establecer como una entrada del Registro binaria, DWORD (hexadecimal o decimal) o QWORD (hexadecimal o decimal). Para configurar más de las primeras 32 CPU use valores del Registro QWORD o BINARY (los valores QWORD no se pueden usar antes de SQL Server 2012 (11.x)). Tras modificar el Registro, debe reiniciar el Motor de base de datos para que se aplique la configuración de soft-NUMA.
Sugerencia
Las CPU se numeran a partir de 0
.
Advertencia
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 de un equipo con ocho CPU que 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 un subproceso de escritura diferida. 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.
El subproceso de escritura diferida está enlazado a la vista del sistema operativo SQL de los nodos físicos de memoria de NUMA. Por consiguiente, sea cual sea el número de nodos físicos de NUMA que presente el hardware, este es el número de subprocesos de escritura diferida que se crean. Para más información, vea Cómo funciona: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes (Cómo funciona: soft-NUMA, subproceso de finalización de E/S, trabajos de escritura diferida y nodos de memoria).
Nota
Las claves del Registro de Soft-NUMA no se copian al actualizar una instancia de SQL Server.
Ejecute la siguiente instrucción en la instancia A para configurarla de modo que use las CPU 0, 1, 2 y 3, y establezca la máscara de afinidad de la CPU:
ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY CPU = 0 TO 3;
Ejecute la siguiente instrucción en la instancia B para configurarla de modo que use las CPU 4, 5, 6 y 7, y establezca la máscara de afinidad de la CPU:
ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY CPU = 4 TO 7;
Mediante el programa Editor del Registro (regedit.exe
), agregue las siguientes claves del Registro para asignar el nodo 0 de soft-NUMA a las CPU 0 y 1, el nodo 1 de soft-NUMA a las CPU 2 y 3, y el nodo 2 de soft-NUMA a las CPU 4, 5, 6 y 7.
Sugerencia
Para especificar las CPU de la 60 a la 63, use un valor QWORD de F000000000000000
o un valor BINARIO de 1111000000000000000000000000000000000000000000000000000000000000
.
En el ejemplo siguiente, suponga que tiene un servidor DL580 G9 con 18 núcleos por socket (en cuatro sockets) y que cada socket está en su propio grupo K. Una configuración soft-NUMA que podrías crear se parecería al siguiente ejemplo: seis núcleos por nodo, tres nodos por grupo, cuatro grupos.
Ejemplo para una instancia de SQL Server con varios grupos K | Tipo | Nombre del valor | Datos del valor |
---|---|---|---|
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 |
DWORD | CPUMask |
0x3f |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 |
DWORD | Group |
0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 |
DWORD | CPUMask |
0x0fc0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 |
DWORD | Group |
0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 |
DWORD | CPUMask |
0x3f000 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 |
DWORD | Group |
0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 |
DWORD | CPUMask |
0x3f |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 |
DWORD | Group |
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 |
DWORD | CPUMask |
0x0fc0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 |
DWORD | Group |
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 |
DWORD | CPUMask |
0x3f000 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 |
DWORD | Group |
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 |
DWORD | CPUMask |
0x3f |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 |
DWORD | Group |
2 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 |
DWORD | CPUMask |
0x0fc0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 |
DWORD | Group |
2 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 |
DWORD | CPUMask |
0x3f000 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 |
DWORD | Group |
2 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 |
DWORD | CPUMask |
0x3f |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 |
DWORD | Group |
3 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 |
DWORD | CPUMask |
0x0fc0 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 |
DWORD | Group |
3 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 |
DWORD | CPUMask |
0x3f000 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 |
DWORD | Group |
3 |
Puede usar las siguientes DMV para ver el estado y configuración actuales de soft-NUMA.
sp_configure (Transact-SQL): muestra el valor actual (0
o 1
) para SOFTNUMA.
sys.dm_os_sys_info (Transact-SQL): Las columnas softnuma_configuration
y softnuma_configuration_desc
muestran los valores de configuración actuales.
El valor actual de uso automático de soft-NUMA se puede ver con sp_configure (Transact-SQL), pero no se puede modificar mediante sp_configure
. Debe usar la instrucción ALTER SERVER CONFIGURATION (Transact-SQL) con el argumento SET SOFTNUMA
.
Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyCursos
Módulo
Configuración de recursos de SQL Server para obtener un rendimiento óptimo - Training
Configuración de recursos de SQL Server para obtener un rendimiento óptimo
Documentación
Configuración del servidor: máscara de afinidad - SQL Server
Obtenga información sobre la opción "affinity mask" en SQL Server. Vea un ejemplo que la usa para enlazar procesadores a subprocesos específicos.
ALTER SERVER CONFIGURATION (Transact-SQL) - SQL Server
ALTER SERVER CONFIGURATION (Transact-SQL)
Configuración del servidor: grado máximo de paralelismo - SQL Server
Obtenga información sobre la opción de grado máximo de paralelismo (MAXDOP). Vea cómo usarla para limitar el número de procesadores que usa SQL Server en la ejecución de planes paralelos.