Trickle

提供: ArchWiki
移動先: 案内検索

trickle は軽量で使いやすいユーザースペース帯域制限プログラムです。(trickled を使用する) コラボレイティブモードとスタンドアロンモードのどちらかが動作します。

ソケットライブラリラッパーをプリロードしてデータを遅延させることで通信帯域を制限します。

Trickle は完全にユーザースペースで動作します [1]

インストール

trickle パッケージをインストールしてください。

使用方法

警告:
  • ウェブインターフェイスで制御するプログラムの場合、ウェブインターフェイスの通信も制限されます。それによってウェブインターフェイスにアクセスできなくなる可能性があります。
  • Trickle はフォークしないプログラムの通信しか制限できません。FTP サーバーの通信制限に Trickle を使うことはできません。

デーモンを起動したら (下を参照)、プログラムの前に "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