プロセスディスクを設定された速度制限に制限する方法を探しています。理想的には、プログラムは次のように機能します:
$ limitio --pid 32423 --write-limit 1M
プロセス32423を1メガバイト/秒のハードドライブの書き込み速度に制限します。
承認された回答:
これは、ユーザースペースでは実行できない簡単な作業ではありません。幸い、Linuxではcgroup
を使用して実行できます。 mechanizmとそのblkioコントローラー。
cgroupのセットアップは、すでにマウントされているか、どこかで使用されている可能性があるため、何らかの形でディストリビューション固有です。ただし、一般的な考え方は次のとおりです(適切なカーネル構成があることを前提としています):
mount -t tmpfs cgroup_root /sys/fs/cgroup
mkdir -p /sys/fs/cgroup/blkio
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio
これでblkio
ができました コントローラセット、あなたはそれを使うことができます:
mkdir -p /sys/fs/cgroup/blkio/limit1M/
echo "X:Y 1048576" > /sys/fs/cgroup/blkio/limit1M/blkio.throttle.write_bps_device
これで、cgroup limit1M
ができました。 これにより、メジャー/マイナー番号が X:Yのデバイスでの書き込み速度が制限されます。 1MB/秒まで。ご覧のとおり、この制限はデバイスごとです。あなたが今しなければならないのは、そのグループ内にいくつかのプロセスを置くことであり、それは制限されるべきです:
echo $PID > /sys/fs/cgroup/blkio/limit1M/tasks
他のオペレーティングシステムでこれを実行できるかどうか、どのように実行できるかわかりません。