Linux TCP-Puffersimulation

611
user1728363

Ich möchte Simulationen mit dem Linux-TCP-Empfangspuffer ausführen, um herauszufinden, wie groß mein Puffer sein muss.

Gibt es eine Software zur Durchführung einer solchen Simulation? Es wäre praktisch, den Puffer auffüllen zu können, um zu sehen, was mit meiner Anwendung passiert.

Update : Es scheint, als würden wir große Puffer verwenden, weil Pufferüberläufe auftreten. Unser Netzwerk ist bei 1 Gbit und der Ping ist nur 0,08 ms. Unsere Puffereinstellungen sehen so aus:

net.ipv4.icmp_echo_ignore_broadcasts = 1  net.ipv4.conf.all.rp_filter = 1  fs.inotify.max_user_watches = 65536  net.core.rmem_max = 16777216  net.core.wmem_max = 16777216  net.core.rmem_default = 1733248  net.core.wmem_default = 1733248  net.ipv4.tcp_rmem = 4096 1733248 16777216  net.ipv4.tcp_wmem = 4096 1733248 16777216  net.ipv4.tcp_window_scaling = 1  net.ipv4.tcp_timestamps = 1 
0

1 Antwort auf die Frage

1
jcoppens

Überprüfen Sie diesen Artikel . Es scheint eine gute Arbeit zu sein, um den Optimierungsprozess zu beschreiben, und es hat Beispielcode (Java und C), um auf die Größen zuzugreifen oder sie zu ändern. Es gibt auch einen Link zu einem Linux-Tool, um die optimale Größe zu ermitteln.

In diesem anderen Artikel werden einige Dinge beschrieben, auf die Sie mit dem Dateisystem / proc / sys zugreifen können. Dies ist eine gute Quelle für Echtzeitinformationen. Es zeigt, wie es über die Befehlszeile verwendet wird.

Es scheint, als würden wir große Puffer verwenden, da Pufferüberläufe auftreten. Unser Netzwerk ist bei 1 Gbit und der Ping ist nur 0,08 ms. Unsere Puffereinstellungen sehen so aus. net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.rp_filter = 1 fs.inotify.max_user_watches = 65536 net.core.rmem_max = 16777216 net.core.wmem_max. wmem_default = 1733248 net.ipv4.tcp_rmem = 4096 1733248 16777216 net.ipv4.tcp_wmem = 4096 1733248 16777216 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_timestamps 1 user1728363 vor 8 Jahren 0
Ich habe Ihre tatsächlichen Daten in die ursprüngliche Frage eingefügt. Sie sollten immer versuchen, relevante Daten zusammenzuhalten ... jcoppens vor 8 Jahren 0
Berechnen Sie mit der Formel aus der ersten Referenz, wären Sie mit 0,00008 * 1e9 / 9 = 10k Buffer in Ordnung. Ich finde 0.08ms ziemlich spektakulär (sicher, dass Sie nicht die lokale Netzwerkkarte anpingen)? :) Wenn Sie Zugriff auf zwei Computer haben, würde ich `pathrate` installieren und es ausprobieren. jcoppens vor 8 Jahren 1
Leider läuft auf dem Server Windows XP. Das Netzwerk zwischen dem Windows-Server und dem Linux-Client beträgt 1 GBit / s und sie befinden sich im selben Server-Rack. Ich bemerkte auch, dass die RTT wirklich gut war und ich bestätige, dass es für einen anderen Host und nicht für localhost ist. user1728363 vor 8 Jahren 0