Eu tenho um servidor com 16 CPUs que está configurado com um max degree of parallelism
de 8 e uma max worker threads
configuração de zero.
Por uma determinada hora, minhas esperas de sinal foram de 20%, mas a utilização da CPU do SO durante esse período nunca ultrapassou 25%. Alguém pode explicar por que minhas esperas de sinal eram tão altas?
Meu fornecedor possui o melhor sistema de pontuação da classe, que espera que tenhamos 10% ou menos de espera de sinal ou seremos enganados. Como posso corrigir isso (sem adicionar CPUs adicionais)?
- Como não temos mais de 8 CPUs por nó NUMA, o Trace Flag 8048 não se aplica.
- A maior instância de espera é
CXPACKET
(70%) e depoisPREEMPTIVE_OS_PIPEOPS
(20%) cost threshold for parallelism
está definido como 50. Devo aumentá-lo? Para quê?- Esta é uma máquina física (não uma VM), dedicada ao SQL Server.
- Estou usando uma ferramenta de monitoramento para identificar as consultas e procedimentos executados com mais frequência. Quero analisar alta CPU, alta E / S ou alta duração? Normalmente, nosso aplicativo é intensivo em E / S, então eu ajusto E / S alta. Mas, como o problema é sinal de espera, preciso analisar a alta CPU?
- Eu esperava evitar a recomendação de Max Vernon para diminuir
MAXDOP
para 4, porque o aplicativo faz algumas consultas no estilo do warehouse que precisam de threads extras.