Persistenter txqueuelen Netzwerk-Parameter mithilfe udev
Einer von vielen konfigurierbaren Netzwerkschnittstellen-Parametern ist txqueuelen
. Dieser Parameter definiert die Größe der Warteschlange, in welcher Daten vom Kernel zwischengespeichert werden, bis diese über das Netzwerk versendet wurden. Standardmäßig hat dieser Parameter den Wert 1000 - je nach Anwendung bedarf es hier einer Änderung, die man in aller Regel über ifconfig
oder ip
setzt:
1# ifconfig eth0 txqueuelen 5000
2# ip link set eth0 txqueuelen 5000
Das ist keine sonderlich elegante Lösung, da dieses Kommando nach jedem Reboot oder Netzwerk-Neustart erneut abgesetzt werden muss. Natürlich kann man das auch in die /etc/rc.local
eintragen - aber das geht auch schöner.. 🙂
Unter Red Hat Enterprise Linux bzw. CentOS soll es gemäß einem Bugfix-Report eine Variable geben, die in der Konfigurationsdatei der Netzwerkschnittstelle hierfür verwendet werden kann - unter RHEL5 und 6 funktionierte das jedoch nicht bei mir:
1# vi /etc/sysconfig/network-scripts/ifcfg-eth0
2...
3IFCONFIG_OPTS="txqueuelen 5000"
4
5ESC ZZ
6
7# ifdown eth0; ifup eth0
8# ifconfig eth0|grep txqueuelen
9 collisions:0 txqueuelen:1000
Schöner lässt sich das Ganze mit udev
lösen. Es genügt einfach eine kleine Regel unter /etc/udev/rules.d/60-custom-txqueuelen.rules
anzulegen, die beim Erkennen der Netzwerkkarte das oben genannte ifconfig
-Kommando absetzt:
1#
2# custom txqueuelen parameter value
3#
4# Sets a custom txqueuelen parameter value for network interfaces.
5# This variable sets the length of the transmit queue of a device.
6# The default value is 1000 - depending on your application setup you
7# might want to increase this value (e.g. 5000)
8#
9
10KERNEL=="eth[0,1]", RUN+="/sbin/ifconfig %k txqueuelen 5000"
11#KERNEL=="eth[0-9]", RUN+="/sbin/ifconfig %k txqueuelen 5000"
Wer möchte, kann auch gleich das ip
-Kommando verwenden - denn ifconfig
ist ja bekanntlicherweise obsolet:
1...
2KERNEL=="eth[0,1]", RUN+="/sbin/ip link set %k txqueuelen 5000"
3#KERNEL=="eth[0-9]", RUN+="/sbin/ip link set %k txqueuelen 5000"
Zum Übernehmen genügt eines der folgenden Kommandos:
1# udevtrigger
2# /sbin/udevadm trigger
Und siehe da - der Wert wurde angepasst:
1# ifconfig eth0|grep txqueuelen
2 collisions:0 txqueuelen:5000
3# ifconfig eth1|grep txqueuelen
4 collisions:0 txqueuelen:5000
🙂