Dedizierte Ressourcen auf VMs, auf denen SQL Server gehostet wird

8

Meines Wissens nach besteht einer der großen Vorteile der Verwendung einer VM darin, dass Sie Ressourcen zwischen den virtuellen Maschinen auf einem Host gemeinsam nutzen können. Sie können also einen Host mit 120 CPUs haben und 5 VMs mit jeweils 32 CPUs darauf platzieren. Die zusätzlichen CPUs werden zwischen den VMs "gemeinsam genutzt", wobei der Host die CPUs je nach Bedarf dynamisch zuweist. Gleiches gilt für den Speicher.

Ich habe auch verstanden, dass dies ein großes No-No für VMs ist, auf denen SQL Server installiert sind, aber meine VM-Administratoren sind anderer Meinung. Hat jemand irgendwelche Beweise oder Unterlagen auf die eine oder andere Weise?

Ich weiß nicht, ob es wichtig ist, aber wir verwenden VMWare.

Kenneth Fisher
quelle
2
Seltsamerweise hatten wir gerade ein Problem mit zufälligen Failovers in einer virtualisierten Verfügbarkeitsgruppe. Wir waren auf der CPU mit einer Bereitschaftszeit von ~ 8 Sekunden überzeichnet. Der Ag-Listener verlor seine Cluster-Lease und floppte auf den anderen HA-Knoten. Die Schwierigkeit hierbei ist, dass es nicht als CPU-Druck auf den Gast auftritt, obwohl der Fehler im Allgemeinen mit einem anhaltenden CPU-Druck verbunden ist. Dies führt zu dem größten Problem bei der Virtualisierung - zu wissen, was los ist, und anderen zu vertrauen, dass sie dasselbe tun.
Swasheck
Ein wirklich guter Blog-Beitrag über VMware CPU Hot Plug vNUMA-Effekte auf SQL Server von Jonathan Kehayias
Kin Shah
Übrigens: Es ist normalerweise nicht "Das Gleiche für den Speicher". In den meisten Fällen teilen Sie die CPU, aber da jeder VM eine bestimmte Speichermenge zugewiesen ist, wird dieser Speicher nicht gemeinsam genutzt. Die Freigabe der CPU mit einem SQL Server ist möglicherweise in Ordnung, abhängig von der Gesamtlast der CPU für alle Ihre VMs, aber die Freigabe des Speichers mit einem SQL Server wäre in fast allen Fällen schlecht
MTilsted
@MTilsted Entschuldigung für die Verwirrung. Als ich "Gleiches für das Gedächtnis" sagte, meinte ich ausdrücklich, dass es couldgeteilt werden soll. Als ich die Frage stellte, stellte ich fest, dass es für CPUs und Speicher sehr unterschiedlich sein könnte, aber dass beide eine Option waren.
Kenneth Fisher

Antworten:

15

Sie fragen: "Ist es in Ordnung, wenn wir CPUs überbeanspruchen?"

Es ist in Ordnung, bis Sie Leistungsengpässe feststellen, die mit dem CPU-Verbrauch zusammenhängen. Die gleiche Antwort gilt auch für die Überlastung des Netzwerks - es ist nicht so, als würden Sie 5 separate 10-Gbit-Ethernet-Karten in den Host einlegen und eine Karte pro VM reservieren. Bei der Virtualisierung geht es um Überbindung und darum, die Grenze zwischen Ressourcenverfügbarkeit und Ressourcenanforderungen zu überschreiten.

Im Allgemeinen möchten Sie den Speicher jedoch nicht überbeanspruchen, da SQL Server den von Ihnen bereitgestellten Speicher aktiv verwendet. Anstatt die VMs-Seite auf der Festplatte des Hosts zu belassen, sollten Sie eine VM-für-VM-Analyse durchführen, um herauszufinden, welche VMs mit weniger Arbeitsspeicher leben könnten, und sie zunächst mit weniger Arbeitsspeicher konfigurieren.

Brent Ozar
quelle
Vergessen wir nicht, wie wichtig dedizierte und unabhängige physische Festplatten sind. jeweils eine für Daten, Protokolle und Tempdb . :)
Chiramisu
13

Das Problem bei der dynamischen Zuweisung einiger Ressourcen besteht darin, dass dies zu einer unvorhersehbaren Leistung führt. Die Berichtsabfrage x hatte gestern 32 CPUs zur Verfügung und lief in 4 Minuten. Heute hat sie nur noch 24 und es hat erheblich länger gedauert. Sie können auch die Latenz sehen, wenn der Gast darauf wartet, dass andere Kerne verfügbar werden.

Jonathan Kehayias gibt hier einige praktische Warnungen vor einer Überbelegung von CPU und Speicher (und ehrlich gesagt vertraue ich seiner Erfahrung und seinem Rat mehr als einem typischen VM-Administrator, was sie nicht beleidigt, aber ich vermute, dass er viel direktere Erfahrung mit der Kombination hat):

Aaron Bertrand
quelle
11

Meines Wissens nach ist ein gewisses Maß an CPU-Überbeanspruchung möglicherweise in Ordnung, dies hängt jedoch vollständig von den Workload-Anforderungen aller Gäste ab. In David Klees Blog finden Sie viele gute VM-Informationen. Insbesondere http://www.davidklee.net/articles/sql-server-articles/cpu-overcommitment-and-its-impact-on-sql-server-performance-on-vmware/ zur Erklärung der CPU-Überbindung und ihrer Auswirkungen auf SQL Server.

Eine Überbelegung des Speichers ist ein völlig anderes Thema, und im Allgemeinen sollte der VM-Host nicht überlastet werden, wenn SQL Server ausgeführt werden. Ich werde noch einmal David Klee als Referenz verwenden. http://www.davidklee.net/2013/11/04/lock-pages-in-memory-in-sql-server-on-vmware-why-or-why-not/ wo er die Auswirkungen des Gedächtnisses erklärt -Engagement.

Hoffe das hilft.

cjsommer
quelle