Linuxで、特定のアプリケーションにネットワーク帯域幅の優先度を上げる/下げる方法はありますか? CPU優先度に対してNice
が行う方法のようなもの。
Context:現在、非常に低帯域幅の接続(3Gドングル)を使用しています。 aptitude
を使用して非常に大規模なアップグレードを実行している間、アップグレードのダウンロードがインターネット接続を占有しているため、Webを閲覧することは事実上不可能になります。
したがって、私がやりたいのは、aptitude
プロセス(およびそのすべての子)のネットワーク帯域幅の優先度を下げて、別のプロセスが使用しているときに帯域幅を使いすぎないようにすることです。
Force_bindを使用して、アプリケーションのすべてのソケットに優先順位を設定してから、Linux QoS(tcコマンド)を使用して、アプリケーションを優先順位バンドに割り当てることができます。例については、READMEファイルを確認してください。
免責事項:私は著者です。
例:
14: Force priority (between 0 and 6 for non-root users). You can
use 'tc' command from iproute to set-up 'prio' qdisc and to
assign prio to queues:
# 0. setup
export FORCE_NET_VERBOSE=1
export LD_PRELOAD=${LD_PRELOAD}:/usr/lib/force_bind.so
# 1. Make sure you have a 'prio' qdisc attached to eth0, for example:
tc qdisc add ev eth0 root handle 1: prio
# 2. Assign applications to classed (bands):
export FORCE_NET_PRIO=6 # interactive, band 0
your_voip_program_here
export FORCE_NET_PRIO=0 # best effort, band 1
your_mail_program_here
export FORCE_NET_PRIO=2 # bulk, band 2
your_remote_backup_program_here
# 3. Run tc statistics so you can see the classification:
tc -s class show dev eth0
もちろん、htbやその他のqdiscを使用することもできます。