martes, 13 de mayo de 2008

El demonio cpufreqd

Me gusta probar nuevas distribuciones en mi portátil, aunque me cuesta salir de las "debian-based". El asunto es que aunque no tengo una gran máquina (un Centrino 1.7 Ghz) me gusta aprovechar las cosas al máximo.

Este procesador, como casi todos los de portátiles, tiene una función llamada escalado de frequencia que es una tecnología que permite hacer trabajar el procesador a frecuencias menores con el objetivo de ahorrar batería al mismo tiempo que disminuye el calentamiento.

Hay muchas formas de retocar esta funcionalidad, a mi me gusta cpufreqd por su sencillez. Este tipo de aplicaciones definen una política de comportamiento para diferentes estados como pueden ser:
  • Portátil conectado a la red eléctrica.
  • Portátil en modo batería con carga entre 70-100 %
  • Portatil con modo batería con carga menor al 20%
  • ...
El motivo que me hizo "descubrir" esta aplicación fueron los problemas tanto con Debian como con Ubuntu que tenía en mi portátil. Por algún motivo dichas distribuciones configuraban mi máquina para funcionar siempre a la máxima frecuencia (1.7Ghz) cuando está conectada a la red eléctrica.

Aparentemente esto es lo deseable ya que así rinde al máximo, pero no para mí. Cuando trabajo con el portátil suelo estar navegando o editando código, tareas que, sobre todo la última, no necesitan el procesador a pleno rendimiento y que sin embargo si necesitan, sobre todo la última, un mínimo de concentración. Y aquí es donde surge mi problema, ya sea por la edad del portátil o porque es un Amilo Pro (no es la gama más alta del mercado), el ventilador hace mucho ruido, y cuando el procesador trabaja a 1.7Ghz hace que esté continuamente haciendo el pulsing (arrancando y frenando a ritmo constante).

El ruido es bastante molesto, así que me puse manos a la obra para solucionar el problema. Instalé los paquetes cpufreqd y cpufreq-utils que están disponibles via apt. Eliminé también el paquete powernowd que es el que traen las últimas distribuciones basadas en Ubuntu.

El primer paso es ver si el demonio cpufreqd es capaz de arrancar, en mi caso no arrancaba porque le tenía que indicar el tipo de tecnología de mi procesador, la cual es speedstep-centrino. Para ello hay que editar el fichero /etc/default/cpufreq.d y añadir la línea CPUFREQ_CPU_MODULE="speedstep-centrino". Por supuesto hay que reiniciar el demonio para que los cambios surtan efecto.

Una herramienta útil es cpufreq-info con la que podemos saber el estado actual del procesador y las posibilidades que da. En mi caso la respuesta es:

cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which need to switch frequency at the same time: 0
hardware limits: 800 MHz - 1.73 GHz
available frequency steps: 1.73 GHz, 1.33 GHz, 1.07 GHz, 800 MHz
available cpufreq governors: conservative, ondemand, powersave, userspace, performance
current policy: frequency should be within 800 MHz and 1.73 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.

Son importantes las líneas hardware limits: 800 MHz - 1.73 GHz y available frequency steps: 1.73 GHz, 1.33 GHz, 1.07 GHz, 800 MHz que marcan las posibilidades del procesador que tengamos.

Sabiendo las posibilidades de nuestra máquina, lo único que resta hacer es editar el fichero /etc/cpufreqd.conf y elegir la política que queremos o editar la nuestra propia. En mi caso sustituí la Perfomance High que siempre mantenía el procesador al 100% por On Demand High, que pone la frecuencia entre 800 Mhz y 1.7Ghz según la demanda del sistema. Como se puede observar al escribir esto estaba funcionando a 800Mhz estando conectado a la red.

Silencioso y eficiente ;)

2 comentarios:

Ces dijo...

Hola!

En primer luger feliz año ;) me ha sido muy útil tu entrada, de hecho te comento mi caso, mi ordenador es un netbook con procesador Atom, y bueno, he hecho más o menos el ajuste que comentas:

-En donde ponía Performance Hight lo he cambiado por On Demand Hight.

-He comentado (añadir #) la sección Performance Hight y descomentado On Demand Hight. ¿Esto había que hacerlo o no sirve de nada? es que lo creí conveniente...

El caso es que parece que me rinde un poco mejor el netbook, el ventilador se comporta un poco mejor ;)

Un saludo!

Ferran dijo...

Aunque esta entrada ya tiene algún tiempo, he de decirte que me ha sido de mucha ayuda. Ya he configurado correctamente los perfiles del cpufreqd sin ningun problema y la bateria del ordenador me lo ha agradecido.

Una entrada muy útil y muy bien explicada. Felicidades!