Was sind die Vorteile der Verwendung der synthetischen Treiber von Hyper-V?

7

Wir verschieben unsere Virtualisierungsplattform von Citrix XenServer auf Hyper-V unter Windows Server 2008 R2. Im Rahmen dieses Projekts muss ich in der einen oder anderen Form einige Debian Linux-Server auf Hyper-V migrieren. Ich habe erfolgreich einen Debian-basierten Server auf unserer neuen Hyper-V-Plattform erstellt und beginne, ihn zu testen.

Debian 6 (Squeeze) verwendet den 2.6.32-Kernel, der die synthetischen Hyper-V-Treiber enthält, wird jedoch von Microsoft nicht als unterstütztes Betriebssystem für Gastbetriebe angesehen. Ich zögere ein wenig, sie zu verwenden, es sei denn, es gibt einen zwingenden Grund dafür, da andere Leute Probleme hatten ( hier und hier ).

  • Welche Vorteile bieten die synthetischen Hyper-V-Treiber gegenüber den emulierten Treibern?
  • Ist die Verwendung der synthetischen Treiber für diejenigen unter Ihnen, die Erfahrung mit dem Xen-Hypervisor haben, analog zur Paravirtualisierung eines Gastbetriebssystems?
  • Gibt es dann bemerkenswerte Gefahren oder Nachteile, wenn die synthetischen Treiber NICHT verwendet werden?

Warum sollte ich mich entweder die Mühe machen, a) die gemeldete Instabilität der Hyper-V-Treiber zu beheben, die sich derzeit im Kernel befinden, b) zu versuchen, einen neueren Kernel zu erstellen, oder c) zu versuchen, die Virtual Machine Additions mit einer Distribution zum Laufen zu bringen, die sie nicht waren? Nicht für den Fall konzipiert, dass alles "nur funktioniert"?

BEARBEITEN: Um ein wenig zu den Antworten hinzuzufügen ... Die Zeitverschiebung scheint ein bedeutendes Problem zu sein (wie in so schlecht, dass NTP die Uhr nicht rechtzeitig halten kann), es sei denn, Sie verwenden Linux Integration Services. Siehe KB918461 . Anscheinend wird dies durch die Verwendung der in den Linux Integration Services enthaltenen vmbus-Komponenten behoben. Meine Tests machen dies zu einem Problem.

Gemeinschaft
quelle

Antworten:

7

Die synthetischen Treiber "sprechen" direkter mit der eigentlichen Hardware und umgehen den größten Teil des Hypervisors (für allgemeine Datenoperationen). Dies reduziert den Hypervisor-Overhead im Zusammenhang mit den meisten Netzwerkaktivitäten erheblich.

Wenn Ihr Server nicht viel im Netzwerk kommuniziert oder wenn Ihre Hardware nicht ausreichend ausgelastet ist, sollten Sie mit den emulierten Treibern klar kommen. Es gibt jedoch definitiv eine Leistungsstrafe dafür.

Chris S.
quelle
1
Chris, einige deiner Fakten stimmen nicht überein. Ich bin neugierig, warum du denkst, was du denkst. Das Hinzufügen einer emulierten Netzwerkkarte zu einem virtuellen Switch wirkt sich nicht wirklich auf einen anderen Port des Switch aus. Darüber hinaus kommunizieren synthetische Treiber nicht direkt mit der Hardware, sondern senden Nachrichten an Treiber, die im Hyper-V-Verwaltungsbetriebssystem ausgeführt werden und mit der Hardware kommunizieren. Im Großen und Ganzen ist Ihr Standpunkt zur Leistung jedoch richtig.
Jake Oshins
@ Jake, auf den Laufwerken habe ich zu stark vereinfacht; Sie haben Recht, dass sogar die synthetischen Treiber den Hypervisor durchlaufen müssen. Beim Mischen von emulierten und synthetischen Treibern gehe ich ein paar Mal darauf ein (obwohl es mir schwer fällt, eine Referenz im Web zu finden). Es ist möglich, dass mir etwas falsch gesagt wurde oder dass es für eine ältere Version von Hyper-V gilt. Ich werde es aus meiner Antwort entfernen, bis ich eine Referenz finden kann.
Chris S
Daher funktionieren sie ähnlich wie das paravirtualisierte Gastbetriebssystem von Xen. Sie ermöglichen einen privilegierten "optimierten" Zugriff auf den Hypervisor (Ring -1 in Hyper-V und Ring 0 in Xen), anstatt dieselben Aufgaben auf der Abstraktionsebene auszuführen, auf der sich das Betriebssystem der virtuellen Maschine / des Gastes befindet.
1
Es ist so etwas. (Wieder zu stark vereinfacht) Synthetisch: Gasthandpakete an Hypervisor, der sie über den NIC-Treiber und über das Kabel ausführt. Emulation: Der Gast verwendet Befehle vom Typ PCI, um eine gefälschte Netzwerkkarte zu manipulieren. Der Hypervisor interpretiert dies, um herauszufinden, was der Gast möchte, und führt es durch den NIC-Treiber und aus dem Kabel.
Chris S
Ja. Chris 'letzte Antwort ist richtig. Das einzige, was ich hinzufügen möchte, ist darauf hinzuweisen, dass das Senden eines Pakets mindestens mehrere Hypervisor-Traps umfassen kann, wenn das Gastbetriebssystem glaubt, ein echtes PCI-Gerät zu manipulieren. Das Senden einer vollständigen Liste von Paketen über den synthetischen / paravirtualisierten Stapel umfasst lediglich das Aktualisieren einiger Zeiger und, falls das System inaktiv ist, ein leichtes Signal. Insgesamt sind die Gesamtkosten der Emulation hundertmal so hoch wie die eines synthetischen Treibers. Dies kann wichtig sein oder auch nicht. Wenn Ihre Arbeitslast nur wenig Netzwerkarbeit leistet, sind die Kosten irrelevant.
Jake Oshins
2

Wenn Ihr Hypervisor Hardware emuliert, gibt es viele Register, Zeitprobleme und andere Dinge, die der Treiber des Clients erwarten wird, wenn er beispielsweise Pakete in den Puffer der Netzwerkkarte oder Daten in einen Block auf einem Festplattenlaufwerk legt .

Wenn Sie den synthetischen Treiber verwenden, überspringen Sie die gesamte "Geige mit diesem Register (das sowieso vom Hypervisor emuliert wird)" und gehen direkt zur Phase "Hier sind die Daten - machen Sie das Richtige damit".

Der gesamte Prozess ist also weitaus effizienter.

chris
quelle
0

Ich habe keine vollständige Antwort für Sie, aber einige Erfahrungen, die die Diskussion abrunden könnten. Wir haben zunächst die emulierten Treiber auf unseren Red Hat-Computern verwendet, aber der Linux-Administrator hat sich darüber beschwert, dass die Netzwerkleistung miserabel ist. Schließlich haben wir die synthetischen Treiber über die Virtual Machine Additions zum Laufen gebracht, und das hat einen großen Unterschied gemacht (ich habe keine Beweise oder Details, also nimm das mit einem Körnchen Salz).

Separat stellen wir manchmal VMs über das Netzwerk ab, und wenn wir dies tun, müssen wir die emulierte Netzwerkkarte auf einer Windows-Box verwenden, da die synthetische Netzwerkkarte das PXE-Booten nicht unterstützt. Sobald die Bildgebung abgeschlossen ist, ersetzen wir die emulierte Netzwerkkarte durch eine synthetische. Auch hier spreche ich von Windows (nicht von Linux), aber es ist ein weiterer Unterschied.

Nach meinem Verständnis emulieren die emulierten Geräte im Allgemeinen ältere, etabliertere oder allgemeinere Geräte, für die so ziemlich jedes Betriebssystem oder jede Distribution eine integrierte Unterstützung bietet. In dieser Hinsicht sind sie universeller. Die synthetischen Geräte emulieren keine anderen Geräte, die Ihr Betriebssystem oder Ihre Distribution erkennen würde. Daher benötigen Sie von Microsoft bereitgestellte Treiber, die Sie durch die Installation der VM-Ergänzungen erhalten.

icky3000
quelle