Limitar o uso da CPU em termos de temperatura

7

Eu executo projetos de computação distribuída, que normalmente querem usar 100% da CPU. Como faço para limitar o uso da CPU em termos de temperatura em vez de porcentagem de uso? Além disso, qual é a temperatura máxima segura para manter um Intel i5 funcionando 24/7? (Sem limite de CPU, FahCore_a4 faz com que esta máquina funcione a 82 graus Celsius.)

    
por jeffythedragonslayer 03.08.2012 / 06:18

4 respostas

7

Nesta página, há um script bash que tentará manter sua CPU abaixo de uma temperatura especificada. link

Você só precisa fornecer a temperatura máxima desejada, e vai acelerar o (s) seu (s) CPU (s) em um esforço para ficar abaixo da temperatura.

Shameless plug- Eu escrevi e mantive o script acima.

    
por Sepero 29.10.2012 / 14:46
3

Veja como resolvi usando o bash. Se alguém aparecer com um daemon melhor (melhor em ficar perto da temperatura alvo) por favor poste-o.

    #!/bin/bash

    while true; do
            val=$(sensors | awk '/Core 0/ {print $3}')
            max=$(echo "+60.0")
            if [[ "$val" < "$max" ]]
                    then
                            killall cpulimit
                            sleep .1
                    else
                            cpulimit -e FahCore_a4 -l 99 &
                            sleep 1
            fi
            clear
            sensors
    done
    exit 0
    
por jeffythedragonslayer 04.08.2012 / 07:48
0

A própria CPU tem um mecanismo onde ela se autoestaciona se ficar muito quente. (talvez não se você desativar as interrupções SMI, não tenho certeza disso).

O principal aplicativo de espaço do usuário é o pacote lm-sensors . Depois de instalá-lo, execute sensors-detect para configurá-lo, se suas máquinas forem as mesmas, você poderá executá-lo uma vez e usar as descobertas resultantes em todos os lugares.

A frequência da CPU é facilmente controlada pelo subsistema do driver cpufreq. veja link

Você poderia escrever um daemon que usa sensores de lm para pesquisar a temperatura e, se estiver muito quente, desligar a freqüência da cpu.

    
por user72421 03.08.2012 / 08:11
0

Foi assim que resolvi meus problemas de superaquecimento que não foram causados por um processo específico, mas pela falha do meu laptop em dissipar o calor causado pela execução de uma alta carga de CPU por longos períodos de tempo. A principal diferença para a solução oferecida pelo próprio code-monkey é que eu uso o escalonamento de frequência da CPU, em vez de usar o cpulimit em um processo específico. Desde que eu tenho Psensor instalado e funcionando de qualquer maneira, eu pegar carona no Psensor. Um daemon como o da code monkey sugerido também deve funcionar, porém dois limiares (min e max) são necessários. Em Psensor (Preferências do Sensor - > Alarme) eu configuro um alarme para o sensor relevante se ficar acima do limite alto (uso 85) ou abaixo do limite baixo (uso 80). Em Preferências - > Sensores - > Script executado quando um alarme é gerado Eu chamo meu script de heatcontrol.sh assim:

/ALLUSER/heatcontrol.sh powersave ondemand 82

O primeiro parâmetro é um scaling_governor válido que reduz a frequência da CPU, por ex. economia de energia. O segundo parâmetro é o padrão scaling_governor - ondemand para a maioria dos sistemas. O terceiro parâmetro é uma temperatura entre o limiar baixo e alto (o valor exato não é importante). Psensor adiciona mais dois parâmetros: um id de sensor e a temperatura informada.

E este é o meu 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

Funciona bem para mim (UBUNTU 14.04 LTS).

Sendo um novato no Linux e no bash, usei vários recursos, incluindo:

link

link

    
por user369752 18.01.2015 / 00:24