プロセスをCPU使用率の10%以下に制限してください。

プロセスをCPU使用率の10%以下に制限してください。

私が使用しているLinuxシステムには多くのユーザーがいますが、時にはユーザーがCPU /メモリの80%以上を占めるプロセスを実行することがあります。

それでは、プロセスが使用できるCPU使用率を制限(例:10%)して、これが発生しないようにする方法はありますか?わかっていますが、cpulimit残念ながら、私が制限するように指示したプロセス(たとえば、単一のプロセス)に制限が適用されます。それで、私の質問は、ID /パスを提供せずに、将来実行されるすべての実行プロセスとプロセスに制限をどのように適用できますか?

答え1

ニース/レニス

niceシステムを「ワンタイム」に調整できる優れたツールです。

 nice COMMAND

CPU制限

cpulimitCPU集約的なタスクを実行する必要がある場合、アイドルCPU時間はシステムの応答性にとって非常に重要です。

cpulimit -l 50 -- COMMAND

cgroup

cgroups1つ以外のプロセスグループに制限を適用します。

cgcreate -g cpu:/cpulimited
cgset -r cpu.shares=512 cpulimited
cgexec -g cpu:cpulimited COMMAND_1
cgexec -g cpu:cpulimited COMMAND_2
cgexec -g cpu:cpulimited COMMAND_3

リソース

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups
http://manpages.ubuntu.com/manpages/xenial/man1/cpulimit.1.html

答え2

メモリを乱用することはできますが、CPUを乱用することはありません。 CPUがアイドル状態のときに実行中のプロセス(「実行中」とは、プロセスがI/Oなどを待たないという意味)がメモリを占有します。デフォルトは100%CPU時間です。そして制限を加える理由もありません。

これで優先順位を設定できますnice。特定のユーザーのすべてのプロセスに適用するには、ユーザーのログインシェルが実行されていることを確認するだけですnice。子プロセスは値を継承しますnice。これは、ユーザーがログインする方法によって異なります。よりSSHログイン優先順位付け(良好)例えば。

または、仮想マシンを設定できます。実際、プロセス固有の制限を設定することは、ユーザーが多くのプロセスを開始してシステムを乱用する可能性があるため、あまり意味がありません。仮想マシンの場合、すべての制限は仮想マシンにグローバルに適用されます。

別の解決策は/etc/security/limits.conf制限を設定することです。limit.conf(5)のマニュアルページを参照してください。たとえば、ログインあたりの最大CPU時間および/またはログインあたりの最大プロセス数を設定できます。maxloginsユーザーごとに1つに設定することもできます。

答え3

cgroupを見たことがありますか?何かありますアーチスウィキそれらについて。これを読んでみると、cpu.shares必要なことができるようになり、ユーザーレベルで機能するため、すべてのユーザープロセスを一度に調整できます。

答え4

あなたのタグがそこにあるのでcentosそれを使うことができますsystemd

たとえば、次の ID にユーザーを制限する場合1234:

sudo systemctl edit --force user-1234.slice

次に、次のように入力して保存します。

[Slice] CPUQuota=10%

これは、ユーザーが次回ログインしたときに影響を受けます。

マニュアルページ:systemctl、、、systemd.slice...systemd.resource-control

関連情報