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


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

Debian 6 (Squeeze) verwendet den Kernel 2.6.32, der die synthetischen Hyper-V-Treiber enthält, aber von Microsoft nicht als unterstütztes Gastbetriebssystem betrachtet wird. Ich zögere ein wenig, sie zu benutzen, 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?
  • Für diejenigen von Ihnen, die Erfahrung mit dem Xen-Hypervisor haben, verwenden Sie die synthetischen Treiber, die für die Para-Virtualisierung eines Gast-Betriebssystems geeignet sind?
  • Sind dann irgendwelche nennenswerten Gefahren oder Nachteile der Verwendung der synthetischen Treiber NICHT?

Warum sollte ich mich entweder a) mit der gemeldeten Instabilität der im Kernel befindlichen Hyper-V-Treiber befassen, b) versuchen, einen neueren Kernel zu bauen, oder c) versuchen, den Virtual Machine-Ergänzungen mit einer Distribution arbeiten, für die sie nicht entwickelt wurden, wenn alles "einfach funktioniert"?

BEARBEITEN: Um ein wenig zu den Antworten hinzuzufügen ... Uhr Drift scheint ein wesentliches Problem (wie in so schlecht, dass NTP nicht die Uhr in der Zeit halten kann), es sei denn, Sie verwenden Linux Integration Services. Sehen KB918461. Offensichtlich löst das die Verwendung der vmbus-Komponenten, die in den Linux Integration Services enthalten sind. Meine Tests zeigen dies als ein Problem.


7
2018-02-16 21:44


Ursprung




Antworten:


Die synthetischen Treiber "sprechen" direkter über die eigentliche Hardware und umgehen den größten Teil des Hypervisors (für allgemeine Datenoperationen). Dies reduziert den Hypervisor-Overhead in Bezug auf die meisten Netzwerkaktivitäten drastisch.

Wenn Ihr Server nicht viel über das Netzwerk kommuniziert oder wenn Ihre Hardware zu wenig belegt ist, sollten Sie die emulierten Treiber verwenden. Dafür gibt es definitiv eine Leistungseinbuße.


7
2018-02-16 22:06



Chris, ein paar deiner Fakten stimmen nicht überein. Ich bin neugierig, warum du denkst, was du denkst. Das Hinzufügen einer emulierten NIC zu einem virtuellen Switch wirkt sich nicht wirklich auf einen anderen Port des Switch aus. Darüber hinaus sprechen synthetische Treiber nicht direkt mit der Hardware, sie senden Nachrichten an Treiber, die im Hyper-V-Management-Betriebssystem ausgeführt werden und mit Hardware kommunizieren. Im Großen und Ganzen ist Ihre Aussage über die Leistung korrekt. - Jake Oshins
@Jake, auf den Laufwerken habe ich mich zu sehr vereinfacht; Sie haben Recht, dass selbst die synthetischen Treiber den Hypervisor durchlaufen müssen. Bei der Mischung von emulierten und synthetischen Treibern fahre ich das ein paar Mal (obwohl es mir schwer fällt, eine Referenz im Internet zu finden). Es ist möglich, dass ich falsch informiert wurde oder dass es für eine ältere Version von Hyper-V gilt. Ich werde es aus meiner Antwort entfernen, bis ich eine Referenz finde. - Chris S
Sie funktionieren also in ähnlicher Weise 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 die gleichen Aufgaben auf der Abstraktionsebene auszuführen, auf der sich das Betriebssystem der virtuellen Maschine / des Gastes befindet. - kce
Es ist so etwas. (Nochmals vereinfacht) Synthetisch: Gäste Hand Pakete zu Hypervisor, der es durch den NIC-Treiber und aus der Leitung führt. Emulation: Gast verwendet PCI-Typ-Befehle, um eine gefälschte NIC zu manipulieren, der Hypervisor interpretiert dies, um herauszufinden, was der Gast möchte, führt ihn durch den NIC-Treiber und aus der Leitung heraus. - Chris S
Ja. Chris letzte Antwort ist richtig. Das einzige, was ich hinzufügen möchte, ist, darauf hinzuweisen, dass, wenn das Gastbetriebssystem denkt, dass es ein echtes PCI-Gerät manipuliert, das Senden eines Pakets mindestens mehrere Hypervisor-Traps umfassen kann. Das Senden einer ganzen Liste von Paketen durch den synthetischen / paravirtualisierten Stapel umfasst nur das Aktualisieren einiger Zeiger und, wenn das System im Leerlauf ist, ein leichtes Signal. Insgesamt sind die Gesamtkosten der Emulation hundertmal höher als die eines synthetischen Treibers. Dies kann oder kann nicht wichtig sein. Wenn Ihre Arbeitslast wenig vernetzt ist, sind die Kosten irrelevant. - Jake Oshins


Wenn Ihr Hypervisor Hardware emuliert, gibt es viele Register- und Timing-Probleme und andere Dinge, die der Client-Treiber erwartet, wenn er beispielsweise Pakete in den NIC-Puffer legt oder Daten in einen Block auf einem Laufwerk legt .

Wenn Sie den synthetischen Treiber verwenden, überspringen Sie die ganze "Geige mit diesem Register (das sowieso vom Hypervisor emuliert wird)" und springen direkt zur "hier ist die Daten - machen Sie das Richtige mit" Bühne.

Der gesamte Prozess ist also viel effizienter.


2
2018-02-17 19:41





Ich habe keine vollständige Antwort für Sie, aber einige Erfahrungen, die zur Vervollständigung der Diskussion beitragen könnten. Anfangs haben wir die emulierten Treiber auf unseren Red Hat-Rechnern verwendet, aber der Linux-Administrator beschwerte sich darüber, dass die Netzwerkleistung miserabel war. Schließlich haben wir die synthetischen Treiber über die Virtual Machine Additions arbeiten lassen und das hat einen großen Unterschied gemacht (ich habe keine Beweise oder Details, also nimm das mit einer Prise Salz).

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

Im Allgemeinen verstehe ich, dass die emulierten Geräte ältere, etabliertere oder allgemeinere Geräte emulieren, die in praktisch jedem Betriebssystem oder jeder Distribution eingebaut sind. In dieser Hinsicht sind sie universeller. Die synthetischen Geräte emulieren keine anderen Geräte, die Ihr Betriebssystem oder Ihre Distribution erkennt. Daher benötigen Sie von Microsoft bereitgestellte Treiber, die Sie beispielsweise durch die Installation der VM-Erweiterungen erhalten.


0
2018-02-17 19:00