Ich habe einen Server mit 16 CPUs, der mit einer max degree of parallelism
8 und einer max worker threads
Einstellung von Null konfiguriert ist .
Während einer bestimmten Stunde betrug meine Signalwartezeit 20%, aber meine CPU-Auslastung des Betriebssystems stieg in dieser Zeit nie über 25%. Kann jemand erklären, warum meine Signalwartezeiten so hoch waren?
Mein Anbieter verfügt über ein erstklassiges Bewertungssystem, das erwartet, dass wir 10% oder weniger Signalwartezeiten haben, oder wir werden dinged. Wie kann ich das beheben (ohne zusätzliche CPUs hinzuzufügen)?
- Wir haben nicht mehr als 8 CPUs pro NUMA-Knoten, daher gilt das Trace-Flag 8048 nicht.
- Die größten Instanzwartezeiten sind
CXPACKET
(70%), dannPREEMPTIVE_OS_PIPEOPS
(20%) cost threshold for parallelism
ist auf 50 eingestellt. Soll ich es erhöhen? Zu was?- Dies ist eine physische Maschine (keine VM), die für SQL Server reserviert ist.
- Ich verwende ein Überwachungstool, um die am häufigsten ausgeführten Abfragen und Verfahren zu identifizieren. Möchte ich eine hohe CPU, eine hohe E / A oder eine hohe Dauer betrachten? Normalerweise ist unsere App E / A-intensiv, daher stelle ich hohe E / A ein. Aber da das Problem Signalwartezeiten ist, muss ich mir die hohe CPU ansehen?
- Ich hatte gehofft, Max Vernons Empfehlung zu vermeiden ,
MAXDOP
auf 4 zu senken , da die App einige Abfragen im Warehouse-Stil ausführt, für die zusätzliche Threads erforderlich sind.