10GBit Performance Tuning

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel gibt einen kurzen Überblick über Möglichkeiten den Durchsatz von 10 GBit Netzwerkkarten unter Linux zu optimieren bzw. diesen zu messen. Aufgrund der verschiedensten Overheads kann man in der Praxis nie die volle Bandbreite erreichen. Die folgenden Ansätze zeigen, an welchen Schrauben man drehen kann um eine maximale Performance zu erhalten. Zu empfehlen ist die Präsentation von Mark Wagner von RedHat.[1]

Möglichkeiten zur Optimierung

Aktueller Linux Kernel

Da der Linux Kernel ständig weiterentwickelt wird, ist generell ein möglichst aktueller Linux Kernel zu empfehlen.

Achtung: Unter Ubuntu 14.04 (trusty) haben wir die Erfahrung gemacht, dass die Optimierungen weiter unterhalb, den Durchsatz teilweise verschlechtert haben. Daher unbedingt vor weiterem Tuning zuerst einen Test mit der Standard-Installation durchführen. Für diesen Durchsatz-Test empfiehlt sich der folgende Artikel: TCP und UDP Netzwerk Performance mit iperf messen

TCP Window Scaling

Teilweise wird empfohlen das TCP Window Scaling zu aktivieren oder zu deaktivieren. Laut den Tests von [1] ist es besser dieses aktiviert zu lassen. Am besten man testet selbst mit aktiviertem und deaktiviertem Window Scaling.

sysctl -w net.ipv4.tcp_window_scaling=0

Anzahl der Lanes

Bei manchen Mainboards kann es vorkommen, dass einzelne PCIe Slots über weniger Lanes verfügen. Je nach PCIe Version, sind mit wenigen Lanes (x1, x2, x4) unter Umständen nicht die vollen 10 GBit erreichbar. Bei PCIe 1.x unterstützt 1 Lane 250MB/s. Für die vollen 10 GBit würde man somit mind. 5 Lanes benötigen, wobei man dann mit x4 nicht auskommt und somit gleich einen x8 Slot benötigt.

Mit dem Kommando lspci können Sie sich die Anzahl der Lanes anzeigen lassen.

lspci -v -v -v -s 09:00.0
09:00.0 Ethernet controller: 10GbE Single Port Protocol Engine Ethernet Adapter
...
Link: Supported Speed 2.5Gb/s, Width x8, ASPM L0s L1, Port 0
Speed 2.5Gb/s, Width x4

Treiber Version

Beachten Sie auch die Hinweise des Herstellers des Treibers der 10 GBit Karte. Mit ethtool können Sie die derzeit verwendete Treiberversion abfragen. Gegebenenfalls sollten Sie auf eine neuere Version aktualisieren.

ethtool -i eth3
driver: ixgbe
version: 1.1.18
...

MTU Size / Jumbo Frames

Per Default wird bei Ethernet die MTU von 1500 Bytes verwendet. Moderne GBit und 10 GBit Adapter erlauben jedoch den Einsatz von einer größeren MTU mit 9000 Bytes. Man spricht dann von Jumbo Frames.

ifconfig eth2 mtu 9000 up

Messung der Performance

Zur Messung der Performance bietet sich das Tool netperf an. Netperf ist Teil von Debian und Ubuntu. Für RHEL4, RHEL5 und RHEL6 gibt es Pakete z.B. auf Repoforge.

Netperf besteht aus 2 Programmen. netserver muss auf einem der beiden Server gestartet werden. Auf dem anderem Server kann mit netperf der eigentliche Test gestartet werden.

Zu empfehlen ist die Einstellung "-t TCP_SENDFILE", damit werden in der Praxis wesentlich bessere Ergebnisse erreicht.

Hier ein Beispielaufruf von netperf:

#./netperf -P1 -l 30 -H 192.168.10.10 -T 5,5 -t TCP_SENDFILE -F /data.file
Recv   Send   Send
Socket Socket Message Elapsed
Size   Size   Size    Time    Throughput
bytes  bytes  bytes   secs.   10^6bits/sec
87380  16384  16384   30.00   9888.66

Einzelnachweis

  1. 1,0 1,1 http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf


Foto Christoph Mitasch.jpg

Autor: Christoph Mitasch

Christoph Mitasch arbeitet in der Abteilung Web Operations & Knowledge Transfer bei Thomas-Krenn. Er ist für die Betreuung und Weiterentwicklung der Webshop Infrastruktur zuständig. Seit einem Studienprojekt zum Thema Hochverfügbarkeit und Daten Replikation unter Linux beschäftigt er sich intensiv mit diesem Themenbereich. Nach einem Praktikum bei IBM Linz schloss er sein Diplomstudium „Computer- und Mediensicherheit“ an der FH Hagenberg ab. Er wohnt in der Nähe von Linz und ist neben der Arbeit ein begeisterter Marathon-Läufer und Jongleur, wo er mehrere Weltrekorde in der Team-Jonglage hält.


Das könnte Sie auch interessieren

HA Cluster mit Linux Container basierend auf Heartbeat, Pacemaker, DRBD und LXC
I/O Performance Vergleich von Festplatten mit SSDs und Fusion-io ioDrive
Linux Netzwerk Analyse mit traceroute