Single Core SQL Server auf VM

7

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!

Deb
quelle
7
Wenn Sie SQL auf einer VM lizenzieren, zahlen Sie ohnehin zwei Lizenzpakete. Sie werfen Geld weg, indem Sie ihm nicht mindestens zwei Kerne geben, selbst wenn Sie einen Bildungsrabatt erhalten.
Erik Darling
4
Sie können auf den Artikel von Glenn Barry (über 10 Jahre Microsoft MVP) aus dem Jahr 2015 verweisen, in dem empfohlene CPUs für SQL 2014 aufgeführt sind, von denen der kleinste sechs Kerne hat.
LowlyDBA
2
Außerdem habe ich vor einiger Zeit ein Whitepaper für Google über die Dimensionierung von VMs in der Cloud geschrieben. Sie können dies auch auf On-Prem anwenden.
Erik Darling
Wenn Sie den Kommentar @sp_BlitzErik erweitern, beträgt die minimale Kernlizenz, die auf einen einzelnen SQL Server angewendet werden kann, sei es eine VM oder eine physische, 4 Lizenzen (siehe Lizenzierungshandbuch ). Die Alternative besteht darin, die physischen Kerne des Hosts zu lizenzieren. Unter diesem Modell können Sie so viele VMs mit so vielen vCores ausführen, wie Sie möchten.
Mark Storey-Smith

Antworten:

11

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.

Max Vernon
quelle
Verfügt (und hatte) Windows Server nicht über vorbeugendes Multitasking? Wenn ich mich nicht irre, was Sie beschreiben, ist kooperatives Multitasking, Prozesse, die sich gegenseitig nachgeben, wenn sie ihre übergeordnete Aufgabe erledigt haben. Sicher, Konflikte können eine Antwort verzögern, aber sie sollten die Dinge nicht zum Stillstand bringen. Ich bin damit einverstanden, dass Mutli-Core eine gute Idee ist, wenn nicht sogar eine bewährte Methode, aber das von Ihnen geplante Dooms-Day-Szenario scheint nicht korrekt zu sein.
Mâtt Frëëman
Es gibt manchmal auch einen guten Grund, Single Core zu bleiben, wenn Sie zuvor ein physischer Single Core waren und die Apps, die mit Ihrer Single Core-Instanz kommunizieren, gegen bewährte Methoden verstoßen haben, z. B. keine Sortierreihenfolge angegeben haben, und die Reihenfolge als implizit stabil angesehen werden, wenn keine solche vorhanden ist Wenn Sie dann zu Multi-Core wechseln, können Fehler auftreten, die zuvor durch die Natur eines einzelnen Kerns unterdrückt wurden. Wenn Sie nicht über das Budget verfügen, um diese Apps erneut zu überprüfen, oder wenn Sie wenig Vertrauen in Entwickler haben oder wenn sie bereits verschwunden sind, kann es manchmal eine sichere
Sache sein
Hi @ MâttFrëëman - Ich habe meiner Antwort einen Abschnitt hinzugefügt, der sich mit präventivem Multitasking befasst. Sie haben mich daran erinnert, wie viel besser die NT-Codebasis im Vergleich zu dem DOS-basierten kooperativen Multitasking ist, das von der ursprünglichen Windows-Codebasis bis einschließlich Windows ME verwendet wird.
Max Vernon
Ich stimme Ihrem Großteil Ihres Kommentars zu, dass es manchmal ein notwendiges Übel ist, auf Single-Core zu bleiben. Meine Antwort geht davon aus, dass es sich bei den virtualisierten physischen Maschinen wahrscheinlich um Multi-Core-Server handelt, basierend auf dem Wunsch des OP nach Multi-Core-VMs.
Max Vernon
@ MaxVernon Danke, genau das haben wir gebraucht!
Deb
6

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.

Neghtasro
quelle
3
Tatsächlich kann jede ernsthafte Menge an E / A, unabhängig davon, ob SQL Server oder nicht SQL Server-bezogen ist, ein Problem verursachen.
Max Vernon
3
@MaxVernon Absolut - Ich habe gerade speziell Backups aufgerufen, weil es ein Problem ist, mit dem ich mich zuvor befasst habe (um 3 Uhr morgens, natch), es ist leicht zu beweisen und "wir können keine Backups ohne Ausfall machen!" sollte ausreichen, um jeden vernünftigen Infrastrukturbetreiber dazu zu bewegen, einen dürftigen Kern zu schonen.
Neghtasro
2

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.

Tony Hinkle
quelle
5
Natürlich gibt es auf einer Single-Core-VM keine parallelen Pläne. Sie müssten diese Pläne auf einer Box erfassen, die mehr als einen Kern enthält.
Max Vernon
3
Um Max 'Kommentar zu ergänzen, sehen Sie, wenn Sie im Plan-XML auf einem Server mit einem einzelnen Kern nachsehen NonParallelPlanReason="EstimatedDOPIsOne".
Erik Darling
@ Tony Ich habe ihnen bereits einige Daten zur Verfügung gestellt, aber mir wurde gesagt, dass ein einzelner Kern eine bewährte Methode für eine VM-Maschine ist. daher mein Bedürfnis nach Hilfe!
Deb
1
@Deb Oh mein Gott - noch nie von dieser Best Practice gehört! Von hier aus kann ich Brent Ozars traurige Posaune hören. Ich würde mir Sorgen machen, dass jemand, der solche Aussagen macht, für eine VM-Infrastruktur verantwortlich ist.
Tony Hinkle
@ TonyHinkle - ich stimme zu. Eine Single-Core-VM ist niemals eine gute Idee, lassen Sie einen Einzelnen eine "Best Practice". Ok, vielleicht 99,999% der Zeit statt "nie": - /
Max Vernon
2

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

VMware empfiehlt, dass für die anfängliche Dimensionierung die Gesamtzahl der allen VMs zugewiesenen vCPUs nicht mehr als die Gesamtzahl der physischen Kerne beträgt

Wenn dieses Element nicht der Grund für das Infrastrukturteam ist, nur 1 Kern pro VM bereitzustellen, wird die Hardware möglicherweise verschwendet.

Rogerlr
quelle
Sie sind sich nicht sicher, wie das Angebot für mehr CPUs hilfreich ist?
LowlyDBA
Ja, aber es ist nicht so klar, warum das Infraestruture-Team nicht mehr CPU pro VM eingestellt hat.
Rogerlr