it-swarm.com.de

Ist die virtuelle Maschine langsamer als die zugrunde liegende physische Maschine?

Diese Frage ist recht allgemein gehalten, aber insbesondere interessiert mich, ob die virtuelle Maschine, auf der Ubuntu Enterprise Cloud ausgeführt wird, ohne Virtualisierung langsamer ist als dieselbe physische Maschine. Wie viel (1%, 5%, 10%)?

Hat jemand den Leistungsunterschied zwischen Webserver oder DB-Server (virtueller VS physisch) gemessen?

Wenn es von der Konfiguration abhängt, stellen wir uns zwei Quad-Core-Prozessoren, 12 GB Arbeitsspeicher und eine Reihe von SSD-Festplatten vor, auf denen ein 64-Bit-Ubuntu-Unternehmensserver ausgeführt wird. Darüber hinaus darf nur eine virtuelle Maschine alle verfügbaren Ressourcen nutzen.

51
Michal Illich

Die typische Erfahrung für eine Allzweck-Server-Workload auf einem Bare-Metal-Hypervisor vom Typ 1 liegt bei etwa 1 bis 5% des CPU-Overheads und 5 bis 10% des Speicher-Overheads, wobei der zusätzliche Overhead je nach IO variiert. Belastung. Dies ist meiner Erfahrung nach ziemlich konsistent für moderne Gastbetriebssysteme, die unter VMware ESX\ESXi, Microsoft Hyper-V und Xen ausgeführt werden und bei denen die zugrunde liegende Hardware entsprechend entwickelt wurde. Für 64-Bit-Server-Betriebssysteme, die auf Hardware ausgeführt werden, die die aktuellsten CPU-Hardware-Virtualisierungserweiterungen unterstützt, würde ich erwarten, dass alle Hypervisoren vom Typ 1 auf diese 1% Overhead-Zahl zusteuern. Die Reife von KVM entspricht derzeit nicht ganz Xen (oder VMware), aber ich sehe keinen Grund zu der Annahme, dass es für das von Ihnen beschriebene Beispiel merklich schlechter wäre als sie.

Für bestimmte Anwendungsfälle kann die Gesamtleistung einer virtuellen Umgebung jedoch die Bare-Metal-Server überschreiten. Hier ist ein Beispiel für eine Diskussion darüber, wie eine VMware Clustered-Implementierung schneller\besser\billiger sein kann als ein Bare-Metal-Oracle-RAC. Die Speicherverwaltungstechniken von VMware (insbesondere die transparente gemeinsame Nutzung von Seiten) können den Speicheraufwand fast vollständig eliminieren, wenn Sie über genügend VMs verfügen, die ähnlich genug sind. In all diesen Fällen ist es wichtig, dass die Leistungsvorteile, die die Virtualisierung bieten kann, nur realisiert werden, wenn Sie mehrere VMs auf Hosts konsolidieren. Ihr Beispiel (1 VM auf dem Host) ist immer langsamer als Bare Metal bis zu einem gewissen Grad.

Obwohl dies alles nützlich ist, konzentrieren sich die eigentlichen Probleme bei der Servervirtualisierung in der Regel auf die Verwaltung, Hochverfügbarkeitstechniken und Skalierbarkeit. Eine CPU-Leistungsspanne von 2-5% ist nicht so wichtig wie die effiziente Skalierung auf 20, 40 oder wie viele VMs Sie auf jedem Host benötigen. Sie können mit dem Leistungseinbruch umgehen, indem Sie eine etwas schnellere CPU als Basis auswählen oder mehr Knoten in Ihren Clustern hinzufügen. Wenn der Host jedoch die Anzahl der VMs, die er ausführen kann, nicht skalieren kann oder die Umgebung schwer zu verwalten ist oder unzuverlässig, dann ist es aus Sicht der Servervirtualisierung wertlos.

31
Helvick

"Leistung" hat viele Aspekte. Die n00bs messen die Startzeit eines Betriebssystems und sagen z. Windows 2012 ist sooooooo großartig, weil es in 12 Sekunden auf echtem HD startet, vielleicht 1 Sekunde auf SSD.
Aber diese Art von Maßnahme ist nicht sehr nützlich: Die Leistung entspricht der Startzeit des Betriebssystems, aber das Betriebssystem startet einmal im Monat, sodass eine Optimierung nicht viel Sinn macht.

Da es mein tägliches Geschäft ist, möchte ich auf die 4 folgenden Teile hinweisen, die die "Leistung" ausmachten.

  1. CPU-Auslastung
    Dies sollte vergleichbar sein, was bedeutet, dass eine Aufgabe, die 1000 ms auf Bare Metal benötigt, in 1000 ms Prozesszeit und wahrscheinlich 1050 ms Taktzeit in einer Leerlaufumgebung VM auf derselben Hardware ausgeführt wird (einige Details später) ). Google das MSDN für Prozessor- und Abfrageleistungszähler und Sie können etwas tun, das zeigt, wie viel die VM Ihre CPU-Zeit verbraucht.

  2. SQL-Leistung
    Die SQL-Leistung hängt in hohem Maße von IO des Datenspeichers ab, in dem die SQL-Daten gespeichert sind. Ich habe einen Unterschied von 300% zwischen ISCSI der 1. Generation gesehen, den Sie möglicherweise auf Buffalo Home NAS finden, dann ISCSI mit DCE und einer echten Old-School-FC-Umgebung auf allen Ebenen. Der FC gewinnt auch heute noch, da die FC-Latenz die niedrigste erreichbare ist, die zu einer "Kopie" des FC-Protokolls für Verbesserungen des TCP/IP-Rechenzentrums führt. Hier sind IOps und Latenz von entscheidender Bedeutung, aber auch IO Bandbreite vom Serverprozess zum Medium - hängt davon ab, ob die App zu No-SQL oder Datawarehousing tendiert oder sich in der Mitte solcher ERP Systeme befindet. Sage KHK für kleine Unternehmen, SAP für die großen. Beide haben eine CEO-Sicht auf Unternehmensfinanzstatistiken und wenn der CEO auf die Schaltfläche drückt, gewährt er effektiv Urlaub für einige Tage, wenn das IO - Subsystem der Datenbank Schwachstellen aufweist.

  3. Dateisystemzugriff
    Einige Anwendungen, wie z. B. Video-Streaming, basieren auf einer garantierten Mindestbandbreite, andere auf einem maximalen IO Durchsatz, z. B. das Öffnen großer Dateien in einem Hex-Editor und das Laden eines Videoprojekts in Ihr Lieblingsprogramm zum Erstellen von Filmen. Keine typische Situation auf einem VM ... Die IOps können auch für Entwickler wichtig sein. Entwickler verwenden häufig VMs, da Entwicklungsumgebungen sehr empfindlich sind und die Versuchung, dies in einer VM zu tun, groß ist. Das Kompilieren eines großen Projekts bedeutet oft, Tonnen kleiner Dateien zu lesen, den Compiler zu erledigen und eine EXE-Datei und die zugehörigen Komponenten zu erstellen.

  4. Netzwerklatenz zum Client
    Hier hängt die Benutzerfreundlichkeit von WYSIWIG-Programmen wie Word 2010, Openoffice Writer, LaTEX, GSView und anderen stark von der Geschwindigkeit ab - wie schnell eine Mausaktion vom Client zum Server gelangt. Insbesondere in CAD Apps ist dies wichtig ... aber auch kein LAN-Problem. Es ist der Fernzugriff über WAN, wo dies wichtig ist.

Aber - und ich spreche aus der Perspektive jahrelanger Beratung - es gibt Benutzer mit dem Administratorkennwort (und sie sind oft Mitarbeiter eines BIG-Unternehmens mit einem BIG-Budget und einem BIG-Taschenbuch), die sich über dies und das beschweren, aber es muss geklärt werden Welche Leistungskomponente für sie wichtig ist und welche aus Sicht der von ihnen verwendeten Anwendung wichtig ist.
Es handelt sich höchstwahrscheinlich nicht um einen Editor, sondern um eine hochentwickelte Anwendung für das Engineering dieses und jenes, die ebenfalls sehr teuer war und auf VMware, HyperV oder Xenapp verschoben werden sollte und nicht wie erwartet funktioniert.

Aber sie denken nicht daran, dass es auf 1,5-GHz-Xeons auf Blades laufen könnte, die nicht für reine CPU-Leistung ausgelegt sind. Sie sind für einen Durchschnitt ausgelegt, sagen wir "optimiert für $ pro CPU-Zyklus" oder "CPU-Zyklen pro Watt". .

Und wenn wir über Kompromisse und Einsparungen sprechen, führt dies meist zu Überbindungen. Überbeanspruchungen führen zu einem Mangel an Ressourcen, bei denen die CPU recht gut gehandhabt werden kann, aber ein Mangel an Speicher führt zu Paging, ein Mangel an IO in den Core-Routern führt zu längeren Antwortzeiten für alles und zu einer Transaktionsüberlastung für jede Art von Speicher Verhindern Sie, dass jede nützliche App zu schnell reagiert. Hier ist eine Überwachung erforderlich, aber viele Softwareanbieter sind nicht in der Lage, solche Informationen bereitzustellen. Andererseits kann ein Host mit Ressourcen von 3 physischen Servern höchstwahrscheinlich 8 virtuelle Maschinen mit demselben Layout wie die physischen verarbeiten ...

Die CPU-Kompromisse bei inaktiven Systemen führen häufig dazu, dass Systeme 50% langsamer arbeiten als physische Systeme. Andererseits kann niemand das Betriebssystem "Real World" und die App "Real World" installieren, die die IT-Mitarbeiter des Kunden in die VM Feld. Und es dauert Tage (vielleicht Wochen, aber mit Sicherheit 42 Besprechungen), um zu verdeutlichen, dass die VM - Technologie Flexibilität bietet, indem sie mit reiner CPU-Geschwindigkeit handelt. Dies ist nur in die CPUs dieser Blade-Systeme integriert, die heutzutage größere VM Umgebungen hosten. Auch der Speicher wird nicht vergleichbar sein, auch einige Kompromisse gelten. DDR3 1600 CL10 hat eine höhere Speicherbandbreite als DDR2 800 ECC LLR - und jeder weiß, dass Intel-CPUs davon anders profitieren als AMD-CPUs. Sie werden jedoch selten in produktiven Umgebungen verwendet, eher in Whiteboxes oder in Rechenzentren in Ländern der 3. Welt, die Rechenzentrumsdienste für 10% des Preises anbieten, den ein Rechenzentrum in Ihrer Heimat möglicherweise in Rechnung stellt. Dank Citrx kann ein Rechenzentrum überall sein, wenn die Latenz zwischen dem Endbenutzer und dem Rechenzentrum weniger als 150 ms beträgt.

Und die Perspektive der Heimanwender ....

Last but not least wollen einige Leute Win7 oder XP wegwerfen und gegen ein Linux eintauschen, und dann stellt sich die Frage, ob tatsächlich nur wenige Spiele für Linux und Windows verfügbar sind. Das Spielen hängt stark von der 3D-Beschleunigung ab. VMWare 6.5 Workstation und der angeschlossene Free Player können DirectX 9 verarbeiten, dh ein Doom3 in einer VM kann im Vollbildmodus auf der Host-Grafikkarte ausgeführt werden. Spiele sind meistens 32-Bit-Apps, daher verbrauchen sie nicht mehr als 3 GB und meistens nicht mehr als 3 CPUs (auf Crysis zu sehen). Neuere VM Spieler und WS können mit höheren DirectX-Versionen und wahrscheinlich auch mit OpenGL umgehen ... Ich habe UT und UT2004 auf VMware 6.5 gespielt, der Host hatte ein ATI Radeon 2600-Handy und eine T5440-CPU. Es war stabil bei 1280x800 und sogar auf Netzwerkspielen spielbar ....

23

Ja. Das ist aber nicht die Frage. Der Unterschied ist normalerweise vernachlässigbar (1% bis 5%).

9
TomTom

Ich möchte darauf hinweisen, dass die Virtualisierung in bestimmten Situationen die physische Leistung übersteigen kann. Da die Netzwerkschicht nicht auf die Gigabit-Geschwindigkeit beschränkt ist (obwohl die Hardware-Emulation von einer bestimmten LAN-Karte stammt), können VMs auf demselben Server mit einer Geschwindigkeit miteinander kommunizieren, die über die mehrerer Phyiscal-Server mit durchschnittlicher Netzwerkausrüstung hinausgeht.

8
David Glover

Ich habe einige Testvergleiche mit derselben Software durchgeführt, die denselben Test ausführt (.NET-basierte Webanwendung mit hohem Webdatenverkehr und erheblichem SQL Server-Zugriff). Folgendes habe ich gesehen:

  • Die physische Maschine kann Klassen besser instanziieren (was sich in der Zuweisung von Speicher auf Systemebene niederschlägt). Dies ist für mich sinnvoll, da physische Maschinen dies über Speicherverwaltungshardware tun und VMs dies über Software (mit teilweiser Hardwareunterstützung) (auf der VM) hat die App viel Zeit in ihren Konstruktoren verbracht (wo der Speicher zugewiesen ist (und nichts anderes getan wird), auf der physischen Maschine waren die Konstruktoren nicht einmal in den Top 1000 enthalten).
  • Wenn Sie sich mitten in einer Methode befinden, sind die beiden ungefähr gleichwertig - so werden wahrscheinlich die meisten Benchmarks erstellt, die zeigen, dass die beiden "gleich sind".
  • Wenn Sie auf einen Netzwerkcontroller zugreifen, schlägt der physische den VM ein wenig - wieder hat der physische nicht viel zwischen dem .NET-Prozess und der Hardware. VM fügt weitere "Dinge" hinzu, die jede Transaktion durchlaufen muss.
  • Das Gleiche gilt für den Festplattenzugriff (der SQL Server befand sich auf einem anderen Computer) - der Unterschied ist sehr gering, aber wenn Sie alle addieren, fällt dies auf. Dies könnte durch den langsameren Netzwerkzugriff oder durch einen langsameren Festplattenzugriff verursacht worden sein.

Ich kann leicht erkennen, wie jemand Benchmarks erstellen kann, die beweisen, dass sie sich um 1% unterscheiden oder gleich sind oder wo VMs schneller sind. Schließen Sie nichts ein, bei dem Ihr Prozess die Vorteile der lokalen Hardwareunterstützung nutzt, bei der VM es in der Software simulieren muss).

1
rchutch

Sie versuchen, ein Betriebssystem, eine Software und Daten, die auf einer bestimmten physischen Hardware installiert sind, mit demselben Betriebssystem, derselben Software und denselben Daten zu vergleichen, die in einem Hypervisor auf derselben Originalhardware installiert sind. Dieser Vergleich ist einfach nicht gültig, weil dies fast niemand tut (zumindest zuerst). Das wäre natürlich wahrscheinlich langsamer. Zum Glück fehlt der häufigste Punkt, warum Sie Server überhaupt virtualisieren.

Ein besseres Beispiel hierfür ist die Betrachtung von zwei (oder mehr!) Älteren Servern in Ihrem Rechenzentrum. Suchen Sie nach Servern, die eine recht gute Leistung erbringen, aber jetzt alt sind und ihren Aktualisierungszyklus durchlaufen. Diese Server funktionieren bereits auf älterer Hardware gut, und dank des Gesetzes von Moore wird alles, was Sie neu bekommen, weit über den Spezifikationen liegen.

Also, was machst du? Es ist einfach. Anstatt zwei neue Server zu kaufen, kaufen Sie nur einen und migrieren dann beide alten Server auf dasselbe physische neue Gerät. Wenn Sie sich auf den Kauf Ihres neuen Servers vorbereiten, planen Sie, dass Sie über genügend Kapazität verfügen, um nicht nur die Last von beiden älteren Servern, sondern auch die Last vom Hypervisor (und möglicherweise ein kleines Extra) zu bewältigen, damit Sie immer noch einen Leistungsschub erhalten und kann Wachstum ermöglichen).

Zusammenfassend lässt sich sagen, dass virtuelle Maschinen für die meisten Situationen eine "ausreichend gute" Leistung bieten und Ihnen helfen, Ihre Server besser zu nutzen, um "verschwendete" Rechenleistung zu vermeiden.

Lassen Sie uns dies jetzt etwas weiter ausdehnen. Da es sich um alte Server handelt, haben Sie sich vielleicht ein paar einfache Pizza-Box-Server für 1500 US-Dollar angesehen, um sie zu ersetzen. Es besteht die Möglichkeit, dass sogar eine dieser Pizzaschachteln die Last beider hypothetischer älterer Maschinen problemlos bewältigen kann. Nehmen wir jedoch an, Sie geben stattdessen 7500 US-Dollar oder mehr für echte Hardware aus. Jetzt haben Sie ein Gerät, das problemlos bis zu einem Dutzend Ihrer vorhandenen Server verwalten kann (abhängig davon, wie Sie mit Speicher und Netzwerk umgehen), mit anfänglichen Kosten von nur 5. Sie haben auch die Vorteile, nur einen physischen Server zu verwalten und zu entkoppeln Ihre Software von Ihrer Hardware (dh: Hardware-Aktualisierungen benötigen jetzt weniger wahrscheinlich eine neue Windows-Lizenz oder verursachen Ausfallzeiten), Sie sparen eine Menge Strom und Ihr Hypervisor kann Ihnen bessere Informationen zur Leistung liefern als in der Vergangenheit . Holen Sie sich zwei davon und je nachdem, wie groß Sie sind, besteht Ihr gesamtes Rechenzentrum möglicherweise nur aus zwei Computern, oder Sie möchten den zweiten Server als Hot-Standby-Modus verwenden, um eine bessere Hochverfügbarkeitsgeschichte zu erzählen.

Mein Punkt hier ist, dass es geht nicht nur um Leistung. Ich würde niemals einen perfekt guten Produktionsserver nehmen und ihn alleine auf äquivalente Hardware virtualisieren, nur weil. Es geht mehr um Kosteneinsparungen und andere Vorteile, die Sie durch die Konsolidierung erzielen können, wie z. B. Hochverfügbarkeit. Wenn Sie diese Vorteile nutzen, müssen Sie Server auf andere Hardware umstellen. Dies bedeutet wiederum, dass Sie sich die Zeit nehmen müssen, um die Größe dieser Hardware angemessen zu bestimmen, einschließlich der Berücksichtigung der Hypervisor-Strafe. Ja, Sie benötigen möglicherweise insgesamt etwas mehr Rechenleistung, als wenn sich jeder dieser Computer auf einem eigenen physischen Gerät befindet (Hinweis: Sie benötigen wahrscheinlich viel weniger Gesamtleistung), aber es wird ein - viel billiger, energieeffizienter und einfacher zu warten einen physischen Server zu betreiben als viele.

1
Joel Coel

Microsoft hat anscheinend einige Benchmark-Tests mit BizTalk Server und SQL Server in verschiedenen Konfigurationen durchgeführt. Siehe Link unten:

http://msdn.Microsoft.com/en-us/library/cc768537 (v = BTS.10) .aspx

0
Web Dev

Ich habe gerade ein Upgrade auf eine SSD (OCZ Vertex 2) durchgeführt und meine XP VM Entwicklungsumgebung darauf ausgeführt, ich bin ein Softwareentwickler. Eine Sache, die ich Ich habe festgestellt, dass beim Starten eines Programms (eines, das groß genug ist, um Zeit zum Laden zu benötigen) ein Kern der virtuellen CPU ausgeblendet wird. Dies geschieht beim Laden von IE auch. Da die CPU ausgekoppelt wird) Ich gehe davon aus, dass der Engpass die CPU und nicht die SSD ist. Aber es scheint seltsam, dass ich das Gefühl habe, wenn dasselbe auf einem physischen Computer ausgeführt würde, dass es schneller geladen würde, und ich habe das Gefühl, dass es einen zusätzlichen Verarbeitungsaufwand für VMWare gibt Dies verbraucht CPU auf Festplattenzugriff.

In einem Beispiel verwende ich Delphi und auf einem physischen Computer mit einer normalen Festplatte kann es 20 Sekunden dauern, bis ein Kaltstart erfolgt. In der VM, die von einer SSD ausgeführt wird, wird sie in 19 Sekunden nach einem Kaltstart geladen. Kein großer Unterschied, ich wette, wenn sich die SSD auf der physischen Maschine befindet, wird sie schneller geladen. Allerdings habe ich dies nicht getan Überprüfen Sie die CPU-Auslastung auf dem physischen Computer. Möglicherweise war auch dort die CPU der Engpass.

Das Gefühl der VM) ist jedoch, dass der Festplattenzugriff die VM besteuert.

0
Bill

Offensichtlich ist eine virtuelle Maschine langsamer als die physische Maschine. In diesem Szenario müssen Sie jedoch bewerten, was für Ihre Anforderungen optimal ist. Wenn Sie nur ein System benötigen und es schnell sein muss, installieren Sie es direkt auf der Hardware. Wenn Sie andererseits Flexibilität, Skalierbarkeit (und alle anderen Vorteile der Virtualisierung: P) benötigen, stellen Sie eine VM bereit. Es wird langsamer sein, aber meiner Meinung nach ist es in einigen Fällen gerechtfertigt und die Leistung ist nicht wesentlich langsam.

0
boris quiroz