Devo desativar o HyperThreading

8

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.

Contexto

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%.

Processador

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.

Zane
fonte
11
A menos que seu hardware seja realmente antigo, primeiro consideraria diminuir o MAXDOP e / ou aumentar o limite de custo para o paralelismo. Pode ser que você tenha muitas consultas mais curtas / menores paralelas. (E eu acho que a desativação HT pode não ter o impacto positivo que o esperado.)
Aaron Bertrand
11
Qual é o seu plano de energia definido como equilibrado em oposição ao alto desempenho?
Kin Shah
Para pegar carona no comentário de @aaronbertand. O Maxdop atual é 8 para 32 núcleos lógicos. Vou ter que verificar novamente o limite de custo, pois não lembro o número de imediato.
Zane
O alto desempenho da @kin está definido atualmente.
Zane
11
@ Zane no Windows ou no BIOS?
Tom V - tentativa topanswers.xyz

Respostas:

1

Frequentemente indica nada mais do que certas consultas estão sendo executadas com paralelismo; As esperas do CXPACKET no servidor não são um sinal imediato de problemas, embora possam ser o sintoma de outro problema.

Se o servidor hospedar um banco de dados ou tipo de banco de dados de relatório que recebe um baixo volume de consultas, mas processa grandes quantidades de dados, o paralelismo pode reduzir substancialmente o tempo necessário para executar essas consultas. No entanto, se o servidor hospedar um banco de dados OLTP com muitas consultas e transações pequenas, o paralelismo poderá reduzir a taxa de transferência e afetar negativamente o desempenho.

Sempre que possível, é melhor isolar e solucionar problemas do tipo de espera subjacente, pois isso levará a melhorias gerais na taxa de transferência do sistema. Novamente, as esperas do CXPACKET são simplesmente um sintoma de um problema na maioria dos casos, não o problema real

A DMV sys.dm_os_latch_stats contém informações sobre as esperas de trava específicas que ocorreram na instância e, se uma das trincas superiores aguardar, é ACCESS_METHODS_DATASET_PARENT, em conjunto com CXPACKET, LATCH_ * e SOS_SCHEDULER_YIELD, conforme o tipo de espera superior, o nível de espera superior. o paralelismo no sistema é a causa do gargalo durante a execução da consulta e a redução da opção sp_configure de 'grau máximo de paralelismo' pode ser necessária para resolver os problemas.

Este artigo da TechNet Magazine é antigo, mas diz para tentar desativar o hyperthreading se você exceder os 5000 por segundo por processador:

Otimizando o desempenho da CPU do SQL Server por Zach Nichter

James Rhoat
fonte
Não estou sugerindo que as esperas do cxpacket sejam um sinal de um problema. O que eu quero saber é se Hyper Threading podem causar esses picos de trocas de contexto, e se esses switches podem impactar negativamente consultas paralelas
Zane