Escalado de frecuencia del procesador
Por Luis Peralta
Mi último descubrimiento respecto a la tecnología Centrino resulta ser de gran ayuda para que las baterias de tristessa me duren aún más. Se trata del Enhaced SpeedStep que llevan estos procesadores, aunque la tecnología también la tienen otros (como el P4, los Crusoe de Transmeta, …).
El caso es que, a día de hoy, el escalado de la frecuencia del procesador no funciona en los Centrino con un kernel estándar (2.4.22), por lo que me he tenido que bajar el último parche de [Alan Cox](https://es.wikipedia.com/wiki/Alan Cox), que ya incorpora el código necesario para hacerlo funcionar. Estuve buscando el parche suelto por ahí y lo que encontré no entraba limpio en un kernel a pelo.
Una vez parcheado el kernel, compilado y en funcionamiento tenemos un ficherito: /proc/cpufreq, que contiene lo siguiente:
peralta@tristessa:~$ cat /proc/cpufreq
minimum CPU frequency - maximum CPU frequency - policy
CPU 0 800000 kHz ( 50 %) - 1600000 kHz (100 %) - powersave
Lo que nos indica es la mínima frecuencia a la que le está permitido funcionar al procesador, la máxima y la política de funcionamiento. Ésta última puede ser o performace o powersave, dependiendo de si queremos meterle caña o ahorrar energía. Si, configurando el kernel, hemos activado la opción de poder retocar estos valores desde espacio de usuario, el ficherito será de lectura/escritura. Ésto, unido a los eventos que provoca el ACPI, nos permite limitar la potencia del procesador cuando no estemos conectados a la red eléctrica y despreocuparnos y obtener la máxima cuando lo estemos.
Estando conectados a la red eléctrica, nos gustaría obtener entre el 80% y el 100% de la potencia de tristessa, para ello hariamos:
root@tristessa:~# echo -n "0%80%100%performace" > /proc/cpufreq
y cuando estemos en modo autónomo entre un 50 y un 80%:
root@tristessa:~# echo -n "0%50%80%powersave" > /proc/cpufreq
Esta interfaz para interactuar con el código que controla la frecuencia
del procesador se considera obsoleto y los kernels 2.6 utilizarán algo
bastante más explícito dentro del sysfs (especie de nuevo
/proc
).