Ich suche nach guten Faustregeln, um zu verstehen, wann eine Maschine NICHT virtualisiert werden muss.
Ich weiß zum Beispiel, dass ein vollständig CPU-gebundener Prozess mit einer Auslastung von nahezu 100% wahrscheinlich keine gute Idee für die Virtualisierung ist. Ist es jedoch sinnvoll, einen Vorgang auszuführen, bei dem die CPU die meiste Zeit über eine "erhebliche Menge" beansprucht (z. B. 40)? oder 50%)?
Ein weiteres Beispiel: Wenn ich 1000 Maschinen virtualisiere, auch wenn sie nur leicht oder mäßig ausgelastet sind, wäre es wahrscheinlich schlecht, wenn alle auf einem Host mit nur 4 Kernen ausgeführt würden.
Kann jemand Hinweise zur Virtualisierung basierend auf der Maschinenauslastung oder der Anzahl der Gastmaschinen im Vergleich zu den Hostressourcen zusammenfassen?
Normalerweise virtualisiere ich auf Windows-Hosts mit VirtualBox oder VMWare, aber ich gehe davon aus, dass dies eine ziemlich allgemeine Frage ist.
Antworten:
Festplattensubsystem. Dies ist normalerweise die am wenigsten gemeinsam nutzbare Ressource. Erinnerung natürlich, aber diese ist offensichtlich.
Einschränkungen des Festplattensubsystems können auf beide Arten angewendet werden. Wenn ein System viele Festplatten-E / A verwendet, werden andere Gäste langsamer. Wenn dieser Gast in Produktion ist, muss er wahrscheinlich schnell auf Webanfragen reagieren. Dies kann sehr frustrierend sein und ist auch ein wichtiger Grund, warum Sie keine virtuelle Hardware mieten sollten. Sie können dieses Problem minimieren, indem Sie dedizierte Datenträger verwenden.
Bei Verwendung von nur 512 MB Arbeitsspeicher in Guests wird der gesamte Festplatten-Cache auf dem Host gespeichert. Und es ist nicht gleichmäßig unter den Gästen aufgeteilt.
Sorgen Sie sich nicht um CPU IO. Auf diese Weise ist die Virtualisierung sehr effizient, da häufig nur mehrere Prozesse auf demselben System ausgeführt werden. Ich sehe selten Multi-Xeon-Systeme, die zu 100% auf CPU laufen.
Bearbeiten: Tippfehler
quelle
Dinge, die ich niemals in eine VM stecken würde:
Alles, was bestimmte Hardware verwendet, die nicht virtualisiert werden kann: in der Regel Grafiken, eine ganze Reihe von Hardware-Sicherheitsmodulen, alles mit angepassten Treibern (z. B. spezielle Netzwerktreiber).
Systeme mit Lizenzproblemen. Einige Softwaregebühren pro physischer CPU oder Core, unabhängig davon, wie wenig Sie der VM zugewiesen haben. Ein Audit würde Sie treffen, wenn Sie Software für einen einzelnen Kern lizenziert hätten, der in einer VM auf einem 32-Kern-Server ausgeführt wird.
Dinge, von denen ich abraten würde, eine VM einzubauen:
Software, die sich bereits bemüht, alle Ressourcen in Standardhardware zu nutzen. Maschinen, die im Rahmen eines Big-Data-Projekts wie Hadoop betrieben werden, sind in der Regel für den Betrieb auf Bare-Metal-Basis ausgelegt.
Alles, was fein abgestimmt werden soll, um Ressourcen zu nutzen. Wenn Sie wirklich anfangen, eine Datenbank zu optimieren, werden VMs, die um Ressourcen kämpfen, die Arbeit wirklich in die Knie zwingen.
Alles, was schon einen großen Engpass hat. Es spielt schon nicht gut mit sich selbst, es wird wahrscheinlich nicht gut mit anderen spielen.
Es gibt einige Dinge, die für das Einfügen von VMs ziemlich großartig sind:
Alles, was viel Zeit im Leerlauf verbringt. Dienstprogramm-Hosts wie Mail und DNS haben es schwer, genug Last auf moderner Hardware zu erzeugen, um dedizierte Server zu gewährleisten.
Anwendungen, die von sich aus nicht gut (oder nicht leicht) skalierbar sind. Legacy-Code fällt ziemlich häufig in diese Kategorie. Wenn sich die App nicht erweitern lässt, um den Server zu belegen, verwenden Sie viele kleine virtuelle Server.
Projekte / Anwendungen, die klein anfangen, aber wachsen. Es ist viel einfacher, Ressourcen zu einer VM hinzuzufügen (und auf neuere, größere Hardware umzusteigen), als auf Bare-Metal-Basis zu starten.
Ich bin mir auch nicht sicher, ob Sie es übertreiben, eine große Anzahl von VMs auf einen einzelnen Host zu setzen, aber wenn Sie ein großes VM: HW-Verhältnis anstreben, sollten Sie stattdessen ESX, Xen, KVM in Betracht ziehen. Sie werden viel besser abschneiden als mit VMware oder VirtualBox unter Windows.
quelle
Es gibt zwei Punkte für die Virtualisierungsleistung.
Wer ist bei geteilten Engpässen noch auf dem gleichen Eisen? Wenn Sie sich in einer virtualisierten Umgebung befinden, sind Sie sehr darauf angewiesen, dass der Hosting-Partner Ihnen gegenüber ehrlich ist.
Ich denke, die Hauptfrage für die Rohleistung (insbesondere die Interaktivität) ist, welche Teile des Virtualisierungssystems emuliert werden. Dies ist je nach Einrichtung unterschiedlich. Festplatte und Netzwerk sind die typischen Kandidaten. Als Faustregel gilt, dass die Emulation die Performance- "Kosten" für die Durchführung einer Aktion verdoppelt. Daher sollte jede Hardware-Latenzzeit doppelt gezählt und jede Durchsatzzahl halbiert werden.
quelle
Letztendlich sollte keine Hochleistungslast virtualisiert werden. Die Leistungsüberschüsse der Virtualisierung sind nicht trivial. Sehen Sie die Ergebnisse meiner Tests hier:
http://www.altechnative.net/2012/08/04/virtual-performance-part-1-vmware/
OTOH, wenn Sie eine Reihe von Maschinen konsolidieren möchten, die die ganze Zeit im Leerlauf sind, ist die Virtualisierung der richtige Weg.
quelle
Gute Antwort von anttiR.
Darüber hinaus zeitkritische Systeme. Ich habe gerade herausgefunden, dass das Hyper-V-Problem (vm fällt langsam zurück, alle modernen Betriebssysteme in vm tun das, werden oft resynchronisiert) mit einigen zeitkritischen Anwendungen, die ich entwickle, nicht gut funktioniert. Außerdem werde ich dort "viel" CPU verwenden und plane, eine 12-Kern-Maschine nur für diese Anwendung in der Produktion zu bekommen.
quelle