Warum ist das Virtualbox-Netzwerk mit virtio so langsam (Bridged und Host Only, Debian)
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 ...
0 Antworten auf die Frage
Verwandte Probleme
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
6
Virtualbox, VMware, KVM oder andere für Ubuntu-Virtualisierung?
-
6
Vollbild-Flash langsam in KDE 4
-
5
Wie kann ich VirtualBox mit zwei Monitoren gut spielen lassen?
-
3
Pakete in einem seltsamen Zustand
-
3
Fallstricke von Windows XP Virtual Machines
-
2
Sollte ich meine Ubuntu VM auf Virtual Box portieren?
-
2
Gibt es einen Leistungsunterschied zwischen den virtuellen Laufwerkformaten VMDK und VDI mit Virtual...
-
1
Verwenden einer VMWare-Appliance mit VirtualBox / Parallels
-
2
Virtual Box 3.0.2 Vernetzung