Unterschied zwischen txqueuelen und ethtool tx

12

Was ist der Unterschied zwischen den folgenden txqueuelenEinstellungen:

ifconfig eth4 txqueuelen 5000
ip link set eth4 txqueuelen 5000

Und die txRinggrößeneinstellung, die angewendet werden kann mit:

ethtool -G eth4 tx 4096

Wie hängen diese mit den globalen /proc/sys/net/core/wmem*Einstellungen zusammen?

Ich bin auf RHEL6.

Christopher Neylan
quelle

Antworten:

6

Die Einstellungen net.core.wmem_defaultund wmem_maxsteuern die anfängliche und maximale Größe von TX-Socket-Puffern in Byte. Während die Warteschlange selbst nur eine verknüpfte Liste von skbZeigern ist, protokolliert der Kernel auch die gesamte Byte-Größe, die die skb's verbrauchen , wenn sie dem Socket-Puffer hinzugefügt und daraus entfernt werden. Das wmem_defaultSysctl legt die anfängliche Standardobergrenze für neue Sockets fest ( net/core/sock.c:sock_init_data()). Anwendungen können die Größe der Puffer ihrer Sockets erhöhen. Dies wmem_maxist die Obergrenze für diese Funktionalität ( net/core/sock.c:sock_setsockopt()).

Wenn ein Paket aus einem Socket-Puffer entfernt wurde und seinen Weg durch den Kernel-Netzwerkstapel findet, wird es in eine Übertragungswarteschlange gestellt, damit eine Schnittstelle darauf wartet, auf die Netzwerkkarte selbst geladen zu werden. Die txqueuelenmit den Befehlen ifconfigoder festgelegte ipAnzahl von Frames, die pro Kernel-Übertragungswarteschlange für die Warteschlangendisziplin ( net/sched/sch_generic.c:pfifo_fast_enqueue()) zulässig sind .

Schließlich ethtool -GVerwendungen ioctl die Anzahl der Ringeinträge für den Ringpuffer an der NIC selbst einzustellen.

Christopher Neylan
quelle
2

Ich weiß, dass ich eine langwierige Erklärung geben soll, aber D ein Seimon hat es bereits . Kurz gesagt txqueuelenist die Puffergröße. Alle Netzwerkpakete passen in diesen Puffer, wohingegen txdie Paketgröße des IP-Pakets in diesem Puffer ist. Das ist, wenn ich diesen Beitrag richtig verstehe.

eyoung100
quelle