Je dirige des projets informatiques distribués, qui veulent généralement utiliser 100% du processeur. Comment puis-je limiter l'utilisation du processeur en termes de température plutôt que de pourcentage d'utilisation? En outre, quelle est la température de sécurité maximale pour maintenir un Intel i5 en fonctionnement 24h/24 et 7j/7? (Sans limite de CPU, FahCore_a4 fait fonctionner cette machine à 82 degrés Celsius.)
Sur cette page Web, vous trouverez un script bash qui tentera de maintenir votre processeur en dessous d’une température spécifiée. http://seperohacker.blogspot.com/2012/10/linux-keep-your-cpu-cool-with-frequency.html
Il vous suffit de lui fournir la température maximale souhaitée et il étranglera votre (vos) CPU (s) afin de rester en dessous de cette température.
Prise sans scrupule - j'ai écrit et mis à jour le script ci-dessus.
Voici comment je l'ai résolu en utilisant bash. Si quelqu'un propose un meilleur démon (il est préférable de rester près de la température cible), postez-le.
#!/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
Le processeur lui-même dispose d'un mécanisme lui permettant de s'éteindre s'il fait trop chaud. (Peut-être pas si vous désactivez SMI interruptions, je n'en suis pas sûr.)
L'application utilisateur principale est le package lm-sensors
. Après l'avoir installé, lancez sensors-detect
pour le configurer. Si vos machines sont identiques, vous pouvez l'exécuter une fois et utiliser les résultats obtenus partout.
La fréquence du processeur est facilement contrôlée via le sous-système de pilotes cpufreq. voir https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling
Vous pouvez écrire un démon qui utilise lm-sensors pour interroger la température et, si sa température est trop élevée, baissez la fréquence du processeur.
C'est ainsi que j'ai résolu mes problèmes de surchauffe, qui n'étaient pas causés par un processus spécifique mais par l'incapacité de mon ordinateur portable à dissiper la chaleur causée par une charge de processeur élevée pendant de longues périodes. La principale différence par rapport à la solution proposée par da code monkey, c’est que j’utilise la mise à l’échelle de fréquence cpu, au lieu d’utiliser cpulimit pour un processus spécifique. Depuis que Psensor est installé et fonctionne de toute façon, je me connecte à Psensor. Un démon semblable à un singe suggéré devrait également fonctionner, mais deux seuils (minimum et maximum) sont requis. Dans Psensor (Préférences de capteur-> Alarme), je règle une alarme pour le capteur concerné si le seuil supérieur est dépassé (le niveau 85 est supérieur) ou le seuil bas (le nombre 80). Dans Préférences-> Capteurs-> Script exécuté lorsqu'une alarme est déclenchée, j'appelle mon script heatcontrol.sh comme suit:
/ALLUSER/heatcontrol.sh powersave ondemand 82
Le premier paramètre est un scaling_governor valide qui réduit la fréquence de la CPU, par exemple. économie d'énergie. Le deuxième paramètre est le paramètre par défaut scaling_governor - ondemand pour la plupart des systèmes. Le troisième paramètre est une température entre le seuil bas et le seuil haut (la valeur exacte n’est pas importante). Psensor ajoute deux paramètres supplémentaires: un identifiant de capteur et la température indiquée.
Et voici mon script 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
Fonctionne bien pour moi (UBUNTU 14.04 LTS).
En tant que novice pour Linux et bash, j'ai utilisé plusieurs ressources, notamment:
https://wiki.archlinux.org/index.php/CPU_frequency_scaling
http://elinux.org/Jetson/Performance#Viewing_the_current_CPU_status