私は分散コンピューティングプロジェクトを実行しています。これは通常、CPUの100%を使用したいと考えています。パーセント使用率ではなく温度でCPU使用率を制限するにはどうすればよいですか?また、Intel i5を24時間365日稼働させるための最大安全温度はどれくらいですか?(CPU制限がない場合、FahCore_a4を使用すると、このマシンは摂氏82度で実行されます。)
私は分散コンピューティングプロジェクトを実行しています。これは通常、CPUの100%を使用したいと考えています。パーセント使用率ではなく温度でCPU使用率を制限するにはどうすればよいですか?また、Intel i5を24時間365日稼働させるための最大安全温度はどれくらいですか?(CPU制限がない場合、FahCore_a4を使用すると、このマシンは摂氏82度で実行されます。)
回答:
このWebページには、CPUを指定された温度以下に維持しようとするbashスクリプトがあります。http://seperohacker.blogspot.com/2012/10/linux-keep-your-cpu-cool-with-frequency.html
必要な最高温度を提供するだけで、その温度を下回るようにCPUが抑制されます。
恥知らずなプラグイン-上記のスクリプトを作成して保守しました。
これがbashを使用して解決した方法です。誰かがより良いデーモンを思いついたら(目標温度の近くに留まるほうがいい)、それを投稿してください。
#!/bin/bash
while true; do
val=$(sensors | awk '/Core 0/ {print $3}')
max="+60.0"
if [[ "$val" < "$max" ]]
then
killall cpulimit
sleep .1
else
cpulimit -e FahCore_a4 -l 99 &
sleep 1
fi
clear
sensors
done
CPU自体には、熱くなりすぎると電源を切るメカニズムがあります。(SMI割り込みを無効にした場合は、多分それはわかりません。)
主なユーザー空間アプリケーションはlm-sensors
パッケージです。インストールして実行するsensors-detect
と、セットアップが完了します。マシンが同じであれば、これを1回実行すれば、結果として得られた結果をどこにでも使用できます。
CPU周波数はcpufreqドライバーサブシステムを介して簡単に制御されます。https://wiki.archlinux.org/index.php/CPU_Frequency_Scalingを参照してください
lmセンサーを使用して温度をポーリングするデーモンを作成し、温度が高すぎる場合はCPU周波数を下げることができます。
これは、特定のプロセスによって引き起こされたのではなく、高いCPU負荷で長時間実行することによって引き起こされた熱を放熱するための私のラップトップの失敗によって引き起こされた私の過熱問題を解決した方法です。da code monkey自身が提供するソリューションとの主な違いは、特定のプロセスでcpulimitを使用する代わりに、cpu周波数スケーリングを使用することです。とにかくPsensorをインストールして実行しているので、Psensorに便乗します。da code monkeyのようなデーモンも機能するはずですが、2つのしきい値(最小と最大)が必要です。Psensor(センサー設定->アラーム)で、高しきい値(85を使用)より高くなるか、低しきい値(80を使用)より低くなった場合、関連するセンサーのアラームを設定しました。設定->センサー->アラームが発生したときに実行されるスクリプトで、次のようにスクリプトheatcontrol.shを呼び出します。
/ALLUSER/heatcontrol.sh powersave ondemand 82
最初のパラメーターは有効なscaling_governorで、CPU周波数を下げます(例:powersave)。2番目のパラメーターは、デフォルトのscaling_governor-ほとんどのシステムのオンデマンドです。3番目のパラメーターは、低しきい値と高しきい値の間の温度です(正確な値は重要ではありません)。Psensorはさらに2つのパラメーターを追加します。センサーIDと報告される温度です。
そして、これは私のheatcontrol.shスクリプトです:
#!/bin/bash
# TempNZ is temperature reported by Psensor; strip of trailing °C
TempNZ=$5
bnum=`expr index "$TempNZ" "°"`
if (( bnum < 2 )); then
echo "ERROR"
fi
TempNZ=${TempNZ:0:$(($bnum-1))}
STR=$1
# Is this a low threshold alarm?
if [ "$TempNZ" -le "$3" ]; then
STR=$2
fi
sudo sh -c "echo '$STR' > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
# echo new scaling_governor
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# play sound - audio feedback - optional
paplay /usr/share/sounds/ubuntu/stereo/message-new-instant.ogg
私には問題なく動作します(UBUNTU 14.04 LTS)。
Linuxとbashの初心者である私は、次のような多くのリソースを使用しました。
https://wiki.archlinux.org/index.php/CPU_frequency_scaling
http://elinux.org/Jetson/Performance#Viewing_the_current_CPU_status