Kürzlich hat unser Schulbezirk mehrere Server von Version 2005 auf 2016 und von physischen Servern auf VM-Server aktualisiert.
Unser Infrastruktur-Team präsentierte die VM-Server für die SQL Server-Installation mit einem einzigen Kern.
Ich versuche dem Leiter dieser Abteilung zu erklären, dass SQL Server es "hasst", auf einem einzigen Kern zu sein, und er möchte "Beweise" sehen. Keine der von mir vorgelegten Daten hat sein Beweisbedürfnis befriedigt, und deshalb hat er einige Artikel angefordert, warum ein VM SQL Server auf einem einzelnen Kern nicht effizient arbeitet.
Welche Artikel verwenden Sie dafür?
Jede Hilfe für mich wäre dankbar!
Antworten:
Jeder Nicht-SQL Server-Prozess, der CPU verbraucht, kann dazu führen, dass der gesamte SQL Server vollständig unbrauchbar wird.
Beispielsweise stoppt Windows Update SQL Server, während .NET-Assemblys entpackt werden.
Jeder Anti-Virus-Prozess kann dazu führen, dass SQL Server beim Scannen von Dateien und beim Entpacken aktualisierter Virendefinitionsdateien nicht mehr reagiert, selbst wenn er so konfiguriert ist, dass SQL Server-Datendateien und -Ordner ausgeschlossen werden.
Wenn Sie eine Verwaltungssoftware wie IBM Tivoli Server Monitor installiert haben und 100% eines Kerns verwenden, können Sie den Computer wahrscheinlich nur kalt herunterfahren. Fragen Sie mich nicht, warum ich das anspreche.
Ich könnte weitermachen, aber es reicht zu sagen, dass jeder Server mit einem einzelnen Kern einfach nach Problemen mit der Leistung und Verwaltbarkeit fragt. Überprüfen Sie, ob jeder Computer mit einem einzelnen Kern heute als unbrauchbar angesehen werden sollte. Mein Telefon hat 8 Kerne.
Überzeugen Sie den Virtualisierungstyp, jedem SQL Server eine angemessene Speicherreservierung zu geben, um sicherzustellen, dass der Speicher von SQL Server nicht aus dem Hauptspeicher des Hosts auf die Festplatte ausgelagert wird.
Bei seriösen, von VMware gehosteten SQL Servern sollten Sie VMware gemäß dem Handbuch " Architecting SQL Server on VMware Best Practices" konfigurieren .
Es läuft wirklich darauf hinaus, dass eine Single-Core-VM immer nur einen Thread ausführen kann. Virtualisierung ist kein Patentrezept für diese Situation mit einem Kern pro Thread.
Die obigen Punkte berücksichtigen, dass Windows NT (die Codebasis von 1993, auf der alle modernen Windows-Versionen basieren) präventives Multitasking verwendet. Durch präventives Multitasking kann der O / S das Multitasking erzwingen, indem er die Kontextumschaltung nach regelmäßigen Zeitplänen erzwingt. Selbst bei präventivem Multitasking leidet ein Server mit einem einzelnen Kern immer noch unter einer sehr schlechten Leistung, wenn eine einzelne Aufgabe so viel CPU wie möglich verwendet, da das Betriebssystem dieser Aufgabe so viel CPU-Zeit wie möglich zur Verfügung stellt Während weiterhin Aufgaben mit höherer Priorität ausgeführt werden können, wird die CPU auf 100% gezwungen. Wenn SQL Server zu dem Zeitpunkt ausgeführt wird, an dem die CPU zu 100% ausgelastet ist, wird die CPU-Menge von SQL Server so weit reduziert, dass sie sehr auffällig wird. In den oben beschriebenen Szenarien habe ich dies nicht getanAngenommen, der Computer (oder sogar SQL Server) wird vollständig "gestoppt" oder "stirbt". das wäre einfach falsch. Die Maschine kann jedoch so beschäftigt sein, dass die Maschine in jeder Hinsicht unbrauchbar wird. Das Hinzufügen eines zweiten Kerns ist zwar kein Allheilmittel, verringert jedoch die Wahrscheinlichkeit, dass die Maschine nicht mehr reagiert. Jeder zusätzliche Kern bedeutet, dass ein anderer Thread zu 100% CPU ausgeführt werden kann, ohne dass der Computer unbrauchbar wird.
quelle
Ich musste das schon einmal beweisen. Was unser Kapazitätsplanungsteam schließlich erreicht hat, ist, dass unsere Datenbanken während eines Backups nahezu unbrauchbar waren.
Als DBA sollte Ihre größte Angst der Datenverlust sein. Wenn Sie Backups nicht sicher ausführen können, ohne einen Ausfall zu verursachen oder zu verursachen, ist dies ein großes Problem. Führen Sie einige Tests durch, um sicherzustellen, dass die Leistung während einer Sicherung beeinträchtigt wird, und erklären Sie dann, dass das Problem bei mehr als einem Kern behoben sein sollte.
quelle
Um einen überzeugenden Beweis dafür zu liefern, dass Ihr Server mehr als eine CPU benötigt, müssen Sie Informationen über die Arbeitslast und die auf dem Server ausgeführten Abfragen bereitstellen. Wenn beispielsweise nur eine Datenbank mit weniger als 100 MB vorhanden ist und alle Abfragen sehr einfach und effizient sind, kann es fast keinen Vorteil haben, mehr Kerne zu haben.
Ich würde empfehlen, dass Sie mit der Erfassung paralleler Abfragepläne und der Zeit beginnen, die für deren Fertigstellung erforderlich ist. Dies zeigt, dass die auf dem System ausgeführte Workload von mehreren CPUs profitiert.
Wenn es in der VM-Umgebung bereits in Produktion ist, müssen Sie auch Daten zur CPU-Nutzungsleistung erfassen. Wenn Sie nachweisen können, dass die CPU über einen längeren Zeitraum ein Maximum von 100% erreicht, ist dies auch ein guter Beweis dafür, dass das System mehr CPUs benötigt.
quelle
NonParallelPlanReason="EstimatedDOPIsOne"
.Vielleicht sollten Sie sie fragen, warum sie darauf bestehen, dass es eine gute Idee ist, nur einen einzigen Kern pro SQL Server-VM zuzuweisen.
Abhängig von ihrer Antwort könnten Sie dann versuchen, sie anhand von Punkt 3.3.2 in diesem Link zu überzeugen:
SqlServer-on-vmware-best-pratices
Wenn dieses Element nicht der Grund für das Infrastrukturteam ist, nur 1 Kern pro VM bereitzustellen, wird die Hardware möglicherweise verschwendet.
quelle