Tengo un servidor con 16 CPU que está configurado con un max degree of parallelism8 y una max worker threadsconfiguración de cero.
Durante una hora determinada, mis esperas de señal fueron del 20%, pero la utilización de mi CPU del sistema operativo durante ese tiempo nunca superó el 25%. ¿Alguien puede explicar por qué mi señal de espera fue tan alta?
Mi proveedor tiene el mejor sistema de puntaje en su clase que espera que tengamos un 10% o menos de espera de señal, o que nos critiquen. ¿Cómo puedo solucionar esto (sin agregar CPU adicionales)?
- No tenemos más de 8 CPU por nodo NUMA, por lo que Trace Flag 8048 no se aplica.
- Las esperas de instancia más grandes son CXPACKET(70%), luegoPREEMPTIVE_OS_PIPEOPS(20%)
- cost threshold for parallelismestá establecido en 50. ¿Debo subirlo? ¿A qué?
- Esta es una máquina física (no una VM), dedicada a SQL Server.
- Estoy usando una herramienta de monitoreo para identificar las consultas y procedimientos que se ejecutan con mayor frecuencia. ¿Quiero mirar CPU alta, E / S alta o alta duración? Normalmente nuestra aplicación es de E / S intensiva, por lo que sintonizo E / S altas. Pero dado que el problema es la espera de la señal, ¿tengo que mirar a la CPU alta?
- Esperaba evitar la recomendación de Max Vernon de bajar MAXDOPa 4, porque la aplicación realiza algunas consultas de estilo de almacén que necesitan hilos adicionales.
                    
                        sql-server
                                performance
                                
                    
                    
                        Chris Woods
fuente
                
                fuente

Respuestas:
Respuesta de Community Wiki generada a partir de comentarios sobre la pregunta de Aaron .
A menos que tenga problemas de rendimiento, el alto porcentaje de
CXPACKETesperas solo puede ser un indicador de que una gran parte de las consultas van en paralelo y no son realmente un problema.La CPU alta podría ser un indicador, pero por lo que ha explicado, diría que busque consultas con duraciones largas pero CPU baja para comenzar. La
CXPACKETespera a veces se asocia con una consulta que espera a que finalicen todos los subprocesos antes de poder fusionar los resultados (sesgo de datos).Si puede modificar las consultas y los procedimientos, puede establecer un valor más alto
MAXDOPpara las tareas de almacén que lo necesitan y un valor globalMAXDOPmás bajo. Sin embargo, solo haría eso como último recurso. Realmente solo desea hacer ese tipo de sugerencias explícitas cuando haya agotado todas las posibilidades o no pueda realizar cambios en el código, las consultas o los esquemas de la base de datos.fuente