私はこのような状況に何度も直面しました。特定のプログラムが無限ループに入り、システム全体が完全に応答しなくなったことがあります。一度は外部JavaScriptがあって終了しなければなりませんでした。これは許容できないことなので、プロセスのCPU使用量を制限したいと思います。を使用するのはlimits.conf
当然のようですが、単位はとされていますmax CPU time (MIN)
。しかし、私が知っている限り、CPU時間はCPUがタスクを実行するのに費やす時間です。この場合、全体の時間枠は不明です。 1 CPU分の制限はどういう意味ですか? (ちなみに、ulimit
ユニットは秒であると主張しますが、これはさらに混乱を招きます...)では、「どの時点でもどのプロセスがCPUの半分以上を使用することはできません」のようなものをタイムリーにどのように設定しますか? 」
答え1
そうすることはできませんulimit
。プロセスを一時停止して一時停止を解除してこれを行うツールがあります(cpulimit
)。オペレーティングシステムの一部、Debianの一部である可能性がありますが、デフォルトではインストールされません。カーネルネームスペースもあります。しかし、必ずしもそうする必要はありません。 Unixはこのような状況でうまく機能します。 niceを使うこともできますが、必要な状況はほとんど見えません。問題は、交換などの他の原因によって発生する可能性があります。