アプリケーションごとにネットワーク帯域幅に優先順位を付けるにはどうすればよいですか?


20

Linuxには、特定のアプリケーションにネットワーク帯域幅の優先度を上げる/下げる方法がありますか?niceCPUの優先順位をどのように調整するかというようなもの

コンテキスト:現在、非常に低い帯域幅の接続(3Gドングル)を使用しています。を使用して非常に大規模なアップグレードを実行している間aptitude、アップグレードのダウンロードによってインターネット接続が占有されるため、Webをブラウズすることは事実上不可能になります。

したがって、私がやりたいのは、aptitudeプロセス(およびそのすべての子)のネットワーク帯域幅の優先順位を何らかの方法で下げて、別のプロセスが使用している間に帯域幅を使いすぎないようにすることです。


aptitudeは接続に特定のポートを使用しますか?その場合、ルーターのQoSを使用して、そのポートの優先度を低く設定できます(ルーターにその機能がある場合)。
MaQleod

@MaQleod:1)いいえ、ダウンロードにHTTPを使用します。2)私は3Gネットワ​​ークにいるので、ルーターを持っていません(とにかくアクセスできるルーターはありません)。
ジョブ

私はaptitude / aptのダウンロード速度を優先的に再生しようとするのではなく、レート制限するだけです。最大帯域幅の半分に設定して、一部をブラウジング用に残します。私は、カタリンの回答へのコメントでQoSを使用しない理由を述べようとしました。
vtest

回答:


8

force_bindを使用してアプリケーションのすべてのソケットの優先順位を設定し、Linux QoS(tcコマンド)を使用して、アプリケーションを優先順位バンドに割り当てることができます。例については、READMEファイルを確認してください。

http://kernel.embedromix.ro/us/

免責事項:私は著者です。

例:

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を使用できます。


3
免責事項をありがとう!スーパーユーザーの精神で、すべての人が見られるようにここに例を提供できたら素晴らしいと思います。
-slhck

1
ダウンロードすると、着信トラフィックが生成されます。QoSは発信トラフィックをポリシー化できますが、着信データの量を制御することはできません。これが機能するには、ホストとインターネット間のルーターを制御する必要があります。
vtest

2
trickle(利用可能UbuntuとDebianに少なくとも)だけでなく、あなたのためにそれを行うだろう、と少し簡単に使用することがありますtrickle -d 1 -u 1 aptitude。数値はキロバイトです。
taneli

1
着信トラフィックに関して、ルーターを制御できない場合でも、特定のタイプの着信トラフィックを他のタイプよりも優先させることは可能ですか?@vtest
CMCDragonkai 14

3
@taneli:trickle帯域幅制限を設定するために使用できますが、プロセス間の優先順位を定義するために使用することはできません
-a3nm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.