Gibt es ein Dienstprogramm, um den Netzwerkdurchsatz eines Prozesses nach dessen Start zu begrenzen? Einfaches Beispiel: Sie stellen fest, dass ein Benutzer Ihre gesamte Upload-Bandbreite mit scp verwendet und Sie die Rate begrenzen oder die Priorität der Übertragung verringern möchten.
Ich denke, ich könnte eine Kombination von iptables / tc oder pf verwenden, um das zu erreichen, aber ich habe mich gefragt, ob es ein "One-Shot" -Tool gibt (wie Trickle mit einer --pid-Option ^^)?
Antworten:
Leider gibt es für FreeBSD keine solche Lösung. Es gibt viele Lösungen wie Dummynet / ipfw oder altq / pf, die verwendet werden, um die Netzwerknutzung basierend auf verschiedenen Mustern, jedoch nicht auf PIDs zu begrenzen.
Unter Linux gibt es eine Möglichkeit, die Netzwerknutzung auf Benutzerbasis einzuschränken:
Ich denke, es gibt keine Lösung, um die Netzwerkauslastung basierend auf pid zu begrenzen.
quelle
lsof des Prozesses, um die Netzwerkports zu erhalten, die der Prozess verwendet. Sobald Sie wissen, welche Ports verwendet werden, können Sie IPTABLES-Regeln verwenden, um die Ratenbegrenzung dieser Ports zu bestimmen. Diese Artikel sollen Ihnen eine bessere Vorstellung geben: http://linux-ip.net/articles/Traffic-Control-HOWTO/ http://blog.edseek.com/~jasonb/articles/traffic_shaping/ http: // wikis. sun.com/pages/viewpage.action?pageId=49906332
quelle
Unter Linux kann sogar die Kombination von iptables und tc ein schwieriges Problem sein, da die Option "--pid-owner" vom iptables-Modul "owner" aufgegeben wurde (siehe Hinweis unter der Tabelle hier ). Tatsächlich scheint nur diese Zuordnung (Paket - Prozess) kompliziert zu sein, während wir den Rest leicht erledigen können, dh Pakete recht effizient filtern und begrenzen.
quelle
Ich glaube nicht, dass es dafür eine fertige Lösung gibt. Mit Standard-Linux-Tools können Sie jedoch ein Skript hacken, das die Aufgabe erfüllt.
Zunächst können Sie eine Liste aller Verbindungen eines bestimmten Prozesses mit lsof abrufen. Anschließend können Sie mit tc Eingangsrichtlinien für diese Verbindungen erstellen.
quelle
Wenn Sie den Prozess auf +20 reduzieren, erhält alles andere, was auf dem System ausgeführt wird, Priorität und der Job wird weniger häufig geplant. Daher ist es schwieriger, die Puffer oder Prozesspakete zu füllen, was zu TCP führen sollte Drosselung. Es wird sporadisch sein, könnte aber genug helfen.
quelle