プロセスごとのI / Oを最大限に制限する方法は?

プロセスごとのI / Oを最大限に制限する方法は?

私はプロセスディスクioを設定された速度制限に制限する方法を探しています。理想的には、プログラムは次のように動作します。

$ limitio --pid 32423 --write-limit 1M

プロセス32423のハードディスク書き込み速度を1秒あたり1MBに制限します。

ベストアンサー1

これは間違いなくユーザースペースで実行できないマイナーな作業ではありません。幸いなことに、cgroupLinuxと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

他のオペレーティングシステムでこれを行うことができるかどうかはわかりません。

おすすめ記事