私のデスクトップにCGROUPというCGROUPを作成しました。背景。このグループの目的は、10%CPU制限内ですべてのsysadminスクリプトを実行することです。グループは、次のcronjobを使用して再起動するたびに作成されます。
@reboot /usr/bin/cgcreate -t jerzy:jerzy -a jerzy:jerzy -g cpu:background && /usr/bin/cgset -r cpu.cfs_period_us=1000000 background && /usr/bin/cgset -r cpu.cfs_quota_us=100000 background
これらの制限にもかかわらず、すでに制限されているシステム管理スクリプトが必要です。プログラムの実行、残りのプロセスの優先順位を決して指定しません。だから私は使用することにしました。いいね次の例のようにコマンドを実行します。
cgexec -g cpu:background nice -19 prependPollen.py
はいプログラムの実行上記のコマンドでリソースを次に制限します。prependPollen.pyそれともいいね?
より一般的に:使用プログラムの実行すぐに続く 1 つのコマンドにのみリソースを制限します。プログラムの実行注文する?同じように適用されますいいね?
nice -19 cgexec -g cpu:background prependPollen.py
上記のコマンドのように順序を変更すると、CPU使用量/制限に影響はありますか?どちらも大丈夫です。いいねそしてプログラムの実行同じコマンド/cronjobで使用できますか?
PS私の環境:Bash、Debian 10 LTS。
答え1
どちらのコマンドも、変更された属性を保持しながら次のコマンドを実行する準備コマンドです。したがって、変更される属性が他の属性に副作用がない限り(両方の属性に適している)、ここでは順序は重要ではありません。
cgexec -> nice -> final executable
nice
以下で実行するプロセスをそのプロセスに移動します。グループnice
最終実行可能ファイルのパフォーマンスを変更します (cgroup を維持しながら)。
nice -> cgexec -> final executable
後続のプロセスの利点を変更し、cgexec
最終cgexec
実行可能ファイルを関連するcgroupに配置します(品質を維持しながら)。
どちらのコマンドも同じ結果を生成します。 2つの属性(グループそしてフレンドリー) は、次のプロセスのすべての子プロセスに自動的に伝播されます。だから何が起こってもprependPollen.py
その中にいるでしょう。中央処理装置:背景変化の美しさもあります。
他の同様のコマンドは、このパイプラインのどこにでも挿入できます。たとえば、ionice -c 3
Pythonプログラムは、他のプロセスへのI / Oの影響を制限するために、最初、2番目、または3番目の場所に追加できます。cgroupこれをより良くするには、通常、次のものが必要です。cgroupv2が正常に動作するために)。