実行する必要のあるアプリケーションのプロセスがありますが、その処理に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 szMyProgramszMyGroupの下でプログラムを実行します コントロールグループ、したがって、制限に準拠していることを確認します -
ディスクIOを制限する:
sudo ionice --class 3 --pid $(pgrep -f szMyProgram)上記のコマンドは
pgrepを使用します 現在のコマンドラインの一部を再利用して、ディスクアクセスを制限し、他のプログラムがディスクを使用していない場合にのみディスクを使用するようにします。 -
CPUを制限する:
sudo cpulimit --limit=25 --pid=!#:4プログラムのCPUは現在最大の25%に制限されています
プログラムが最初に多くのCPUを使用しない場合は、cpulimitの値を現在使用している値の半分以下に下げます。