INTRODUÇÃO Recentemente, estive analisando recentemente alguns tempos de espera CXPacket razoavelmente altos, que me fizeram usar o SQL Sentry para monitorar a atividade do processador de perto.
Uma coisa que notei como resultado é que temos picos enormes na alternância de contexto. Abaixo está uma amostra de 5 minutos, mas esse padrão é muito comum ao longo do dia.
Como você pode ver, os picos são bastante regulares. Agora, meu entendimento disso me levaria a acreditar que esse seria o resultado da pressão da CPU. No entanto, durante esse tempo, quase não supera os 60%.
Após algumas pesquisas, isso me levou a acreditar que isso está acontecendo como resultado da hiper-segmentação. Sei que li anteriormente alguns dos perigos da hiper-segmentação. No entanto, isso foi escrito há muito tempo.
Para resumir uma longa história. É provável que o hyper threading seja o culpado por esses picos na alternância de contexto? É possível que a alternância de contexto esteja impactando negativamente minhas consultas paralelas? Devo desativar o hyper threading no meu ambiente?
ATUALIZAÇÃO Embora essa coisa específica esteja acontecendo no meu ambiente, a questão em seu núcleo é mais universal. Qual o impacto dos altos níveis de alternância de contexto em consultas paralelas? O hyper threading pode causar esse tipo de problema?
Em última análise, a maior parte do que encontro na internet sugere que o hyper threading e o SQL Server não são bons amigos; no entanto, mais do que isso, as informações são extremamente antigas.
Meu sistema Havia muitas questões de configuração, por isso irei abordá-las aqui para que possam ser descartadas. Temos as configurações de energia no desempenho, tanto no SO quanto no nível biológico. Nosso Maxdop é definido como 8 e o limite de custo para paralelismo é 25. Temos 32 núcleos lógicos e 16 físicos. Além disso, esse é, na maior parte, um cenário de carregamento de data warehouse.