| Title: How to set a system wide bandwidth limit on Linux systems | |
| Author: Solène | |
| Date: 06 February 2021 | |
| Tags: linux bandwidth | |
| Description: | |
| In these times of remote work / home office, you may have a limited | |
| bandwidth shared with other people/device. All software doesn't | |
| provide a way to limit bandwidth usage (package manager, Youtube videos | |
| player etc...). | |
| Fortunately, Linux has a very nice program very easy to use to limit | |
| your bandwidth in one command. This program is « Wondershaper » and | |
| is using the Linux QoS framework that is usually manipulated with "tc", | |
| but it makes it VERY easy to set limits. | |
| What are QoS, TC and Filters on Linux | |
| On most distributions, wondershaper will be available as a package with | |
| its own name. I found a few distributions that didn't provide it | |
| (NixOS at least), and some are providing various wondershaper versions. | |
| To know if you have the newer version, a "wondershaper --help" may | |
| provide information about "-d" and "-u" flags, the older version | |
| doesn't have this. | |
| Wondershaper requires the download and upload bandwidths to be set in | |
| kb/s (kilo bits per second, not kilo bytes). I personally only know my | |
| bandwidth in kB/s which is a 1/8 of its kb/s equivalent. My home | |
| connection is 1600 kB/s max in download and 95 kB/s max in upload, I | |
| can use wondershaper to limit to 1000 / 50 so it won't affect much my | |
| other devices on my network. | |
| ```shell commands to run wondershaper, include comments | |
| # my network device is enp3s0 | |
| # new wondershaper | |
| sudo wondershaper -a enp3s0 -d $(( 1000 * 8 )) -u $(( 50 * 8 )) | |
| # old wondershaper | |
| sudo wondershaper enp3s0 $(( 1000 * 8 )) $(( 50 * 8 )) | |
| ``` | |
| I use a multiplication to convert from kB/s to kb/s and still keep the | |
| command understandable to me. Once a limit is set, wondershaper can be | |
| used to clear the limit to get full bandwidth available again. | |
| ```shell command to clear bandwidth limit, include comments | |
| # new wondershaper | |
| sudo wondershaper -c -a enp3s0 | |
| # old wondershaper | |
| sudo wondershaper clear enp3s0 | |
| ``` | |
| There are so many programs that doesn't allow to limit download/upload | |
| speeds, wondershaper effectiveness and ease of use are a blessing. |