Erhöhte Wartezeiten während des Checkpoints nach dem Upgrade auf besseren Speicher

9

Bei der Migration von einem älteren All-Flash-Array zu einem neueren All-Flash-Array (anderer, aber gut etablierter Anbieter) kam es in SQL Sentry zu vermehrten Wartezeiten während der Checkpoints.

Version: SQL Server 2012 Sp4

Auf unserem alten Speicher lagen unsere Wartezeiten bei einem Kontrollpunkt bei etwa 2 km mit "Spikes" bis 2500, bei dem neuen Speicher betragen die Spikes normalerweise 10.000 mit Spitzen nahe 50.000. Sentry weist uns mehr auf PAGEIOLATCHWatis hin. Nach unserer eigenen Analyse scheint es sich um eine Kombination von PAGEIOLATCH and PAGELATCHWartezeiten zu handeln. Mit Perfmon können wir im Allgemeinen sagen, je mehr Seiten wir überprüfen, desto mehr Wartezeiten erhalten wir, aber wir spülen nur ~ 125 MB während des Prüfpunkts. Unsere Arbeitslast besteht hauptsächlich aus Schreibvorgängen (hauptsächlich Einfügungen / Aktualisierungen).

Der Speicheranbieter hat uns bewiesen, dass das direkt angeschlossene Fibre Channel-Array während dieser Checkpoint-Ereignisse unter 1 ms reagiert. Der HBA bestätigt auch die Nummern des Arrays. Wir glauben auch nicht, dass es sich um ein Problem mit der HBA-Warteschlange handelt, da die Warteschlangentiefe nie über 8 lag. Wir haben auch einen neueren HBA ausprobiert und die Einstellungen für ZIO, Ausführungsdrossel und Warteschlangentiefe ohne Erfolg geändert. Wir haben auch den Arbeitsspeicher des Servers ohne Änderung von 500 GB auf 1 TB erhöht. Während des Checkpoint-Prozesses sehen wir 2 - 4 einzelne Kerne (von 16) auf 100% ansteigen, aber die Gesamt-CPU liegt bei etwa 20%. Das BIOS ist ebenfalls auf hohe Leistung eingestellt. Interessanterweise sehen wir jedoch, dass sich die CPUs im Allgemeinen in einem C2-Ruhezustand befinden, obwohl wir dies deaktiviert haben. Daher untersuchen wir immer noch, warum der Ruhezustand über C1 hinausgeht.

Wir können sehen, dass fast alle Wartezeiten auf Datenseiten mit einem gelegentlichen PFS vom DCM-Seitentyp stattfinden. Wartezeiten finden in Benutzer-DBs statt, nicht in Tempdb. Wir sehen auch, dass die Wartezeiten über mehrere Datenseiten verteilt sind und einige SPIDs auf derselben Seite warten. Das Datenbankdesign enthält zwar einige Hotspots zum Einfügen, aber das gleiche Design wurde für den alten Speicher verwendet.

Durch 100-maliges Ausführen einer Schleife dieser Abfrage konnten wir feststellen, wie viele SPIDs auf der Festplatte im Vergleich zum Speicher warteten

SELECT
    [owt].[wait_type], count(*) as waitcount
FROM sys.dm_os_waiting_tasks [owt]
WHERE [owt].[wait_type] LIKE 'PAGE%'
group by [owt].[wait_type]
order by 1
GO 100

Geben Sie hier die Bildbeschreibung ein

Das "Schöne" ist, dass wir das Problem leicht in unserer Perf-Umgebung reproduzieren können, die das gleiche Modellarray und ähnliche Serverspezifikationen aufweist. Ich würde mich über Gedanken darüber freuen, wo ich sonst suchen oder wie ich das Problem eingrenzen kann. Im Moment umfassen unsere nächsten Tests: einen neuen Server mit neuerem Motherboard und mehr CPUs; Deaktivieren von SIOS Datakeeper (obwohl dies bei altem Speicher vorhanden war); andere HBA-Marke.

exec sp_Blitz @outputtype = 'markdown'

Priorität 5: Zuverlässigkeit : - Gefährliche Module von Drittanbietern - Sophos Limited - Sophos Buffer Overrun-Schutz - SOPHOS ~ 2.DLL - Verdacht auf gefährliche Module von Drittanbietern ist installiert.

Priorität 200: Information : - Clusterknoten - Dies ist ein Knoten in einem Cluster. - TraceFlag Ein - Das Trace-Flag 1117 ist global aktiviert. - Das Ablaufverfolgungsflag 1118 ist global aktiviert. - Das Ablaufverfolgungsflag 3226 ist global aktiviert.

Priorität 200: Lizenzierung : - Verwendete Funktionen der Enterprise Edition * xxxxx - Die Datenbank [xxxxxx] verwendet die Komprimierung. Wenn diese Datenbank auf einem Standard Edition-Server wiederhergestellt wird, schlägt die Wiederherstellung bei Versionen vor 2016 SP1 fehl. * xxxxx - Die Datenbank [xxxxxx] verwendet Partitionierung. Wenn diese Datenbank auf einem Standard Edition-Server wiederhergestellt wird, schlägt die Wiederherstellung bei Versionen vor 2016 SP1 fehl.

Priorität 240: Wartestatistiken : - Es wurden keine signifikanten Wartezeiten festgestellt. - Dieser Server befindet sich möglicherweise nur im Leerlauf oder jemand hat kürzlich die Wartestatistiken gelöscht.

Priorität 250: Serverinfo: - Hardware - Logische Prozessoren: 16. Physischer Speicher: 512 GB. - Hardware - NUMA Config - Knoten: 0 Status: ONLINE Online-Scheduler: 8 Offline-Scheduler: 0 Prozessorgruppe: 0 Speicherknoten: 0 Speicher VAS Reserviert GB: 1177 - Knoten: 1 Status: ONLINE Online-Scheduler: 8 Offline-Scheduler: 0 Prozessor Gruppe: 0 Speicherknoten: 1 Speicher VAS Reserviert GB: 0 - Energieplan - Ihr Server verfügt über 3,50-GHz-CPUs und befindet sich im Hochleistungs-Energiemodus. - Letzter Neustart des Servers - 4. Juli 2018, 04:56 Uhr - Letzter Neustart des SQL-Servers - 5. Juli 2018, 05:11 Uhr - SQL Server-Dienst - Version: 11.0.7462.6. Patch Level: SP4. Edition: Enterprise Edition (64-Bit). Aktivierte Gruppen aktiviert: 1. Status des Managers für Verfügbarkeitsgruppen: 1 - Virtueller Server - Typ: (HYPERVISOR) - Windows-Version - Sie verwenden eine ziemlich moderne Version von Windows: Server 2012R2, Version 6.3

Priorität 200: Nicht-Standard-Serverkonfiguration: - Agent XPs - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 1 gesetzt. - Standard für die Sicherungskomprimierung - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 1 gesetzt. - Blockierte Prozessschwelle (n) - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 20 festgelegt. - Kostenschwelle für Parallelität - Diese Option sp_configure wurde geändert. Der Standardwert ist 5 und wurde auf 30 festgelegt. - Database Mail XPs - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 1 gesetzt. - Maximaler Parallelitätsgrad - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 8 gesetzt. - Maximaler Serverspeicher (MB) - Diese Option sp_configure wurde geändert. Der Standardwert ist 2147483647 und wurde auf 496640 festgelegt. - Min. Serverspeicher (MB) - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 8196 festgelegt. - Für Ad-hoc-Workloads optimieren - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 1 gesetzt. - Fernzugriff - Diese Option sp_configure wurde geändert. Der Standardwert ist 1 und wurde auf 0 gesetzt. - Remote-Administratorverbindungen - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 1 gesetzt. - Nach Startvorgängen suchen - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 1 gesetzt. - Erweiterte Optionen anzeigen - Diese Option sp_configure wurde geändert. Der Standardwert ist 0 und wurde auf 1 gesetzt. - xp_cmdshell - Diese Option sp_configure wurde geändert.

Doley
quelle
vergessen zu erwähnen ... SQL 2012 SP4
Doley
Können Sie sp_Blitz mit ausführen@OutputType = 'MARKDOWN' und die Ergebnisse veröffentlichen?
Kin Shah
Ich habe sie dem Beitrag hinzugefügt (diejenigen, die ich für nützlich hielt).
Doley
Haben Sie eine schwere E / A-Aufgabe wie das Wiederherstellen eines großen Index ausgeführt und die Zeiten mit dem alten SAN verglichen? Ist es der gleiche Flash-Typ wie das alte SAN? Was ist mit dem Layout der Volumes und ihrer Freigabe für andere Anwendungen oder Server?
Alen
1
Und haben Sie die gleiche Trennung zwischen Datenbank, Protokoll und Tempdb auf dem neuen Array? Checkpoint knallt die Datenbankdateien, kann jedoch zu Konflikten mit anderen E / A auf diesen Laufwerken führen.
David Browne - Microsoft

Antworten:

1

Hmm. Sie zeigen Spids, die während des Checkpoints warten, aber nicht, wie lange Sie durchschnittlich / insgesamt warten (was mir ehrlich gesagt alles ist, was mich interessiert). Führen Sie eine differenzielle Wartestatistikanalyse durch, um festzustellen, ob die Dauer von Bedeutung ist. Was genau sind die beiden Wartezeiten in Ihrem Diagramm? Wenn Sie mit 1 TB RAM im Spiel viel Speicherplatz warten müssen, müssen wir eine andere Diskussion führen. :-D

Die Schreibgeschwindigkeit von 125 MB während des Checkpoints: Ist das NUR Checkpoint-Schreibvorgänge oder ALL? In beiden Fällen scheint es für All-Flash-Speicher niedrig zu sein. Haben Sie diesen Speicher für verschiedene Schreibmuster bewertet und wenn ja, welche Nummern haben Sie erhalten?

TheSQLGuru
quelle
0

Wir sind uns nicht sicher, warum sich das Verhalten unseres SQL Servers geändert hat (und wir haben Beweise dafür, dass dies vor dem Speicherwechsel geschehen ist), aber das Aktivieren indirekter Prüfpunkte für die Benutzer-DBs hat das Problem für uns behoben.

Doley
quelle