¿Debo deshabilitar HyperThreading

8

ANTECEDENTES Recientemente he estado buscando algunos tiempos de espera CXPacket bastante altos que me han hecho usar SQL Sentry para monitorear la actividad del procesador de cerca.

Una cosa que he notado como resultado es que tenemos picos masivos en el cambio de contexto. A continuación se muestra una muestra de 5 minutos, pero este patrón es muy común durante todo el día.

Contexto

Como puede ver, se dispara con bastante frecuencia. Ahora, mi comprensión de esto me llevaría a creer que esto sería el resultado de la presión de la CPU. Sin embargo, durante ese tiempo apenas se supera el 60%.

Procesador

Después de un poco de investigación, esto me llevó a creer que esto está sucediendo como resultado del hiperprocesamiento. Sé que había leído antes algunos de los peligros del hiperprocesamiento. Sin embargo, eso fue escrito hace muuuucho tiempo.

Para acortar una historia larga. ¿Es probable que Hyper Threading sea el culpable de estos picos en el cambio de contexto? ¿Es posible que el cambio de contexto esté afectando negativamente mis consultas paralelas? ¿Debo deshabilitar hyper threading en mi entorno?

ACTUALIZAR aunque esto específico está sucediendo en mi entorno, la pregunta en su núcleo es más universal. ¿Qué tan impactantes pueden ser los altos niveles de cambio de contexto en consultas paralelas? ¿Puede el hiperprocesamiento causar este tipo de problema?

En última instancia, la mayor parte de lo que encuentro en Internet sugiere que Hyper Threading y SQL Server no son buenos amigos, sin embargo, la mayoría de esa información está muy anticuada.

Mi sistema Hubo muchas preguntas de configuración, así que las abordaré aquí para que puedan descartarse. Tenemos la configuración de potencia en el rendimiento tanto en el sistema operativo como en el nivel bio. Nuestro Maxdop está establecido en 8 y el umbral de costo para el paralelismo es 25. Tenemos 32 núcleos lógicos y 16 físicos. Además, este es en su mayor parte un escenario de carga de almacenamiento de datos.

Zane
fuente
11
A menos que su hardware sea realmente antiguo, primero consideraría reducir MAXDOP y / o elevar el umbral de costos para el paralelismo. Es posible que tenga demasiadas consultas más cortas / más pequeñas que van paralelas. (Y creo que deshabilitar HT podría no tener el impacto positivo que espera).
Aaron Bertrand
1
¿Cuál es su plan de energía configurado para equilibrado en lugar de alto rendimiento?
Kin Shah
Para aprovechar el comentario de @aaronbertand. Maxdop actual es 8 para 32 núcleos lógicos. Tendré que verificar el umbral de costo ya que no recuerdo el número disponible.
Zane
@kin de alto rendimiento está configurado actualmente.
Zane
1
@Zane en Windows o en el BIOS?
Tom V - prueba topanswers.xyz

Respuestas:

1

A menudo indica nada más que que ciertas consultas se ejecutan con paralelismo; Las esperas de CXPACKET en el servidor no son una señal inmediata de problemas, aunque pueden ser el síntoma de otro problema.

Si el servidor aloja un almacén de datos o un tipo de base de datos de informes que recibe un bajo volumen de consultas pero procesa grandes cantidades de datos, el paralelismo puede reducir sustancialmente el tiempo que lleva ejecutar esas consultas. Sin embargo, en contraste, si el servidor aloja una base de datos OLTP que tiene muchas consultas y transacciones pequeñas, entonces el paralelismo puede matar el rendimiento y afectar negativamente el rendimiento.

Siempre que sea posible, es mejor aislar y solucionar el tipo de espera subyacente, ya que esto conducirá a mejoras generales en el rendimiento del sistema. Nuevamente, las esperas de CXPACKET son simplemente un síntoma de un problema en la mayoría de los casos, no el problema real

El DMV sys.dm_os_latch_stats contiene información sobre las esperas de enclavamiento específicas que se han producido en la instancia, y si una de las esperas de enclavamiento superior es ACCESS_METHODS_DATASET_PARENT, junto con CXPACKET, LATCH_ * y SOS_SCHEDULER_YIELD, los tipos de espera como el nivel de espera superior, el paralelismo en el sistema es la causa del cuello de botella durante la ejecución de la consulta, y puede ser necesario reducir la opción sp_configure 'grado máximo de paralelismo' para resolver los problemas.

Este artículo de la revista TechNet es antiguo, pero dice que intente desactivar el hyperthreading si excede los 5000 por segundo por procesador:

Optimización del rendimiento de la CPU de SQL Server por Zach Nichter

James Rhoat
fuente
No estoy sugiriendo que las esperas de cxpacket sean una señal de un problema. Lo que quiero saber es si el hiperprocesamiento puede causar estos picos en los cambios de contexto, y si esos cambios pueden afectar negativamente las consultas paralelas
Zane