温度に関してCPU使用量を制限する


8

私は分散コンピューティングプロジェクトを実行しています。これは通常、CPUの100%を使用したいと考えています。パーセント使用率ではなく温度でCPU使用率を制限するにはどうすればよいですか?また、Intel i5を24時間365日稼働させるための最大安全温度はどれくらいですか?(CPU制限がない場合、FahCore_a4を使用すると、このマシンは摂氏82度で実行されます。)

回答:


8

このWebページには、CPUを指定された温度以下に維持しようとするbashスクリプトがあります。http://seperohacker.blogspot.com/2012/10/linux-keep-your-cpu-cool-with-frequency.html

必要な最高温度を提供するだけで、その温度を下回るようにCPUが抑制されます。

恥知らずなプラグイン-上記のスクリプトを作成して保守しました。


2
これは理論的には質問に答える可能性がありますが、答えの本質的な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
fossfreedom

1
すてきなスクリプト..良い考え:)
Superbiji '29

1
ここに重要な部分があります:github.com/Sepero/temp-throttle
DmitrySandalov

3

これが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

0

CPU自体には、熱くなりすぎると電源を切るメカニズムがあります。(SMI割り込みを無効にした場合は、多分それはわかりません。)

主なユーザー空間アプリケーションはlm-sensorsパッケージです。インストールして実行するsensors-detectと、セットアップが完了します。マシンが同じであれば、これを1回実行すれば、結果として得られた結果をどこにでも使用できます。

CPU周波数はcpufreqドライバーサブシステムを介して簡単に制御されます。https://wiki.archlinux.org/index.php/CPU_Frequency_Scalingを参照してください

lmセンサーを使用して温度をポーリングするデーモンを作成し、温度が高すぎる場合はCPU周波数を下げることができます。


そのようなデーモンを書くのが最も簡単な言語は何ですか?bash、python、awk?
jeffythedragonslayer 2012

私はbashが最も簡単だと思います。ここに例があります(55-66行目を見てください)。
Adobe

0

これは、特定のプロセスによって引き起こされたのではなく、高い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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.