全体のCPU消費を制限する方法はありますか?

全体のCPU消費を制限する方法はありますか?

私のラップトップ(i3チップを搭載したHP)は、リソース集約的なプロセス(大規模なコンパイル、大規模なターボール抽出、フラッシュ再生など)を実行するたびにクレイジーに過熱します。

現在、いくつかの冷却ソリューションを開発していますが、グローバルCPU消費を制限するアイデアが浮上しています。 CPUが調整されると、温度が狂ったように上昇しないと思われ、作業を完了するためにわずかなパフォーマンスを犠牲にすることがあります。

  1. 私の推論は間違っていますか?
  2. CPU全体の使用量を制限し続けるにはどうすればよいですか?

役立つ場合はDebianを使用します。

答え1

言及されていない別の選択肢は、すでにcpufrequtils私のラップトップにDebian 6をインストールして使用していることです。アルゴリズムを変更できます(支店cpufrequtils用語で)コアは、負荷に応じてクロック周波数を調整するために使用されます。特にuserspaceガバナーを使用すると、必要な値に周波数をロックできます(もちろん、CPUはこの速度で実行できるはずです)。 。

たとえば、Atomを1.6GHzではなく800MHzにロックするために使用しました。使い方はとても簡単です。

答え2

多くのハッキングなしでシステム全体のCPUを制限することができるかどうかはわかりませんが、次のようにして単一のプロセスで使用されるCPUの量を簡単に制限できます。CPU制限

私の考えにこれを効果的に使用する唯一の方法は、リソースを消費していることがわかっているアプリケーション用のラッパースクリプト(実際にはスクリプトと呼ぶことはできず、小さすぎる)を作成することです。たとえば、google-chrome が CPU を多用している場合は、パスの google-chrome バイナリを次のように置き換えることができます。

#! /bin/bash
cpulimit --limit 70 /usr/bin/google-chrome-bin

私はこれをまだテストしていませんので、塩を一粒にしてください。 cpulimit Webサイトでは、さまざまなアプリケーションにCPU制限ルールを設定できるようです。よくわかりません。直接確認してください。

答え3

スクリプトを使用して、温度に応じてCPUコアを自動的に制限できます。一時スロットル。より重要なことに集中しながら、バックグラウンドで実行できます。実行方法の例:

sudo ./temp_throttle.sh 80 # Will limit CPU cores when 80C is reached.

*免責事項 - 私はtemp_throttleの作成者であり管理者です*

答え4

ガバナーを変更することなく、/sys/devices/system/cpu/*/cpufreq/scaling_max_freq各CPUコアの値を変更するだけです。

たとえば、次のforループを使用します。

for f in /sys/devices/system/cpu/*/cpufreq/scaling_max_freq; do
    sudo sh -c "echo $1 > $f" 
done

また、見ることができます私のsetcpuスクリプト

元のコマンドはここにあります。)

関連情報