Website-Icon Digital Native

iPerf Trafficgenerator in einer VMWare virtuellen Maschine beschleunigen

Um einen konstanten Datenstrom zu erzeugen, nutzen wir auf Arbeit gern den Trafficgenerator iPerf, weil es diesen praktisch auf allen Systemen eine Implementierung gibt und hohe Durchsatzraten deswegen nicht nur zwischen PCs sondern auch zu mobilen Endgeräten getestet werden können.

Ab und an nutze ich iPerf auch aus einer VMWare virtuellen Maschine mit Windows 7 x64 Betriebssystem heraus. Das hat bisher auch immer großartig funktioniert und ich konnte Spitzengeschwindigkeiten von bis zu 980Mbps erreichen. Gestern jedoch plötzlich nicht mehr. Die Datenrate war nicht stabil und so hoch wie gewünscht war sie längst nicht. Dabei verlangte ich dem System gar nicht viel ab. Ich startete mit einem simplen UDP Traffic von 150Mbit:

iperf -c <Zielrechner> -u -b150M -i2 -t1000

Die erreichte Datenrate lag bei unter 30MB. Erst nach zahlreichen Optimierungen sowohl auf (virtueller) Hard- aber auch auf Softwareebene erreichte ich mein Ziel. Ich möchte hier meine Ansätze dokumentieren, vielleicht helfen diese ja auch euch, wenn es mal hakt.

VMWare Network-Interface verändern

Meine VM emulierte zunächst eine Intel 82545EM Gigabit Ethernet Netzwerkkarte (Typ e1000). Deren Hardwareemuluation ist jedoch mittlerweile veraltet und sollte durch einen neueren Adaptertyp ersetzt werden. Ich war mir auch sicher den Typ des Interfaces in irgendeiner VMWare Workstation Version über die UI ändern zu können, aber offensichtlich ist diese Möglichkeit mittlerweile dem vSphere Server vorbehalten. Doch natürlich kann man noch immer die Konfigurationsdateien (*.vmx) direkt bearbeiten und dort alle Vorkommen von „e1000“ durch z.B. „vmxnet3“ ersetzen, denn vmxnet3 ist die aktuellste Entwicklung und implementiert viele Hardwareoffloading-Mechanismen, die einen höheren Datendurchsatz ermöglichen. Eine Übersicht der möglichen Interfacetypen gibt es direkt in der VMWare KB.

Hardwarevirtualisierung anschalten

Warum diese Funktion bei vielen Rechnern im BIOS/UEFI im Auslieferungszustand ausgeschaltet ist, bleibt mir ein Rätsel. Auf jeden Fall sollte man einmal nachsehen, ob ein entsprechender Punkt im BIOS/UEFI verfügbar ist und aktiviert werden kann, damit VMWare nicht auf seine Softwareemulation bestimmter Hardwarebausteine zurückgreifen muss, die zwar gut, aber nicht so schnell wie eine native Hardwarevirtualsierung arbeiten.

iPerf optimieren

iPerf selbst bietet die meisten Stellschrauben bei der Optimierung des Datendurchsatzes. Besonders die Parameter -l, -P und -i helfen weiter.

Windows optimieren

Sollte iperf auf einem Windows-System laufen, dann kann man Prozessor-hungrige Dienste wie die Firewall, Windows Defender, Windows Update und auch die Windowssuche kurzfristig deaktivieren.

net stop WinDefend
net stop MpsSvc
net stop wuauserv
net stop WSearch

Auch ein Blick in die Netzwerkeinstellungen von Windows lohnt sich. Seit Windows 7 sind diese von Haus aus zwar recht gut, aber einzelne Optimierungen helfen oftmals, um das letzte Quäntchen herauszuholen. Dazu verwende ich am liebsten den TCPOptimizer von SpeedGuide.net. Natürlich kann man jede Einstellung auch direkt über die Konsole oder die Registry vornehmen, aber der TCPOptimizer ist übersichtlicher und kann auch alle Werte schnell wieder auf „Standard“ zurücksetzen. Das vorgeschlagene Backup der Einstellungen empfehle ich auf jeden Fall, falls man sich mal „veroptimiert“, was leicht passieren kann.

Screenshot der Oberfläche des TCPOptimizers von Speedguide.net

Ohne etwas Hintergrundwissen über die vielen Optionen sollte man jedoch keinesfalls mit der Optimierung beginnen, groß ist die Wahrscheinlichkeit, dass man nachher schlechter dasteht als zuvor. Auch der eingebauten Automatik würde ich nicht soviel Vertrauen schenken. Lest euch vor einem Eingriff lieber die Anleitung durch. Im obigen iPerf Beispiel schaltete ich jedoch Direct Cache Access und NetDMA explizit an.

Die mobile Version verlassen