14 abril 2007

Ajustar la frecuencia del procesador (consola y gnome).

(Incluye cómo activarlo. Debian y Ubuntu)
Una de las cosas que me faltaba en Gnome era el poder ajustar la frecuencia del procesador. Esto con un procesador que lo permita, claro. Es bastante curioso ver que existe una miniaplicación que muestra la frecuencia, pero que no hace nada más. Pues resulta que sí hace algo más. El cambiar la frecuencia del procesador se considera que es algo que sólo debe hacerlo el superusuario, y no está directamente permitida en gnome por esa razón. En teoría.

Vamos a ver qué opciones tenemos con eso de las frecuencias. Vamos a una consola:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

Ahora ya sabemos que frecuencias podemos seleccionar. Ya sabemos que normalmente lo autoselecciona el núcleo según el uso que le damos al ordenador, pero queremos cambiarlo.

Actualizado 6/5/07. En Ubuntu está preinstalado y lo anterior funciona, pero por ejemplo en Debian tenemos que instalarlo. Es fácil. Veámoslo. Antes que nada, en Debian, dependiendo de cómo lo hayamos instalado, tendremos activo "sudo" o no. Por defecto no se usa, así que habría que escribir "su" previamente, y todos los "sudo" omitirlos. Vamos allá. Primero hay que saber que procesador tenemos. Si no lo tenemos claro:
cat /proc/cpuinfo

Para cada tipo tendremos que cargar un módulo distinto en el núcleo. Antes el control de frecuencias lo hacían los demonios powernowd o cpudyn, pero ahora lo lleva el núcleo, así que dichos programas son ya innecesarios. Veamos que tenemos que escribir para cada modelo:
AMD Sempron/Athlon/MP (K7) con "socket A" y "slot A"
sudo modprobe powernow-k7

Actualizado 20/6/07. He probado con un XP3000+ con placa controlada por nforce2 y no lo reconoce. Para este caso indica una frecuencia mínima y una máxima pero no sale lista de frecuencias, por lo que no acaba de marchar. Habría que usar:
sudo modprobe cpufreq-nforce2


AMD Duron/Sempron/Athlon/Opteron 64 (K8) con zócalos 754, 939, 940, S1 (638), AM2 (940) y F (1207) (el que uso)
sudo modprobe powernow-k8


Intel Core Duo y Pentium M
sudo modprobe speedstep-centrino


Intel Pentium 4 (no es ajuste de frecuencia real, pero funciona perfecto en los northwood)
sudo modprobe p4_clockmod


Si no tienes claro aún cual tienes que usar o no funciona con lo que has usado, usa:
sudo modprobe acpi-cpufreq

Luego hay que poner los gobernadores de frecuencias:
sudo modprobe cpufreq_conservative
sudo modprobe cpufreq_ondemand
sudo modprobe cpufreq_powersave
sudo modprobe cpufreq_stats
sudo modprobe cpufreq_userspace

Con esto podemos continuar con el artículo, para probar. Pero para tenerlo definitivamente funcionando hay que modificar el archivo /etc/modules:
sudo gedit /etc/modules

e incluir las siguientes líneas más el nombre del módulo que usamos para el procesador
cpufreq_conservative
cpufreq_ondemand
cpufreq_powersave
cpufreq_stats
cpufreq_userspace
#modulo para el procesador, en mi caso un k8
powernow-k8


Actualizado 28/5/07. Puede ser que debas actualizar la BIOS de tu ordenador para que el apoyo al ajuste de frecuencias funcione. Si nada de lo explicado aquí funciona, será lo que tendrás que hacer. Puede verse escribiendo en consola, para amd "dmesg|grep powernow" o para intel "dmesg|grep speedstep" si ha habido errores de bios.

Ya teniéndolo instalado, o con los módulos cargados, seguimos. Suele estar en el modo "userspace". Veamos los gobernadores de frecuencias que tenemos disponibles:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

Nos saldrán los siguientes (o los que hayamos cargado en el paso anterior:
userspace powersave ondemand conservative performance.

El primero es el modo por defecto, como decía antes. Este modo es en principio el mismo que "ondemand", a no ser que ajustemos la frecuencia manualmente, caso en que se mantendrá así a no ser que cambiemos el gobernador.
"powersave" mantendrá la frecuencia siempre al mínimo, hagamos lo que hagamos.
"ondemand" ajusta la velocidad al mínimo siempre que no necesitemos más potencia para alguna tarea.
"conservative" mantiene la frecuencia tal como está a no ser que cambie totalmente el uso del ordenador durante un tiempo respecto al momento anterior.
"performance" mantiene la frecuencia siempre al máximo.

Lo que decía de cambiarlo a mano puede ser con la miniaplicación del panel (como explicaré luego, que es el objeto de este artículo) o con la consola de un par de maneras. Primero la directa:
Indicamos la frecuencia mínima. Hemos de ser el superusuario.
echo frecuencia_de_las_de_la_lista > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

También podemos cambiar el gobernador de frecuencias.
echo gobernador_de_los_de_la_lista > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Todos los modos son muy configurables, pudiéndose modificar el tiempo que tardará en cambiar de frecuencia y demás. De todas formas creo que los modos predefinidos son suficientes.

En lugar de tanto chorro de caracteres, quizá sea más cómodo usar el otro método, la orden cpufreq-selector. Para cambiar la frecuencia:
sudo cpufreq-selector -f frecuencia_de_las_de_la_lista

Y para el gobernador:
sudo cpufreq-selector -g gobernador_de_los_de_la_lista

Si no lo tenemos instalado (en debian), previamente debemos escribir:
sudo apt-get install cpufrequtils

y además, tendremos que editar /etc/default/cpufrequtils,
sudo gedit /etc/default/cpufrequtils

y sustituir, donde dice ENABLE="false" tenemos que poner ENABLE="true". Creo que también hay que poner qué gobernador hay que usar, pero eso tendré que mirarlo otro día.

Bueno, vamos al caso de Gnome por fin. Insertamos en el panel el "Monitor de frecuencia de la CPU" y vemos que no podemos ajustar nada de nada. Y queremos poder hacerlo. Esto es válido para debian y ubuntu:
sudo dpkg-reconfigure gnome-applets

Nos preguntará si queremos ponerle el bit SUID a cpufreq-selector. Le decimos que sí y ahora veremos cambios en la miniaplicación. Vamos a preferencias del monitor de frecuencia y ahora podemos seleccionar qué queremos poder configurar.

Y digo yo que por qué no le aplicarán el gksudo si lo ven un fallo de seguridad, para que pregunte la contraseña cada vez, y podemos dar permisos por usuarios para que puedan tocarlo. En fin. Ellos sabrán.

1 comentario:

Christopher dijo...

Gracias, me sirvio mucho.