HOWTO Reducir la frecuencia del procesador
De Gentoo Linux Wiki
| Kernel & Hardware • Red y Servicios • Portage • Relacionado con el Sistema • Servidor X • Juegos • Misceláneos |
Tabla de contenidos |
[editar] Introducción
Aunque muchos habréis leido la guía oficial de Gentoo sobre el power save, creo que a más de un noob le vendrá bien, comencemos.
[editar] Configurando el kernel
Para empezar, necesitamos compilar el kernel con cpufreq:
| Código: Kernel |
Power management options (ACPI, APM) --->
CPU Frequency scaling --->
[*] CPU Frequency scaling
< > /proc/cpufreq interface (deprecated)
Default CPUFreq governor (userspace) --->
<*> 'performance' governor
<*> 'powersave' governor
--- 'userspace' governor for userspace frequency scaling
[ ] /proc/sys/cpu/ interface (2.4. / OLD)
<*> CPU frequency table helpers
--- CPUFreq processor drivers
<*> ACPI Processor P-States driver
[ ] /proc/acpi/processor/../performance interface (deprecated)
[En la lista que sigue elige el driver de tu CPU]
|
| Explicación: Advertencia |
|
Una advertencia, mi portátil es un Celeron Mobile a 2.50Ghz(no M, cuidado) y el driver que he de usar es el Intel Pentium 4 clock modulation, para los demás usa el Intel Speedstep on ICH-M chipsets (ioport interface) (para Pentium M) o el Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface). |
Los governors son los encargados de manejar la velocidad de la CPU y son tres:
- performance: Mantiene siempre la máxima velocidad de la CPU
- powersave: Mantiene siempre al mínimo la velocidad de la CPU
- userspace: Deja el trabajo a una aplicación en espacio de usuario
Bien, pasos habituales de recauchutado (recompilado) del kernel... y listo. Ya podemos comprobar que esto funciona (como root):
| Código: Consola |
|
$ cd /sys/devices/system/cpu/cpu0/cpufreq $ echo -n userspace > scaling_governor |
Con esto indicamos que queremos controlar nosotros la frecuencia.
| Código: Consola |
|
$ echo -n 1000000 > scaling_setspeed |
Y esto pone nuestra cpu a 1 Ghz (la velocidad va indicada en Khz). Para comprobar que todo va bien, hacemos:
| Código: Consola |
|
cat /proc/cpuinfo |
Si la velocidad no cambia, puede ser que tu version del kernel no muestre bien la velocidad, para poder comprobarlo (NOTA: necesitas activar el soporte para cpuid en el kernel para que esta aplicación funcione correctamente):
| Código: Consola |
|
$ emerge x86info $ x86info |
| Explicación: Advertencia |
|
Si el directorio cpufreq no existe en sys, es probable que o no habéis elegido el driver correcto o que vuestro procesador no está soportado. |
En este directorio además debe de haber varios ficheros en el directorio:
- cpuinfo_max_freq: Informa de la máxima frecuencia que puede alcanzar el procesador (no, con esto no vas a poder hacer overclocking... sorry)
- cpuinfo_min_freq: Informa de la mínima frecuencia que puede alcanzar el procesador (el mio baja a un mínimo de 300 Mhz!)
- scaling_available_frequencies: Aquí sale una lista de las frecuencias disponibles (no, el cambio no es continuo, debe ser por razones técnicas)
- scaling_available_governors: Lista los posibles governors de que disponemos. (en algunas arquitecturas sólo es posible el userspace)
- scaling_driver: Para saber cual es el driver que está usando actualmente
- scaling_governor: Con este archivo podemos o saber qué governor estamos usando actualmente o activar un governor en particular.
- scaling_max_freq: Este archivo nos informa y nos permite poner un límite al máximo de frecuencia al que queremos que llegue el procesador (Cpufreqd usa este archivo, como veremos más adelante)
- scaling_min_freq: Este archivo nos informa y nos permite poner un límite al mínimo de frecuencia que puede bajar nuestro procesador (cpufreqd también lo usa).
- scaling_setspeed: Este archivo sólo aparece tras activar el governor userspace, y con él podemos seleccionar la velocidad del procesador manualmente o que algún programa (como speedfreq en modo dinámico, ver más abajo) lo controle.
Lo siguiente es usar un daemon que se encargue del manejo de la velocidad, ya que a través de estos archivos es poco manejable.
[editar] Daemons
Tenemos actualmente 3 daemons:
[editar] Cpufreqd
| Código: Consola |
|
emerge cpufreqd && rc-update add cpufreqd default |
Cpufreqd es un governor que nos permite definir los máximos y los mínimos de velocidad, además del governor, según la carga de CPU, la batería y los programas que esten funcionando en el archivo /etc/cpufreqd.conf y que tiene esta pinta (es legible y sencillo, creo que no necesita mucha explicación)
| Archivo: /etc/cpufreqd.conf |
[General] pidfile=/var/run/cpufreqd.pid poll_interval=2 pm_type=acpi # Uncomment the following line to enable ACPI workaround (see cpufreqd.conf(5)) # acpi_workaround=1 verbosity=4 #(if you want a minimal logging set to 5) # Full performance [Profile] name=ac minfreq=600000 maxfreq=1400000 policy=performance # Maximum power saving [Profile] name=battery minfreq=600000 maxfreq=900000 policy=powersave # Constant frequency [Profile] name=dvd minfreq=900000 maxfreq=1100000 policy=powersave # Full performance when running on AC [Rule] name=ac_on ac=on profile=ac # Compiling should be fast if battery state is ok [Rule] name=compiling ac=off battery_interval=30-100 programs=emerge,make,gcc,cpp cpu_interval=0-100 profile=ac # watching DVD's gets sluggish with slow CPU frequency # Can also be used for games etc. [Rule] name=dvd_watching ac=off battery_interval=15-100 programs=xine,mplayer,avidemux,kaffeine,kmplayer cpu_interval=0-100 profile=dvd # If above doesn't apply, maximise power saving [Rule] name=battery_on ac=off battery_interval=0-100 cpu_interval=0-100 profile=battery |
[editar] Cpudyn
| Código: Consola |
|
emerge cpudyn && rc-update add cpudyn default |
Este governor está programado por un español y su función consiste en cambiar entre powersave y performance según la carga y respondiendo rápidamente a los eventos interactivos (ratón, teclado) para que se note mínimamente su efecto. Además también se encarga de apagar tus discos duros. Su fichero de configuración lo encontraréis en: /etc/conf.d/cpudyn
[editar] Speedfreq
| Código: Consola |
|
emerge speedfreq; rc-update add speedfreq default |
Este governor tiene varios modos de funcionamiento:
- auto: se autoconfigura según el estado de la batería (ACPI)
- fixed: pone la velocidad del procesador a un velocidad determinada
- powersave: activa el governor powersave
- performance: activa el governor performance
- dynamic: va aumentando y disminuyendo dinámicamente la frecuencia según la carga y el uso.
Este governor se configura en /etc/conf.d/speedfreq y podemos poner el modo por defecto:
| Archivo: /etc/conf.d/speedfreq |
# Select here how you want your CPU to be controlled # If you select auto you should use the battery.sh script # provided with this ebuild to control speed depending on A/C status # acceptable values: # powersave maximise power savings # performance maximise performance # dynamic adjust speed according to CPU load (default) # NNN set CPU to a fixed speed of NNN MHz # auto let the init script detect current battery status SPEEDFREQ_SPEED="dynamic" # For more options refer to `speedfreqd -h` SPEEDFREQ_OPTS="" |
y además tiene un cliente de nombre speedfreq que nos permitirá controlar al daemon.
[editar] Créditos
- Post original por ResetReboot
- Portado al wiki por Franco Gotusso.
