Ahora voy a escribir un mini tutorial de como activar el escalado de frecuencia de CPU, en otras palabras que se ajuste la frecuencia de la CPU segun la carga que tenga el sistema. Al disminuir la velocidad de la CPU (y por consecuencia el voltaje que usa) se tienen dos ventajas: Por un lado al funcionar parte del tiempo bajo máxima capacidad del procesador el sistema no se calienta como si estuviera corriendo a toda velocidad durante todo el tiempo y la otra ventaja es que se consume menos energía ya que no se esta siempre al máximo (bastante importante si usamos bateria). Claro que al disminuir la velocidad del procesador se pierde un poco de rendimiento (aunque no siempre estamos usando toda la capacidad, así que es conveniente hacerlo cuando el sistema no esta tan cargado).

Como es costumbre lo probé en una debian (si la de mi laptop, que tiene etch) 😉 así que a continuación el mini-tutorial.

1.- Hay que asegurarse de que el procesador aguante el escalado de frecuencia (como la gran mayoría de los procesadores que tienen las laptops y varios de los pc de sobremesa), luego hay que activar en el BIOS las opciones Cool’n’Quiet (AMD) o SpeedStep (Intel) estén activadas, puede que en algunos casos el BIOS no trae las opciones (como ocurren con la mía) por lo cual se puede suponer que están activadas por defecto e incluso pueden aparecer con otros nombres distintos a los mostrados arriba.

2.- Nota: De aquí en adelante casi todos los pasos se hacen como root, así que les recomiendo que se loguen un rato como root ( en el caso de los ubunteros usen mucho sudo)

Hay que desinstalar el software de escalado de espacio de usuario para no tener conflictos (ya que vamos a usar módulos del kernel):

# apt-get remove powernowd cpudyn

E instalamos un par de utilidades que vamos a usar (es probable que ya se encuentren instaladas)

# apt-get install cpufrequtils sysfsutils

3.- Hay que averiguar que procesador tiene el equipo (en mi caso es un Turion 64 mk-38), si no saben cual es el procesador, pueden obtener esa información haciendo un:

$ cat /proc/cpuinfo

Ahora dependiendo del procesador es el modulo que vamos a usar, los mas comunes son los siguientes:

  • AMD K6: powernow_k6
  • AMD K7 (Athlon, Duron, Sempron 32 bits, MP) : powernow_k7
  • MD K8 (Athlon 64, Turion 64, Sempron 64, Opteron 64) : powernow_k8
  • Pentium 4, Celeron D, Pentium D, Celeron M : p4_clockmod
  • Pentium M, Intel Core Duo, Core 2 Duo, Intel Pentium M: speedstep_centrino
  • También hay un módulo genérico, en el caso procesador no funciona con ninguno de los módulos mostrados arriba (o no es ninguno de ellos), puedes intentar, aunque no se puede asegurar que funcione, con el módulo llamado: acpi_cpufreq

Ahora hay que probar el modulo correspondiente, como en mi caso el turion 64 es de la familia K8 uso el modulo powernow_k8 (ustedes reemplacen por el modulo correspondiente a su procesador), haciendo lo siguiente:

# modprobe powernow_k8

4.- Ahora hay que configurar el tipo de escalado de CPU que vamos a usar dependiendo de nuestras necesidades, para saber cuales tenemos disponibles podemos hacer un:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

Se tiene como respuesta algo como “userspace powersave ondemand conservative performance”, si falta alguno es porque no esta disponible, así que usen solo alguno de los que aparezcan.

A continuación un resumen de que hace cada uno:

  • OnDemand (cpufreq_ondemand): Configura la CPU para que funcione dinámicamente según el uso de la aplicaciones que usemos (realiza saltos a la máxima velocidad en el momento en que un proceso lo requiera), es la más recomendada para un pc sobremesa.
  • Conservative (cpufreq_conservative): Parecida a ondemand pero un poco menos agresiva, ya hace el escalado de manera mucho más gradual que ondemand y es perfecta para portátiles.
  • Performance (cpufreq_performance): usa la máxima frecuencia de la CPU.
  • Powersave (cpufreq_powersave): Hace lo contrario, o sea configura la CPU a su mínima frecuencia.
  • userspace: usa un archivo definido por el usuario para el método de escalado de frecuencia, por defecto será ondemand en ese archivo.

Nota: En mi caso como se trata de un portátil voy a usar Conservative, así que todos los ejemplos están con conservative (si van a usar otro solo cambien la parte correspondiente)

Ahora probamos el modulo correspondiente:

# modprobe cpufreq_conservative

y luego lo dejamos fijado de la siguiente manera:

# echo conservative | tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Si queremos ver como queda todo configurado y cómo está en este momento podemos hacer:

$ cpufreq-info

Eso nos dará en la salida algo como:

analyzing CPU 0:
driver: powernow-k8
CPUs which need to switch frequency at the same time: 0
hardware limits: 800 MHz – 2.20 GHz
available frequency steps: 2.20 GHz, 2.00 GHz, 1.80 GHz, 1.60 GHz, 800 MHz
available cpufreq governors: conservative, ondemand, powersave, performance
current policy: frequency should be within 800 MHz and 2.20 GHz.
The governor “conservative” may decide which speed to use
within this range
current CPU frequency is 1.60 GHz.

5.- Ahora hay que añadir los módulos que vamos a usar en /etc/modules para que se carguen al inicio del sistema:

# echo powernow_k8 | tee -a /etc/modules
# echo cpufreq_conservative | tee -a /etc/modules

Y finalmente hay que asegurarse que se escoja por defecto el gobernador que escogimos al inicio, para eso hay que agregar en el archivo /etc/sysfs.conf una linea como esta
“devices/system/cpu/cpu0/cpufreq/scaling_governor = conservative”
Para hacerlo de un solo paso hacemos lo siguiente en un terminal:

# echo "devices/system/cpu/cpu0/cpufreq/scaling_governor =conservative" | tee -a /etc/sysfs.conf

Listo ya tienes activado el escalado de frecuencias.

6.- Observaciones extras:

  • Por defecto el applet de gnome muestra la frecuencia a la que esta trabajando el CPU, pero no deja cambiarla, en caso de que quieras cambiar la frecuencia o los gobernadores usando el applet hay que hacer un # dpkg-reconfigure gnome-applets y responder “Yes” para activar esta opción
  • Si quieres probar/cambiar el gobernador que usas desde una terminal, puedes hacer por ejemplo: # cpufreq-set -g ondemand y para cambiar la frecuencia por ejemplo # cpufreq-set -f 1600000 la dejaría en 1.6 GHz (eso si tengan cuidado de usar valores validos, como los que indica cpufreq-info)
Anuncios