実行する必要のあるアプリケーションのプロセスがありますが、その処理にIOの使用量が多すぎます。そして、本当に私のコンピュータをクラッシュさせ、それが実行されている間、他のことをすることを不可能にします。
それで、特定のプロセスのIO使用量、RAM、およびCPUを制限する方法があるかどうか疑問に思いましたか?そしてもちろん、そのサブプロセス。
これは私のUbuntu18.04LTSシステムにあります。
ベストアンサー
すべてのcgexec
を組み合わせて使用する必要があります 、cpulimit
およびionice
:
-
RAMとスワップを制限する:
sudo cgcreate -g memory:/szMyGroup echo $(( 512 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.limit_in_bytes echo $(( 1024 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.memsw.limit_in_bytes
上記のコマンドは、
szMyGroup
という名前のコントロールグループを作成します (例:あなたの場合、group-great-uncle
)、szMyGroup
で実行されるプロセスに上限を設定します 最大512MBの物理メモリと最大1024MBのスワップ、次に:sudo cgexec -g memory:szMyGroup szMyProgram
szMyGroup
の下でプログラムを実行します コントロールグループ、したがって、制限に準拠していることを確認します -
ディスクIOを制限する:
sudo ionice --class 3 --pid $(pgrep -f szMyProgram)
上記のコマンドは
pgrep
を使用します 現在のコマンドラインの一部を再利用して、ディスクアクセスを制限し、他のプログラムがディスクを使用していない場合にのみディスクを使用するようにします。 -
CPUを制限する:
sudo cpulimit --limit=25 --pid=!#:4
プログラムのCPUは現在最大の25%に制限されています
プログラムが最初に多くのCPUを使用しない場合は、cpulimitの値を現在使用している値の半分以下に下げます。