Wie würde man Nagles Algorithmus in Linux deaktivieren? [geschlossen]

7

Gibt es eine Möglichkeit, dies über die Befehlszeile zu tun? Man tcp sagt mir, dass ich tcp_nodelay = 1 setzen muss, aber ich kann die Datei tcp_nodelay nicht unter / proc / sys / net / ipv4 erstellen. Bitte lassen Sie mich wissen, ob Nagle in Linux deaktiviert werden kann.

    
Jason Marks 24.07.2013, 18:48
quelle

1 Antwort

24

Dieses Flag ( TCP_NODELAY ) ist eine Option, die pro Socket aktiviert werden kann und beim Erstellen eines TCP-Sockets angewendet wird. Dies geschieht zu einem Zweck: Der Nagle-Algorithmus ist allgemein nützlich und hilft bei der Bewältigung von Netzwerküberlastungen. Ich bezweifle, dass Sie es systemweit deaktivieren möchten, da Ihr System wahrscheinlich von dieser Deaktivierung leiden wird.

Um es für einen bestimmten Socket zu deaktivieren, können Sie die Option TCP_NODELAY anwenden, wie erklärt hier und hier in C:

%Vor%

Sie müssen sich möglicherweise an Ihre Programmiersprache anpassen, aber im Grunde setzt sie die Option TCP_NODELAY flag auf den Socket sock , wodurch Nagles Algorithmus effektiv deaktiviert wird. Dies gilt für jedes Betriebssystem mit Sockets, die den TCP-Standard unterstützen.

Wenn Sie den Algorithmus von Nagle weiterhin systemweit deaktivieren möchten, stehen zwei Optionen zur Verfügung. Zuerst könnten Sie Ihren Kernel mit dem entsprechenden Flag neu kompilieren (siehe dazu Ihr Distributionshandbuch). Die zweite Option besteht darin, eine Software zu erstellen, die das Flag TCP_NODELAY für jede bestehende Verbindung setzt, ähnlich wie bei diesem Code . Die letztere Option sollte jedes Mal ausgeführt werden, wenn eine neue TCP-Verbindung auf dem System erstellt wird.

Etwas sauberer wäre es, den Low-Latency-Modus von TCP zu aktivieren:

%Vor%

Dies gibt dem TCP-Stack einen Hinweis darauf, welche Entscheidungen getroffen werden müssen, um die Latenz zu verringern (was ich denke, was Sie erreichen wollen, indem Sie Nagles Algorithmus deaktivieren). Standardmäßig wird die Bandbreite optimiert ("0" wird von /proc/sys/net/ipv4/tcp_low_latency gelesen).

    
Soravux 24.07.2013 19:34
quelle

Tags und Links