SQL Server no utiliza todos los núcleos / subprocesos de la CPU

15

Después de actualizar el hardware de nuestro Servidor SQL, notamos en el Administrador de tareas de Windows que la instancia de SQL solo usa la mitad de los hilos disponibles:

Administrador de tareas.

El servidor tiene el siguiente hardware y software:

  • Windows 2008 R2 Enterprise 64bit SP1
  • Intel Xeon E7-4870: 4 procesadores (40 núcleos, 80 hilos)
  • Microsoft SQL Server 2012 Enterprise Edition (64 bits)

Correr select cpu_count from sys.dm_os_sys_infodevuelve 40.

El sistema operativo ve los 80 hilos.

¿Por qué solo se usa la mitad de la potencia de procesamiento del servidor?

Tenemos el mismo hardware y software en dos servidores y ambos exhiben el mismo comportamiento.

Jon Seigel
fuente

Respuestas:

23

En el registro de errores de SQL Server, debería decirle por qué. Encontré esto en un sistema de cliente (realmente solo pego el mensaje para el jugo de Google):

SQL Server detectó 4 sockets con 8 núcleos por socket y 16 procesadores lógicos por socket, 64 procesadores lógicos totales; utilizando 40 procesadores lógicos basados ​​en licencias de SQL Server. Este es un mensaje informativo; No se requiere ninguna acción del usuario.

Obtuve la explicación probable de aquí :

Para los clientes con Software Assurance en las licencias existentes de SQL EE Server (o acceso a ellos bajo sus Acuerdos empresariales actuales durante el plazo), se creó una versión de Enterprise Edition para permitirles actualizar a SQL Server 2012. Esta versión tiene restricciones técnicas que limitan una instancia a utilizando solo 20 núcleos de procesador (40 hilos de CPU con Hyperthreading).

Resumen: en el registro de errores, la edición se informará como Enterprise Editiono Enterprise Edition: Core-based Licensing. Si dice lo primero, como en el caso del sistema de cliente mencionado anteriormente, deberá obtener una licencia basada en el núcleo para usar todos los núcleos disponibles.

Si ese no es el caso y ya tiene licencia para todos los núcleos, verifique la configuración de la máscara de afinidad, especialmente si se configuraron y se actualizó el hardware subyacente.

Jon Seigel
fuente
Tuvimos un problema similar. Construimos una VM con 1 socket y 32 núcleos. SQL solo reconocería 8 CPU. Lo cambiamos a 8 zócalos y 4 núcleos el problema desapareció. Estamos ejecutando Enterprise editon sql 2008r2 en Windows 2008r2.
user3799984
Tuve el mismo problema con una versión estándar. Teníamos 8 enchufes usados ​​y no usaría el resto. Todo lo que tuvimos que hacer es cambiar la VM y configurar 4 sockets y 2 núcleos.
Nicolas de Fontenay
7

Busque en el ERRORLOG desde la primera vez que se encendió SQL Server. Te dirá cuántas CPU está usando, y probablemente por qué. Si puede publicar el archivo ERRORLOG en algún lugar, será útil para ver lo que está sucediendo.

mrdenny
fuente
3

Vi esto en otra publicación de Ajmer Dhariwal:

Incluso si tiene la edición Enterprise, si el modelo de licencia que se está aplicando es Servidor + Licencia de acceso de cliente (CAL), entonces el servidor está limitado a 20 núcleos físicos por instancia

Dom
fuente