プロセスがあまりにも多くのCPUを使用しないようにする(使用可能な場合でも)

プロセスがあまりにも多くのCPUを使用しないようにする(使用可能な場合でも)

あまりにも多くのCPUを使用する1つのプロセスを避けたい。実際には、DebianがインストールされているRaspberry Piで実行する必要がある非常に長いCPU要求タスク(ビデオ変換)があるため、CPUが過熱するのを防ぎたいと思います。温度が80℃以上に上昇します。

コマンドがあるのを見ましたが、cpulimitコマンドを実行する方法がわかりません。これは、bashコマンド自体ではなくpid(プロセスID)を引数として使用したり、実行するコードを含む実行可能ファイルとして使用したりするためです。 。私の仕事が何を返すかを自分で確認し、必要に応じてCtrl-Cを押すことができるようにしたいです。注:ジョブコマンドをファイルに入れて実行しようとするとcpulimit -l 20 --path=/path/to/my/file.sh返されるWarning: no target process found. Waiting for it...ため、1)--pathパラメータが実際に実行するアクション、2)CPUlimitコマンドを正しく使用する方法を理解できないようです。どの端末.. .

私はできます。好む 使用しないでください同様の回避策は、nohup my-command --my-args &2番目にpidを返し、それに対してcpulimitコマンドを書くことができるようにしても同じです。

よろしくお願いします!

ベストアンサー1

ハードウェアの電源管理機能を活用

CPU温度を下げることが目標である場合は、CPUがより早く制限されるように電源管理パラメータを調整することをお勧めします。 Raspberry Piモデルによっては、温度を下げる必要があるかもしれませんtemp_soft_limitconfig.txtデフォルトは60℃のようです)。よりラズベリーパイドキュメントもっと学ぶ。

制御グループの使用

別のオプションは、cgroupを使用してプロセスが使用できるリソースの量を制限することです。 cgroupは作成できるサブプロセスも考慮し、デーモンにも適用できます。 CPU使用量を制限したい場合は、お気に入りのシェルがsed、awkなどのツールを作成するか、Chromeブラウザが各タブに対して別々のプロセスを作成すると仮定すると、CPUサイクル数に制限が設定されます。みんな影響を受けたcgroupのプロセスが燃焼する可能性があります。

次のように「cpulimit」という制御グループを作成できます。

$ sudo cgcreate -g cpu:/cpulimit

この制御グループのプロセス制限をCPU時間の20%に設定します。

$ sudo cgset -r cpu.cfs_period_us=1000000 cpulimit
$ sudo cgset -r cpu.cfs_quota_us=200000 cpulimit

アプリケーションを実行します。

$ sudo cgexec -g cpu:cpulimit <command>

おすすめ記事