Trickle
trickleAUR は軽量で使いやすいユーザースペース帯域制限プログラムです。(trickled を使用する) コラボレイティブモードとスタンドアロンモードのどちらかが動作します。
ソケットライブラリラッパーをプリロードしてデータを遅延させることで通信帯域を制限します。
Trickle は完全にユーザースペースで動作します [1]。
インストール
trickleAUR パッケージをインストールしてください。
使用方法
デーモンを起動したら (下を参照)、プログラムの前に "trickle" を付けてください:
# trickle pacman -Syu
また、アップロード速度やダウンロード速度などの設定オプションを指定することもできます (詳しくは trickle(1) を参照):
# trickle -d200 -u50 pacman -Syu
systemd サービスの編集
通信制限したい systemd サービスの ExecStart
を編集して、/usr/bin/trickle
を追加してください。例えば以下の行を:
ExecStart=/usr/bin/daemon
以下のように書き換えます:
ExecStart=/usr/bin/trickle /usr/bin/daemon
スタンドアロンモードを使用する場合、使用方法に書いてあるように設定オプションを追加してください。デーモンを再起動したら、通信帯域が制限されるようになります。
rsync で使用する
rsync コマンドでは前に trickle を付けるのではなく (rsync は ssh プロセスをフォークするため機能しません)、以下のようにして rsync を起動します:
rsync --rsh="trickle -d 10 -u 10 ssh" SRC DEST
デーモンの設定
trickled を使ってアプリケーションごとに設定をしたい場合、trickled.conf(5) man ページに書かれているように /etc/trickled.conf
ファイルを作成してください。例:
[ssh] Priority = 1 Time-Smoothing = 0.1 Length-Smoothing = 2 [ftp] Priority = 8 Time-Smoothing = 5 Length-Smoothing = 20
Systemd の統合
以下の2つのファイルを作成して必要に応じてカスタマイズしてください:
/etc/systemd/system/trickled.service
[Unit] Description=trickle bandwith shaper [Service] EnvironmentFile=/etc/conf.d/trickled_systemd ExecStart=/usr/bin/trickled -u${TRICKLE_UP} -d${TRICKLE_DOWN} -w${TRICKLE_WSIZE} -t${TRICKLE_STIME} -l${TRICKLE_SLENGTH} -f Type=simple User=nobody Group=nobody [Install] WantedBy=network.target
/etc/conf.d/trickled_systemd
# Upload bandwidth limit in KBit/s TRICKLE_UP= # Download bandwidth limit in KBit/s TRICKLE_DOWN= # Set peak detection window size to size KB. This determines # how aggressive trickled is at eliminating bandwidth consump- # tion peaks. Lower values will be more aggressive, but may # also result in over shaping. TRICKLE_WSIZE=512 # Set smoothing time to seconds s. The smoothing time deter- # mines with what intervals trickled will try to let the ap- # plication transcieve 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 ap- # plications that need bulk transfer. This parameter is cus- # tomizable on a per-application basis via trickled.conf(5). TRICKLE_STIME=5 # Set smoothing length to length KB. The smoothing length is # a fallback of the smoothing time. If trickled cannot meet # the requested smoothing time, it will instead fall back on # sending length KB of data. The default value is 10 KB. TRICKLE_SLENGTH=10