私のラップトップ(i3チップを搭載したHP)は、リソース集約的なプロセス(大規模なコンパイル、大規模なターボール抽出、フラッシュ再生など)を実行するたびにクレイジーに過熱します。
現在、いくつかの冷却ソリューションを開発していますが、グローバルCPU消費を制限するアイデアが浮上しています。 CPUが調整されると、温度が狂ったように上昇しないと思われ、作業を完了するためにわずかなパフォーマンスを犠牲にすることがあります。
- 私の推論は間違っていますか?
- 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スクリプト。