プロセスがコンピュータを停止するのを防ぐ方法は?

プロセスがコンピュータを停止するのを防ぐ方法は?

プロセスによってコンピュータが「フリーズ」する可能性があります(たとえば、CPUまたはスワップ領域が不足している)。これが起こらないようにする方法はありますか?たとえば、プロセスに与えることができる最大%CPUまたはIO MB / sを設定しますか?

答え1

シェルで実行されるコマンドについては、 のシェルマニュアルをお読みくださいulimit

ulimit()Cにも同じことをする関数があります。

実装固有のメソッドを使用してさまざまな制限を適用することもできます。 FreeBSDでは、からまたはlogin.confというコマンドを使用してユーザー固有の制限を設定できますrctl。一部のLinuxディストリビューションで使用されますlimits.conf

cpulimit時間の経過とともに特定の量のCPUを使用しないようにプロセスを一時停止できるプログラムがあります。

もちろん、優先順位を調整したい場合は常にnice合計があります。renice

答え2

部分的に。ulimit通常、シェルヘルパーコマンドが何であるかを確認してください。 (バッシュではhelp ulimit)。メモリ、合計CPUサイクル、および時間(%ではない)、作成するファイルサイズを制限できます。

このコマンドを使用することもできますnice。しかし、実際にリソースが必要な他のことがなければ、niceは効果的ではありません。複数のプロセスが CPU リソースを配置して競合する場合にのみ適用されます。

Linuxでできることの1つは、メモリが不足しているときに最初にプロセスを終了する必要があることをOOM Killerに指示することです。

関連情報