
Ich suche nach einer Möglichkeit, die Upload-Rate für eine Anwendung zu begrenzen, ohne den gesamten Computer zu begrenzen.
Der Anwendungsfall ist der folgende:
Der Benutzer (ich selbst) erstellt eine große Datei mit der Absicht, sie auf eine Video-Hosting-Site hochzuladen. Die Dateien sind jedoch groß und die Internetverbindung ist langsam. Daher kann das Hochladen dieser Dateien Stunden (oft Dutzende von Stunden) dauern.
Während des Datei-Uploads ist die Nutzung des Internets sehr erschwert, da der Upstream durch den Datei-Upload komplett übernommen wird.
Ziel ist es, den Browser auf 80 % der Internetverbindungsgeschwindigkeit begrenzen zu können.
Die perfekte Lösung wäre, das Limit während des Upload-Vorgangs ändern zu können, ohne etwas neu starten oder den Upload selbst unterbrechen zu müssen. (Nehmen wir an, der Benutzer möchte ein Nickerchen machen, baden, etwas essen usw. und kann dem Upload vorübergehend erlauben, das gesamte ISP-Limit von 100 % auszulasten.)
Antwort1
Versuchen Sie zu installierenRinnsal
sudo apt-get install trickle
Trickle ist ein freiwilliger, kooperativer Bandbreiten-Shaper. Er funktioniert vollständig im Userland und ist sehr einfach zu verwenden.
Die einfachste Anwendung besteht darin, die Bandbreitennutzung von Programmen zu begrenzen.
hier ist eine Referenz:http://www.tuxradar.com/content/control-your-bandwidth-trickle
Antwort2
Ja, Sie können also iptables verwenden, um ein gepacktes Paket basierend auf dem Prozess zu markieren (--pid-owner) und dann tc verwenden, um die Bandbreite zu begrenzen.
Versuchen Sie zu lesendieser Linkund sehen Sie sich beispielsweise die Gestaltung des ausgehenden HTTP-Verkehrs an: Stellen Sie sich vor, Sie machen dasselbe, aber wenden die Markierungsregel von iptables auf eine PID an, statt auf Port 80!