私はプロセスディスクioを設定された速度制限に制限する方法を探しています。理想的には、プログラムは次のように動作します。
$ limitio --pid 32423 --write-limit 1M
プロセス32423のハードディスク書き込み速度を1秒あたり1MBに制限します。
ベストアンサー1
これは間違いなくユーザースペースで実行できないマイナーな作業ではありません。幸いなことに、cgroup
LinuxとLinuxではmechanizmを使用できます。ブロックコントローラ。
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
limit1M
これで、メジャー/マイナー番号を持つデバイスの書き込み速度を制限するcgroupがあります。X:Y1MB/秒 ご覧のとおり、この制限はデバイスごとに適用されます。今やるべきことは、そのグループにいくつかのプロセスを入れて制限することだけです。
echo $PID > /sys/fs/cgroup/blkio/limit1M/tasks
他のオペレーティングシステムでこれを行うことができるかどうかはわかりません。