Sacado de una web extranjera, funciona a la perfección (al menos en mi caso :D)
1.- Verificamos que la BIOS de nuestra placa base tiene habilitado el Cool'n'Quiet.
2.- Linux puede maneja el cambio de frecuencia dinámico con una serie de módulos que deben ser habilitados en la compilación del kernel, en el caso de Debian vienen precompilados por defecto, para las otras distribuciones lo mas probable es que también vengan precompilados, pero para salir de dudas…
$ nano /boot/config-$(uname -r)
En el fichero resultante, buscamos una sección como la que tenemos abajo:
#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=m
CONFIG_X86_POWERNOW_K6=m
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K7_ACPI=y
CONFIG_X86_POWERNOW_K8=m
CONFIG_X86_POWERNOW_K8_ACPI=y
CONFIG_X86_GX_SUSPMOD=m
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=m
CONFIG_X86_SPEEDSTEP_SMI=m
CONFIG_X86_P4_CLOCKMOD=m
CONFIG_X86_CPUFREQ_NFORCE2=m
CONFIG_X86_LONGRUN=m
CONFIG_X86_LONGHAUL=m
Lo que nos interesa son los CONFIG_X86_POWERNOW_Kx=m, (x= 6 7 8), deben estar asignados con m ("m" significa que se carga como módulo), si no estuvieran te tocará recompilar el kernel añadiendo los módulos que necesites.
3.- Instalar powernowd, que se encarga de gestionar los módulos necesarios:
$ aptitude install powernowd
4.- Arrancar el módulo necesario (en este caso para AMD64) mediante el comando:
$ modprobe powernow-k8
5.- Agregamos al fichero /etc/modules el módulo necesario:
$ nano /etc/modules
/etc/modules: kernel modules to load at boot time.
This file contains the names of kernel modules that should be loaded
at boot time, one per line. Lines beginning with "#" are ignored.
loop
sbp2
uvcvideo
powernow-k8
6.- Arrancamos powernowd:
$ sudo powernowd
powernowd: PowerNow Daemon v0.97, (c) 2003-2006 John Clemens
powernowd: Found 1 scalable unit: -- 1 'CPU' per scalable unit
powernowd: cpu0: 1000Mhz - 2000Mhz (3 steps)
7.- Comprobamos que funciona con gkrellm o mediante mediante el comando:
$ cat /proc/cpuinfo | grep -i mhz
En mi caso:
$ sudo cat /proc/cpuinfo |grep -i mhz
cpu MHz : 1000.000
Como mi procesador es un 3200+ trabaja a 2 GHz, podemos ver como ahora esta trabajando a una frecuencia menor (cuando no hace prácticamente nada), lo cual indica que hemos hecho un buen trabajo con los pasos anteriores.
8.- Ahora tenemos que indicar que queremos que la frecuencia del procesador sea según la necesidad de cálculo, esto lo logramos modificando el archivo "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", que por defecto tiene una única linea "userspace", remplazando esta única linea por "ondemand".
Este cambio no es permanente así que tenemos que cambiar el archivo cada vez que inicie el sistema, podemos añadir la siguiente linea a un archivo que siempre se ejecute al iniciar el sistema, un script, en Debian modificamos "/etc/rc.local".
$ nano /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
exit 0
```
Y ya está, con esto deberíamos tener ya funcionando la frecuencia dinámica del procesador que usa Cool'n'Quiet, en mi caso reduje la temperatura del procesador de 42 a 36 grados en idle.
Esto también funcionaría con otros procesadores que tengan tecnologías similares, lo único que debemos hacer es cargar el módulo correspondiente a nuestro procesador (en lugar de powernow-k8). Los módulos más comunes son:
AMD Sempron/Athlon/MP ( K7 )
Tipo de Socket: A
modprobe powernow-k7
AMD Duron/Sempron/Athlon/Opteron 64 ( K8 )
Tipos de Socket: 754, 939, 940, S1 ( 638 ), AM2 ( 940 ), F ( 1207 )
modprobe powernow-k8
Intel Core Duo, C2D, Pentium M
modprobe speedstep-centrino



