Warum ist das Virtualbox-Netzwerk mit virtio so langsam (Bridged und Host Only, Debian)

5951

Ich installiere derzeit einen VirtualBox-Server mit Debian für Host und Client. Ich habe Probleme mit der Netzwerkleistung und der CPU-Last, insbesondere bei Host-Only-Netzwerken, und ich habe keine Ahnung, wie ich dies weiter verfolgen kann.

Weder dem Host noch dem Client steht eine GUI zur Verfügung.

Ich habe mehrere Tests durchgeführt iperf, um eine Vorstellung davon zu bekommen, was schief läuft.


Host = Virtualbox-Host (läuft iperf -s), Core i7 (4 x 2 Kerne bei 1,6 GHz), 16 GiB RAM

  • 192.168.0.13, eth0 (Broadcom Gigabit an Bord), Gigabit Cat.6 über SoHo Gigabit Switch
  • 192.168.0.20, eth1 (Broadcom Gigabit an Bord), Gigabit Cat.6 über SoHo Gigabit Switch
  • 192.168.14.1, vboxnet0, Nur-Host-Netzwerk von VirtualBox
  • Betriebssystem: Debian 7.2.0 amd64 (Wheezy), Kernel 3.2.0-4-amd64, SMP Debian 3.2.51-1 x86_64
  • VirtualBox: 4.1.18_Debianr78361

Client = VirtualBox-Client (ausgeführt iperf -s), 2 Kerne, 2 GiB RAM

  • 192.168.0.14, eth0, mit virtio an eth1 des Hosts gebrückt
  • 192.168.14.100, eth1, vboxnet0, Nur-Host-Netzwerk von VirtualBox, das virtio verwendet
  • lsmod auf der virtuellen Maschine listet "virtio_net", "virtio_PCI", "virtio_ring" und "virtio" auf
  • installierte virtualbox-guest- (dkms | utils | x11) und virtualbox-ose-guest-x11
  • Betriebssystem: Debian 7.2.0 amd64 (Wheezy), Kernel 3.2.0-4-amd64, SMP Debian 3.2.51-1 x86_64

Andere physische Maschine (läuft iperf -s)

  • 192.168.0.2, Gigabit Cat.6 über SoHo Gigabit Switch
  • Betriebssystem: Ubuntu Server

Test 1 : Loopback auf einem physischen Computer ist hervorragend (> 60 Gbit / s) und wird vom iperf-client, der einen Kern sättigt, zu einem Engpass gebracht:

  • Szenario: Loopback auf der physischen Maschine
  • Befehl: iperf -c 127.0.0.1 -B 127.0.0.1 -i 60 -t 600
  • Bandbreite (Mb / s): 62100 61900 61800 61900 61800 61900 61900 61900 61800 -> 61900
  • CPU: Host (iperf -s) 70%, Host (iperf -c) 100%

Test 2 : Klassische Verbindung über Eth0 funktioniert wie erwartet:

  • Szenario: Host eth0 (Broadcom Gigabit on-board) -> Andere physisch verdrahtete Maschine über einen Switch
  • Befehl: iperf -c 192.168.0.2 -B 192.168.0.13 -i 60 -t 600
  • Bandbreite (Mb / s): 942 941 941 941 941 941 941 941 941 → 941
  • CPU: Host (iperf -c) 3,5%

Test 3 : Klassische Verbindung über eth1 funktioniert wie erwartet:

  • Szenario: Host eth1 (Intel Gigabit Server 4xNIC PCIe) -> Andere physisch verkabelte Maschine über Switch
  • Befehl: iperf -c 192.168.0.2 -B 192.168.0.20 -i 60 -t 600
  • Bandbreite (Mb / s): 942 941 941 941 941 941 941 941 941 → 941
  • CPU: Host (iperf -c) 3,5%

Test 4 : Loopback in der virtuellen Maschine sättigt erwartungsgemäß fast beide virtuellen Kerne. 30% der nativen Geschwindigkeit des Hosts erreichen:

  • Szenario: Loopback vollständig in der virtuellen Maschine
  • Befehl: iperf -c 192.168.14.1 -B 192.168.14.100 -i 60 -t 600
  • Bandbreite (Mb / s): 19600 19500 19600 19500 19500 19600 19600 19500 19500 -> 19500
  • CPU: Host (VBoxHeadless) 200%, Client (iperf -s) 75%, Client (iperf -c) 100%

Test 5 : Überbrückter virtio-Treiber mit der Außenwelt erreicht eine Leistung von 50% (40 - 70%) und belegt die Host-CPU vor allem im Leerlauf des Clients:

  • Szenario: Virtualbox eth0 virtio überbrückt auf Host eth1 -> Andere physisch verkabelte Maschine über Switch
  • Befehl: iperf -c 192.168.0.2 -B 192.168.0.14 -i 60 -t 600
  • Bandbreite (Mb / s): 401 458 480 367 582 720 431 388 696 553 -> 508
  • CPU: Host (VBoxHeadless) 30-60%, Client (iperf -c) 3%

Test 6 : Der überbrückte Virtio-Treiber an den Host wird durch die CPU der Clients zu einem Engpass gebracht und erreicht nur 12% der nativen Geschwindigkeit des Hosts!

  • Szenario: Virtualbox eth0 virtio überbrückt auf host eth1 -> hosts eth1
  • Befehl: iperf -c 192.168.0.20 -B 192.168.0.14 -i 60 -t 600
  • Bandbreite (Mb / s): 7420 7660 7310 7620 7690 7580 7570 7580 7700 7710 -> 7580
  • CPU: Host (VBoxHeadless) 160%, Host (iperf -s) 11%, Client (iperf -c) 100%

Test 7 : Host-Only-Netzwerke, die virtio verwenden, werden durch die CPU der Clients zu Engpässen gebracht und erreichen nur 8% der nativen Geschwindigkeit des Hosts!

  • Szenario: Virtualbox vboxnet0 nur für Host virtio
  • Befehl: iperf -c 192.168.14.1 -B 192.168.14.100 -i 60 -t 600
  • Bandbreite (Mb / s): 4760 4740 4980 5300 4890 4560 5270 4850 5450 5070 -> 4990
  • CPU: Host (VBoxHeadless) 170%, Host (iperf -s) 13%, Client (iperf -c) 100%

Ich habe noch einige Tests hinzugefügt, die mich zu noch verwirrenderen Ergebnissen führten - etwas ist definitiv kaputt.

Test 8 = Test 6 mit Intel 82545EM ist langsamer als virtio

  • Szenario: Virtualbox eth0 Intel 82545EM überbrückt den Host eth1 -> hosts eth1
  • Befehl: iperf -c 192.168.0.20 -B 192.168.0.14 -i 60 -t 600
  • Bandbreite (Mb / s): 3250 3300 3270 3290 3320 3380 3330 3330 3300 3300 -> 3310
  • CPU: Host (VBoxHeadless) 110%, Host (iperf -s) 5%, Client (iperf -c) 100%

Test 9 = Test 6 mit Intel 82543GC ist sehr langsam!

  • Szenario: Virtualbox eth0 Intel 82543GC überbrückt den Host eth1 -> eth1 des Hosts
  • Befehl: iperf -c 192.168.0.20 -B 192.168.0.14 -i 60 -t 600
  • Bandbreite (Mb / s): 667 627 717 743 633 653 621 677 701 623 -> 666
  • CPU: Host (VBoxHeadless) 35 - 117%, Host (iperf -s) 5 - 17%, Client (iperf -c) 50 - 100%

Test 10 = Test 5 mit Intel 82545EM -> Verbindung kann nicht hergestellt werden

  • Szenario: Virtualbox eth0 Intel 82545EM überbrückt mit Host eth1 -> Andere physisch verdrahtete Computer über Switch
  • Befehl: iperf -c 192.168.0.2 -B 192.168.0.14 -i 60 -t 600
  • Bandbreite (Mb / s):
  • CPU: Host (VBoxHeadless) 30-60%, Client (iperf -c) 3%

Test 11 = Test 5 mit Intel 82543GC, startet gut und sinkt dann auf einen Bruchteil !?

  • Szenario: Virtualbox eth0 Intel 82543GC überbrückt auf Host eth1 -> Andere physisch verkabelte Maschine über Switch
  • Befehl: iperf -c 192.168.0.2 -B 192.168.0.14 -i 60 -t 600
  • Bandbreite (Mb / s): 935 941 909 936 941 940 941 339 219 216 → 732
  • CPU: Host (VBoxHeadless) 100%, Client (iperf -c) 60%

F1: Warum ist der Loopback-Test (4) innerhalb der virtuellen Maschine dreimal langsamer als derselbe Test auf dem Host? Sollte es nicht in der Nähe der heimischen Geschwindigkeit sein?

F2: Warum verursacht ein herkömmliches Bridged-Netzwerk, das virtio verwendet, eine so hohe Belastung auf der Host-Seite und erreicht nicht 1 Gbit / s? Test (5)

F3: Warum ist der Brückentest (6) innerhalb der virtuellen Maschine achtmal langsamer als der Loopback-Test auf dem Host (dreimal langsamer als Loopback auf der virtuellen Maschine)?

F4: Warum ist der Host-Only-Test (7) innerhalb der virtuellen Maschine zwölf Mal langsamer als der Loopback-Test auf dem Host (viermal langsamer als Loopback auf der virtuellen Maschine)?

Ich gehe davon aus, dass sich einige Aspekte der Virtualisierung auf Q1-Q4 auswirken werden. Virtio scheint Q2-Q4 zu verursachen - aber ich habe keine Ahnung, wo ich nachforschen oder zwicken muss.

Das alles hört sich nicht so schlecht an. Das Problem entstand jedoch bei der Verwendung des Host-Only-Netzwerks für iSCSI. Dies führte zu HDD-Übertragungen von bis zu 10 MB / s und einer hohen CPU-Auslastung - die Festplatten können 147 MB ​​/ s erreichen. Etwas stimmt definitiv nicht ...

5
Warum erwarten Sie eine hohe Leistung? Es ist immerhin VirtualBox; Es ist nicht so, dass Sie etwas Wichtiges damit tun werden. Michael Hampton vor 10 Jahren 3
@MichaelHampton weist darauf hin, dass es sich bei VBox um eine ** Desktop-Virtualisierungslösung handelt, ähnlich wie bei VMware Workstation. Du solltest nichts Wichtiges darauf lenken. Es gibt viele andere Hochleistungsoptionen, die anstelle von Virtualbox verwendet werden sollten. VMware, Hyper-V, XenServer, KVM usw. EEAA vor 10 Jahren 2
Es ist nur für den Heimgebrauch gedacht und ich hatte nicht erwartet, dass 1 Gbit / s "Hochleistung" ist - KVM steht als nächstes auf meiner Liste, wenn alles ausfällt. vor 10 Jahren 1

0 Antworten auf die Frage