a lightweight userspace bandwidth shaper
trickle is a userspace bandwidth manager. Currently,
trickle supports the shaping of any SOCK_STREAM (see
socket(2)) connection established via the
socket(2) interface. Furthermore,
trickle will not work with statically linked
executables, nor with setuid(2) executables.
trickle is highly configurable; download and upload
rates can be set separately, or in an aggregate fashion.
The options are as follows:
- Displays help.
- Increases the verbosity level (can be specified multiple times).
- Prints version.
- Runs trickle in standalone mode, independent of
- Limit the download bandwidth consumption to rate
- Limit the upload bandwidth consumption to rate
- Set peak detection window size to length KB. This
determines how aggressive
trickle is at
eliminating bandwidth consumption peaks. Lower values will be more
aggressive, but may also result in over shaping. The default value (512
KB) is usually sufficient.
- Set smoothing time to seconds s. The smoothing time
determines with what intervals
trickle will try to
let the application transceive data. Smaller values will result in a more
continuous (smooth) session, while larger values may produce bursts in the
sending and receiving data. Smaller values (0.1 - 1 s) are ideal for
interactive applications while slightly larger values (1 - 10 s) are
better for applications that need bulk transfer.
- Set smoothing length to length KB. The smoothing
length is a fallback of the smoothing time. If
trickle cannot meet the requested smoothing time,
it will instead fall back on sending length KB of
data. The default value is 10 KB.
- Use trickled(8) socket path to
communicate with trickled(8). By default,
/tmp/.trickled.sock is used.
- Use the specified .so instead of the standard one, this is useful if you
don't run trickle from a standard installation.
trickle -u 10 -d 20 ncftp
Launch ncftp(1) limiting its upload capacity to
10 KB/s, and download capacity at 20 KB/s.
trickle has been developed by Marius Aamodt Eriksen
Does not support executables utilizing kqueue(2). Does not
support statically linked executables.