Devo disabilitare HyperThreading


8

BACKGROUND Di recente ho esaminato alcuni tempi di attesa CXPacket piuttosto elevati di recente che mi hanno fatto usare SQL Sentry per monitorare l'attività del processore abbastanza da vicino.

Una cosa che ho notato di conseguenza è che abbiamo enormi picchi nel cambio di contesto. Di seguito è riportato un campione di 5 minuti, ma questo schema è molto comune durante il giorno.

Contesto

Come puoi vedere, picchi abbastanza regolarmente. Ora la mia comprensione di questo mi porterebbe a credere che questo sarebbe il risultato della pressione della CPU. Tuttavia durante quel periodo a malapena supera il 60%.

Processore

Dopo alcune ricerche, questo mi ha portato a credere che ciò stesse accadendo a causa dell'hyper threading. So di aver letto prima alcuni dei pericoli dell'hyper threading. Comunque è stato scritto molto tempo fa.

Riassumere. L'hyper threading è probabilmente il colpevole di questi picchi nel cambio di contesto? È possibile che il cambio di contesto abbia un impatto negativo sulle mie query parallele? Devo disabilitare l'hyper threading nel mio ambiente?

AGGIORNAMENTO sebbene questa cosa specifica stia accadendo nel mio ambiente, la domanda alla base è più universale. Che impatto possono avere alti livelli di cambio di contesto su query parallele? L'hyper threading può causare questo tipo di problema?

Alla fine la maggior parte di ciò che trovo su Internet suggerisce che l'hyper threading e SQL Server non sono buoni amici, tuttavia la maggior parte delle informazioni sono estremamente datate.

Il mio sistema Ci sono state molte domande sulla configurazione, quindi le affronterò qui in modo che possano essere escluse. Abbiamo le impostazioni di potenza sulle prestazioni sia a livello di sistema operativo che a livello bio. Il nostro Maxdop è impostato su 8 e la soglia di costo per il parallelismo è 25. Abbiamo 32 core logici e 16 fisici. Anche questo è per lo più uno scenario di caricamento del data warehouse.


11
A meno che il tuo hardware non sia davvero vecchio, in primo luogo prenderei in considerazione la riduzione del MAXDOP e / o l'aumento della soglia di costo per il parallelismo. È possibile che tu abbia troppe query più brevi / più piccole che stanno andando in parallelo. (E penso che disabilitare l'HT potrebbe non avere l'impatto positivo che ti aspetti.)
Aaron Bertrand

1
Qual è il tuo piano di potenza impostato su bilanciato rispetto ad alte prestazioni?
Kin Shah,

A cavalluccio sul commento di @aaronbertand. Current Maxdop è 8 per 32 core logici. Dovrò ricontrollare la soglia di costo poiché non ricordo il numero fuori mano.
Zane,

@kin ad alte prestazioni è attualmente impostato.
Zane,

1
@Zane in Windows o nel BIOS?
Tom V - prova topanswers.xyz il

Risposte:


1

Spesso indica nient'altro che determinate query vengono eseguite con parallelismo; CXPACKET attende nel server non è un segno immediato di problemi, sebbene possano essere il sintomo di un altro problema.

Se il server ospita un data warehouse o un tipo di database di report che riceve un basso volume di query ma elabora grandi quantità di dati, il parallelismo può ridurre sostanzialmente il tempo necessario per eseguire tali query. Al contrario, tuttavia, se il server ospita un database OLTP che presenta molte piccole query e transazioni, il parallelismo può interrompere la velocità effettiva e influire negativamente sulle prestazioni.

Quando possibile, è meglio isolare e risolvere i problemi relativi al tipo di attesa sottostante, poiché ciò comporterà miglioramenti globali della velocità effettiva del sistema. Ancora una volta, le attese di CXPACKET sono semplicemente un sintomo di un problema nella maggior parte dei casi, non il problema reale

Il DMV sys.dm_os_latch_stats contiene informazioni sulle attese di latch specifiche che si sono verificate nell'istanza e se una delle attese di latch più elevate è ACCESS_METHODS_DATASET_PARENT, in combinazione con CXPACKET, LATCH_ * e SOS_SCHEDULER_YIELD, i tipi di attesa come livelli di attesa principali, il parallelismo sul sistema è la causa del collo di bottiglia durante l'esecuzione della query e potrebbe essere richiesta la riduzione dell'opzione sp_configure "grado massimo di parallelismo" per risolvere i problemi.

Questo articolo di TechNet Magazine è vecchio ma dice di provare a disattivare l'hyperthreading se si superano i 5000 al secondo per processore:

Ottimizzazione delle prestazioni della CPU di SQL Server di Zach Nichter


Non sto suggerendo che le attese di cxpacket siano un segno di un problema. Quello che voglio sapere è se l'hyper threading può causare questi picchi negli switch di contesto e se tali switch possono influire negativamente sulle query parallele
Zane,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.