Hou je bandbreedte onder controle met Trickle
Gepubliceerd: Dinsdag 8 maart 2011
Auteur: Koen Vervloesem
Het gebeurt dat een programma op je Linux-computer alle bandbreedte inneemt, waardoor je niet meer normaal kunt surfen. Hiervoor is een keurige oplossing: gebruik de userspace bandwith shaper Trickle.
Sommige programma's bieden zelf al de mogelijkheid om hun download- of uploadsnelheid te beperken tot een opgegeven limiet. Vóór je je tot andere oplossingen wendt, kun je daarom het best eerst naar de man-pagina kijken of naar andere documentatie van het programma dat je wilt inperken. Het programma wget kent bijvoorbeeld de optie --limit-rate en een programma zoals KTorrent laat ook toe om de maximale download- en uploadsnelheid in te geven.
Maar als de boosdoener zo'n mogelijkheid niet kent, dan kan Trickle van pas komen. Er is al lang geen nieuwe versie meer van uitgekomen en helaas werkt het niet in alle omstandigheden. De oorzaak voor dit laatste is te vinden in de manier waarop Trickle werkt: het vervangt de socket-interface van libc door zijn eigen wrapper die de gegevensstroom door de socket vertraagt. Dit vervangen werkt alleen bij programma's die libc dynamisch linken, wat de meeste programma's gelukkig doen. Om te controleren of het programma met Trickle ingeperkt kan worden, kijk je dus met ldd of libc bij de dynamisch gelinkte bibliotheken voorkomt, bijvoorbeeld:
$ ldd /usr/lib/firefox-3.6.15/firefox-bin|grep libc
libc.so.6 => /lib/libc.so.6 (0x00007f8370c34000)
Een tweede beperking is dat Trickle alleen TCP-sockets kan vertragen. Als je nu de bandbreedte van een programma wilt inperken, kan dit met de opties -d (downloadsnelheid) en -u (uploadsnelheid), waarbij de waarde erachter in kilobytes per seconde is:
$ trickle -d 100 -u 50 lftp ftp://url.voorbeeld.nl/voorbeeld.iso
Wil je globale bandbreedtebeperkingen opleggen, dan gebruik je de daemon trickled:
$ trickled -d 500 -u 100
Elke keer dat je trickle nu toepast op een proces, controleert die bij trickled hoeveel bandbreedte het mag gebruiken, en trickled zorgt er zo voor dat de gezamenlijke download- respectievelijk uploadsnelheid van alle door trickle gecontroleerde processen niet boven de ingestelde waarden komt. Verder kun je per proces de prioriteit van de bandbreedte instellen, namelijk in het configuratiebestand /etc/trickled.conf.
Bekijk zeker eens de man-pagina's van trickle en trickled voor de vele opties die ondersteund zijn en de man-pagina van trickled.conf voor een voorbeeldconfiguratie die altijd genoeg bandbreedte aan ssh-verkeer toekent. Al met al biedt Trickle niet de meest geavanceerde manier om de bandbreedte van je programma's onder controle te houden, maar het is wel heel eenvoudig te gebruiken en ondanks zijn beperkingen in heel wat omstandigheden toepasbaar.
De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.
