Límites de la capacidad de cálculo de cada edición de SQL Server

Se aplica a: SQL Server

En este artículo se describen los límites de la capacidad de cálculo para las ediciones de SQL Server y sus diferencias en entornos físicos y virtualizados con los procesadores de multithreading simultáneos (SMT). En las CPU de Intel, SMT se denomina Hyper-Threading.

Información general

Diagrama que muestra las asignaciones a los límites de capacidad de proceso.

En esta tabla se describen las notaciones del diagrama anterior:

Value Descripción
0..1 Cero o uno
1 Exactamente uno
1..* Uno o más
0..* Cero o más
1..2 Uno o dos

Información ampliada:

  • Una máquina virtual tiene uno o varios procesadores virtuales.
  • Uno o más procesadores virtuales se asignan exactamente a una máquina virtual.
  • Cero o un procesador virtual se asigna a cero o más procesadores lógicos. En la asignación de procesadores virtuales a procesadores lógicos:
    • Uno a cero: representa un procesador lógico desenlazado no utilizado por los sistemas operativos invitados.
    • Uno a muchos: representa un esfuerzo excesivo.
    • Cero a muchos: representa la ausencia de máquinas virtuales en el sistema host. Las máquinas virtuales no usan ningún procesador lógico.
  • Un socket se asigna a cero o más núcleos. En la asignación de socket a núcleo:
    • Uno a cero: representa un socket vacío. No se instala ningún chip.
    • Uno a uno: representa un único chip de núcleo instalado en el socket. Esta asignación es poco frecuente hoy en día.
    • Uno a muchos: representa un chip de varios núcleos instalado en el socket. Los valores típicos son 2, 4 y 8.
  • Un núcleo se asigna a uno o dos procesadores lógicos. En la asignación de núcleos a procesadores lógicos:
    • Uno a uno: SMT está desactivado.
    • Uno a dos: SMT está activado.

Las definiciones siguientes se aplican a los términos usados en este artículo:

  • Un subproceso o procesador lógico es un motor de cálculo lógico desde la perspectiva de SQL Server, el sistema operativo, una aplicación o un controlador.

  • Una núcleo es una unidad de procesador. Puede constar de uno o varios procesadores lógicos.

  • Un procesador físico puede estar formado por uno o varios núcleos. Un procesador físico es igual que un paquete de procesadores, o socket.

Limitar el número de núcleos lógicos por nodo NUMA a 64

Puede experimentar problemas como el volcado de pilas en servidores con más de 64 procesadores lógicos por nodo NUMA. Una configuración de BIOS o firmware puede reducir el recuento de núcleos lógicos a un máximo de 64 procesadores lógicos por nodo NUMA, mostrados en el sistema operativo.

Precaución

La actualización acumulativa 11 de SQL Server 2022 (16.x) introdujo un cambio importante, donde el Motor de base de datos no se inicia si detecta más de 64 núcleos lógicos por nodo NUMA.

Puede reducir el número de núcleos lógicos por nodo NUMA en una máquina virtual de Azure si deshabilita SMT. En el caso de las instancias de SQL Server sin sistema operativo, puede reducir el número de núcleos lógicos con las opciones de clústeres de sub-NUMA (SNC) o Nodos por socket (NPS).

Deshabilitación de SMT en una máquina virtual de Azure

SQL Server tiene un límite admitido de 64 núcleos lógicos por nodo NUMA. En algunos casos, la máquina virtual de la serie Mv3 de Azure podría superar este límite, lo que impide que SQL Server se inicie o permita que se ejecute con un rendimiento degradado. Para deshabilitar SMT, realice los siguientes cambios mediante PowerShell y el Editor del Registro (reg.exe). Asegúrese de realizar una copia de seguridad del registro antes de editarlo.

  1. Compruebe el número de núcleos lógicos. SMT está habilitado si la relación es 2:1 (el número de núcleos lógicos es el doble del número de núcleos).

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    
  2. Deshabilite SMT con los dos cambios del registro siguientes y reinicie la máquina virtual.

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
    
  3. Compruebe de nuevo el número de núcleos lógicos. El número de núcleos lógicos debe coincidir con el número de núcleos.

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    

Reducción del número de núcleos lógicos en instancias sin sistema operativo

En las tablas siguientes se describe cómo reducir el número de núcleos lógicos en instancias sin sistema operativo de SQL Server.

En las CPU de Intel, puede habilitar la agrupación en clústeres de sub-NUMA (SNC), anteriormente denominada Cluster-on-Die (CoD), lo que da lugar a dos dominios NUMA dentro de un único socket físico.

Opciones de configuración Descripción
SNC inhabilitado (predeterminado) Inhabilita la agrupación en clústeres de sub-NUMA.
SNC habilitado Habilita la agrupación en clústeres de sub-NUMA.

En las CPU de AMD, puede habilitar varias opciones de nodos por socket (NPS).

Opciones de configuración Descripción
NPS0 En un sistema de socket dual, NUMA se presenta como un único nodo con todos los canales de memoria intercalados en el nodo.
NPS1 (valor predeterminado) Esta configuración presenta un nodo NUMA por socket.
NPS2 Esta configuración presenta dos nodos NUMA por socket, de forma similar a SNC.
NPS4 Esta configuración presenta cuatro nodos NUMA por socket.

Comentarios

Los sistemas con más de un procesador físico o con procesadores físicos que tienen varios núcleos y/o SMT permiten al sistema operativo ejecutar varias tareas simultáneamente. Cada subproceso de ejecución aparece como procesador lógico. Por ejemplo, si su equipo tiene dos procesadores de cuatro núcleos con la función SMT habilitada y dos subprocesos por núcleo, tiene 16 procesadores lógicos: 2 procesadores x 4 núcleos por procesador x 2 subprocesos por núcleo. Merece la pena mencionar que:

  • La capacidad de cálculo de un procesador lógico de un solo subproceso de un núcleo SMT es menor que la capacidad de cálculo de un procesador lógico del mismo núcleo con SMT deshabilitado.

  • Sin embargo, la capacidad de cálculo de los dos procesadores lógicos del núcleo SMT es mayor que la capacidad de cálculo del mismo núcleo con SMT deshabilitado.

Cada edición de SQL Server tiene dos límites de capacidad de cálculo:

  • Un número máximo de sockets (o procesadores físicos o paquetes de procesador)

  • Un número máximo de núcleos de los que ha informado el sistema operativo

Estos límites se aplican a una sola instancia de SQL Server. Representan la capacidad máxima de cálculo que usa una sola instancia. No restringen el servidor en el que se puede implementar la instancia. De hecho, implementar varias instancias de SQL Server en el mismo servidor físico es una manera eficaz de usar la capacidad de procesamiento de un servidor físico con más sockets o núcleos que los límites de capacidad siguientes.

En la siguiente tabla se especifican los límites de la capacidad de cálculo para una sola instancia de cada edición de SQL Server:

Edición deSQL Server Capacidad máxima de cálculo para una sola instancia (Motor de base de datos de SQL Server) Capacidad máxima de cálculo para una sola instancia (AS, RS)
Enterprise Edition: licencia basada en núcleo 1 Sistema operativo máximo Sistema operativo máximo
Desarrollador Sistema operativo máximo Sistema operativo máximo
Estándar Limitada a menos de 4 sockets o 24 núcleos Limitada a menos de 4 sockets o 24 núcleos
Express Limitada a menos de 1 socket o 4 núcleos Limitada a menos de 1 socket o 4 núcleos

1 La licencia Enterprise Edition con licencia de servidor y acceso de cliente (CAL) está limitada a 20 núcleos por instancia de SQL Server. Esta concesión de licencias no está disponible para nuevos contratos. No hay ningún límite en el modelo de licencias de servidor basado en núcleos.

En un entorno virtualizado, el límite de capacidad de cálculo se basa en el número de procesadores lógicos, no de núcleos. Esto se debe a que la arquitectura de procesador no es visible para las aplicaciones invitadas.

Por ejemplo, un servidor con cuatro sockets poblados con procesadores de cuatro núcleos y la capacidad de habilitar dos subprocesos SMT por núcleo contiene 32 procesadores lógicos con SMT habilitado, pero solo 16 procesadores lógicos con SMT deshabilitado. Estos procesadores lógicos se pueden asignar a las máquinas virtuales del servidor. La carga de cálculo de las máquinas virtuales de este procesador lógico se asigna a un subproceso de ejecución en el procesador lógico del servidor host.

Puede que quiera deshabilitar SMT cuando el rendimiento de cada procesador virtual sea importante. El SMT se puede configurar mediante la configuración del BIOS del procesador durante la instalación del BIOS, pero normalmente es una operación de ámbito de servidor que afectará a todas las cargas de trabajo que se ejecutan en el servidor. Puede considerar el separar las cargas de trabajo que se ejecutan en entornos virtualizados de aquellas que se beneficiarían de aumentar el rendimiento de SMT en un entorno físico del sistema operativo.

Obtener ayuda

Contribuya a la documentación de SQL

¿Sabía que puede editar el contenido de SQL usted mismo? Si lo hace, no solo contribuirá a mejorar la documentación, sino que también se le reconocerá como colaborador de la página.

Para más información, vea Cómo colaborar en la documentación de SQL Server.