Sollte ich HyperThreading deaktivieren?

8

HINTERGRUND Ich habe kürzlich einige ziemlich hohe CXPacket-Wartezeiten untersucht, bei denen ich SQL Sentry verwendet habe, um die Prozessoraktivität ziemlich genau zu überwachen.

Eine Sache, die mir als Ergebnis aufgefallen ist, ist, dass wir massive Spitzen beim Kontextwechsel haben. Unten finden Sie eine 5-minütige Probe, aber dieses Muster ist den ganzen Tag über sehr verbreitet.

Kontext

Wie Sie sehen können, spitzt es ziemlich regelmäßig. Jetzt würde mein Verständnis davon mich glauben lassen, dass dies das Ergebnis des CPU-Drucks sein würde. In dieser Zeit jedoch kaum mehr als 60%.

Prozessor

Nach einigen Recherchen kam ich zu der Annahme, dass dies auf Hyper-Threading zurückzuführen ist. Ich weiß, dass ich früher einige der Gefahren von Hyper-Threading gelesen habe . Das wurde jedoch schon vor langer Zeit geschrieben.

Um es kurz zu machen. Ist Hyper-Threading wahrscheinlich der Schuldige für diese Spitzen beim Kontextwechsel? Ist es möglich, dass sich das Umschalten des Kontexts negativ auf meine parallelen Abfragen auswirkt? Sollte ich Hyper-Threading in meiner Umgebung deaktivieren?

UPDATE Obwohl diese spezielle Sache in meiner Umgebung passiert, ist die Frage im Kern universeller. Wie effektiv kann ein hohes Maß an Kontextumschaltung bei parallelen Abfragen sein? Kann Hyper-Threading diese Art von Problem verursachen?

Letztendlich deutet das meiste, was ich im Internet finde, darauf hin, dass Hyper-Threading und SQL Server keine guten Freunde sind, aber die meisten Informationen sind extrem veraltet.

Mein System Es gab viele Konfigurationsfragen, daher werde ich diese hier beantworten, damit sie ausgeschlossen werden können. Wir haben die Leistungseinstellungen für die Leistung sowohl auf Betriebssystem- als auch auf Bioebene. Unser Maxdop ist auf 8 eingestellt und der Kostenschwellenwert für Parallelität liegt bei 25. Wir haben 32 logische und 16 physische Kerne. Auch dies ist größtenteils ein Data Warehouse-Ladeszenario.

Zane
quelle
11
Sofern Ihre Hardware nicht wirklich alt ist, würde ich zunächst in Betracht ziehen, MAXDOP zu senken und / oder die Kostenschwelle für Parallelität zu erhöhen. Es kann sein, dass Sie viel zu viele kürzere / kleinere Abfragen haben, die parallel laufen. (Und ich denke, das Deaktivieren von HT hat möglicherweise nicht die erwarteten positiven Auswirkungen.)
Aaron Bertrand
1
Was ist Ihr Energieplan auf Ausgewogenheit im Gegensatz zu hoher Leistung eingestellt?
Kin Shah
Zum Huckepack auf @aaronbertands Kommentar. Derzeit ist Maxdop 8 für 32 logische Kerne. Ich muss die Kostenschwelle noch einmal überprüfen, da ich mich nicht sofort an die Nummer erinnere.
Zane
@kin hohe Leistung ist derzeit eingestellt.
Zane
1
@Zane in Windows oder im BIOS?
Tom V - versuchen Sie topanswers.xyz

Antworten:

1

Zeigt oft nichts weiter an, als dass bestimmte Abfragen parallel ausgeführt werden. CXPACKET-Wartezeiten auf dem Server sind kein unmittelbares Anzeichen für Probleme, obwohl sie möglicherweise das Symptom eines anderen Problems sind.

Wenn der Server ein Data Warehouse oder einen Berichtstyp einer Datenbank hostet, der ein geringes Abfragevolumen empfängt, aber große Datenmengen verarbeitet, kann die Parallelität die Zeit für die Ausführung dieser Abfragen erheblich verkürzen. Wenn der Server jedoch eine OLTP-Datenbank mit vielen kleinen Abfragen und Transaktionen hostet, kann Parallelität den Durchsatz beeinträchtigen und die Leistung beeinträchtigen.

Wann immer möglich, ist es am besten, den zugrunde liegenden Wartetyp zu isolieren und Fehler zu beheben, da dies zu Verbesserungen des Gesamtsystemdurchsatzes führt. Auch hier sind die CXPACKET-Wartezeiten in den meisten Fällen lediglich ein Symptom für ein Problem, nicht das eigentliche Problem

Die DMV sys.dm_os_latch_stats enthält Informationen zu den spezifischen Latch-Wartezeiten, die in der Instanz aufgetreten sind. Wenn eine der obersten Latch-Wartezeiten ACCESS_METHODS_DATASET_PARENT in Verbindung mit CXPACKET, LATCH_ * und SOS_SCHEDULER_YIELD ist, werden die Wartetypen als oberste Wartezeiten verwendet Parallelität auf dem System ist die Ursache für Engpässe bei der Ausführung von Abfragen. Zur Behebung der Probleme kann eine Reduzierung der Option sp_configure "Maximaler Parallelitätsgrad" erforderlich sein.

Dieser Artikel im TechNet Magazine ist alt, aber es heißt, Sie sollten versuchen, das Hyperthreading auszuschalten, wenn Sie die 5000 pro Sekunde pro Prozessor überschreiten:

Optimieren der SQL Server-CPU-Leistung von Zach Nichter

James Rhoat
quelle
Ich behaupte nicht, dass cxpacket-Wartezeiten ein Zeichen für ein Problem sind. Was ich wissen möchte, ist, ob Hyper-Threading diese Spitzen in Kontextwechseln verursachen kann und ob diese Schalter parallele Abfragen negativ beeinflussen können
Zane