TU ANUNCIO / YOUR PUBLICITY

AQUÍ PODRÍA ESTAR TU ANUNCIO: / HERE COULD BE YOUR AD E-mail

domingo, 16 de febrero de 2014

Changing processor speed automatically if temperature increase ! / ¡ Cómo cambiar la velocidad del procesador automáticamente si aumenta peligrósamente la temperatura

Con este tipo de programas y un portátil Dell que tengo. Éste tiene la mala costumbre de recalentarse si funciona a 1600 MHz y se le hace trabajar duro. Sube hasta los 83ºC y se apaga sólo. Si le modifico la velocidad del procesador a 800 MHz la temperatura baja a los 50ºC.

El problema es que si, por ejemplo, estoy ejecutando un programa pesado de edición de vídeo a baja velocidad el proceso se eterniza y a alta velocidad el ordenador se apaga. 

To do hard woks, I have a Dell laptop that has a bad habit of overheating if it works at 1600 MHz and makes you work hard. Up to 83 ° C and off alone. If I modify the processor speed to 800 MHz low temperature 50 ° C.

The problem is that if I'm running a heavy video editing program on low speed high speed process and eternizes, the computer shuts down.

¿Como mejorar la velocidad sin recaletamientos extremos?.

 How to improve speed without extreme overheating?

Como no he encontrado una buena solución, he mezclado todas y, he creado un script que varía la velocidad del procesador según vaya yendo la temperatura.
Para entenderlo voy a explicar algunos pasos:

Since I have not found a good solution, and I mixed all, I created a script that varies the processor speed as the temperature get going.
To understand I will explain some steps:

El programa "sensors". 

The "sensors" program

Si tecleamos sensors en la consola nos aparecerá algo así:
If you type "sensors" in the console we see something like this:

~$ sensors
Adapter: Virtual device
temp1:       +63.0°C  (crit = +110.0°C)                  

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:  +59.0°C                                    
Core1 Temp:  +62.0°C    

La temperatura de ambos procesadores es algo similar. Nos interesa obtener el valor de la temperatura del 2º:
The temperature of both processors is similar. We are interested in the value of the temperature of 2nd:


~$ sensors | tail -c 45
62.0°C 


~$ sensors | tail -c 45 | head -c 2
62

Traduciendo: Al chorreo de texto después de sensors tomamos sólo los 45 últimos caracteres (tail -c 45) y de éstos los dos primeros (head -c 2)
Puede que en otros ordenadores no valgan los valores de 45 y 2. Probad hasta atinar.



Translating: The text after sensors take only the last 45 characters (tail-c 45) and of these the first two (head-c 2)
On other computers may not be worth the values ​​of 45 and 2. Taste to hit.

El programa "cpufreq". 

"cpufred" program

Si tecleamos cpufreq-set -g ondemand el procesador pasará a usar al máximo el procesador si se le exige caña.
Si tecleamos cpufreq-set -g powersave el procesador pasará a usar la mínima velocidad posible.
NOTA: puede necesitar poner delante sudo.

If you type cpufreq-set-g ondemand the processor will use to the maximum the processor if you are required cane.
If you type cpufreq-set-g powersave the processor will use the lowest speed possible.
NOTE: You may need to put ahead "sudo".

El script. 

The script.

#!/bin/bash
demanda=true
power=true
while true
  do
  clear
  echo "------------------INI--------------------"
  a=`sensors | tail -c 45 | head -c 2`
# Colocamos en la variable a el valor de la temperatura

  echo "Temperatura actual: $aºC"
El primer valor del argumento estará en $1
  if [ $a -lt $1 ]; then
    if $demanda; then
       echo "Cambia a ONDEMAND por ser $aºC menor de $1ºC"
       cpufreq-set -g ondemand
       demanda=false
       power=true
# Estas dos últimas es para no repertir constantemente la orden cpufrec

    fi
#   sleep 10
  fi

El segundo argumento estará en $2
  if [ $a -gt $2 ];  then
    if $power; then
       echo "Cambia a POWERSAVE por ser $aºC ser mayor de $2ºC"
       cpufreq-set -g powersave
       demanda=true
       power=false
    fi
  sleep 10
  fi

  echo "------------------fin--------------------"
  sleep 30
done

Como funciona. 

How it works

Si tecleamos sudo ./tempo.sh 60 70 saltará a powersave si se superan los 70ºC y saltará a ondemand si no llegan a los 60ºC

If you type sudo. / tempo.sh 60 70 jump to powersave if over 70 º C and jump to ondemand if you do not reach 60 ° C

~$ sudo ./tempo.sh 60 70

--------------------INI--------------------------
Temperatura actual: 59ºC
Cambia a ONDEMAND por ser 59ºC menor de 60ºC
--------------------fin--------------------------
.
.
.
--------------------INI--------------------------
Temperatura actual: 67ºC
--------------------fin--------------------------
.
.
.
--------------------INI--------------------------
Temperatura actual: 71ºC
Cambia a POWERSAVE por ser 71ºC ser mayor de 70ºC
--------------------fin--------------------------
.
.
.

Y ya está. Cuando nos cansemos, tecleamos en la consola ctrl+C y se para el programa por las bravas.


That's it. When we get tired, we type Ctrl + C in the console and the program will be over.






No hay comentarios:

Publicar un comentario