GNU/Linux >> Linux の 問題 >  >> Linux

プロセスごとのI/Oを最大制限まで調整するにはどうすればよいですか?

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

$ 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

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


Linux
  1. LinuxでプロセスのCPU使用率を制限する方法

  2. Linux –特定のディレクトリのディスクI / Oを監視する方法は?

  3. sudo I/O ロギングを有効にする方法

  1. Linux で rsync 転送速度を制限/調整する方法

  2. Linuxで「中断できない」プロセスを停止するには?

  3. Python で Linux デバイス ファイルに対して低レベルの I/O を実行するにはどうすればよいですか?

  1. iptables または tc を使用してクライアントごとのパケットを制限する方法。

  2. Linux でプロセスを 1 つの CPU コアに制限する方法は?

  3. プロセスとその子プロセスの総リソース (メモリ) を制限する方法