web-dev-qa-db-ja.com

すでに起動されているプロセスのネットワークスループットを制限しますか? (Linux / FreeBSD)

プロセスの起動後にプロセスのネットワークスループットを制限するユーティリティはありますか?簡単な例:ユーザーがscpを使用してすべてのアップロード帯域幅を取得し、転送の速度を制限するか、優先度を下げたいことに注意してください。

Iptables/tcまたはpfの組み合わせを使用してそれを達成できると思いますが、「ワンショット」ツールが利用できるかどうか疑問に思っていました(--pidオプションを使用したトリクルなど)?

10
jbdenis

残念ながら、FreeBSDにはそのような解決策はありません。 pidではなく異なるパターンに基づいてネットワークの使用を制限するために使用されるdummynet/ipfwやaltq/pfのような多くのソリューションがあります。

Linuxでは、ユーザーベースでネットワークの使用を制限する方法があります。

iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner test -j MARK --set-mark 1

Pidに基づいてネットワーク使用率を制限する解決策はないと思います。

3
Istvan

procが使用しているネットワークポートを取得するプロセスのlsof。使用されているポートがわかったら、IPTABLESルールを使用してこれらのポートのレート制限を行うことができます。これらの記事はあなたにもっと良い考えを与えるはずです: http://linux-ip.net/articles/Traffic-Control-HOWTO/http://blog.edseek.com/~jasonb/articles/traffic_shaping /http://wikis.Sun.com/pages/viewpage.action?pageId=49906332

1
Levi

大まかに言って、プロセスを+20まで下げると、システムで実行されている他のすべてのものが優先され、ジョブのスケジュールが少なくなるため、バッファーを埋めたりパケットを処理したりするのが難しくなり、いくつかの=につながるはずです。 TCPスロットル。散発的ですが、十分に役立つ可能性があります。

# renice 20 -p $pid
0
Phil P

これに対する既成の解決策はないと思います。しかし、標準のLinuxツールを使用すると、そのことを実行するスクリプトをハックすることができます。

まず、lsofを使用した特定のプロセスのすべての接続のリストを取得できます。次に、それらの接続に対してtcを使用して入力ポリシーを作成できます。

0
thor

Linuxでは、「-pid-owner」オプションが「owner」iptablesモジュールから放棄されたため、iptablesとtcの組み合わせでさえ難しい問題になる可能性があります(表の下の注を参照 ここ )。実際、この関連付け(パケット-プロセス)のみが複雑であるように見えますが、残りは簡単に実行できます。つまり、パケットを非常に効率的にフィルタリングおよび制限できます。

0
pitr