4eVaH Forista Nuevo


Miembro No. 16282 Registrado: Jul 31, 2006 Mensajes: 6
|
Publicado: Lun Jul 31, 2006 2:49 pm Asunto: (mini tutorial) escalado de frecuencia de CPU en laptops |
|
|
|
Bueno, la idea es aprovechar el escalado de frecuencia de nuestro portátil para hacer que este trabaje a unas determinadas frecuencias cuando usamos batería y a otras cuando esta conectado a la corriente. La utilidad principal de esto es tener una mayor duración de la batería cuando la estemos usando, y un mayor rendimiento de la máquina cuando trabajamos conectados a la pared.
Primero comentar que uso ubuntu dapper 6.06 usando un computador con sólo un microprocesador, pero creo que esto servirá para otras distros igualmente, no lo sé porque yo lo he echo basandome en ubuntu. Empezamos:
Todos los pasos los hacemos como "root"
Comprobamos los diferentes governors de que disponemos, para saber con que podemos trabajar. | Código: | cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_gover nors
|
la salida mas probable será "userspace powersave ondemand conservative performance"
powersave: usa la minima frecuenca de procesador.
ondemand: usa la máxima frecuencia del procesador pero se rebaja esta dependiendo del uso que le demos
conservative: usa la mínima frecuencia del procesador aumentandose esta dependiendo del uso que le demos
performance: usa la máxima frecuenca del procesador
userspace: usa un archivo definido por el usuario para el metodo de escalado de frecuencia, por defecto será ondemand en ese archivo.
Nos vamos a /etc/acpi/ donde vemos dos subdirectorios, uno es battery.d y otro es ac.d.
empezamos con battery.d:
Entramos en el directorio y creamos un fichero llamado cpus_scaling.sh en
el que ponemos lo siguiente:
| Código: | #!/bin/sh
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
| *Nota: podemos sustituir powersave por el governor que mejor nos venga para lo que queremos, arriba puse como actua cada uno (yo puse powersave)
hacemos el script ejecutable | Código: | | chmod +x cpus_scaling.sh |
y pasamos a ac.d:
Entramos al directorio ac.d y creamos un fichero llamado cpus_scaling.sh en el que ponemos lo siguiente:
| Código: | #!/bin/sh
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
hacemos el script ejecutable | Código: | | chmod +x cpus_scaling.sh |
Hasta ahora todo esta echo, pero queremos que esto se ejecute automaticamente al iniciar el sistema, asi que... seguimos los siguientes pasos:
Creamos un archivo en /etc/init.d/ llamado getpower con el siguiente código:
| Código: | #!/bin/bash
POWERSTATE=`grep -c off-line /proc/acpi/ac_adapter/ACAD/state`
if [ $POWERSTATE != 0 ]; then
/etc/acpi/battery.d/cpus_scaling.sh
else
/etc/acpi/ac.d/cpus_scaling.sh
fi |
cambiamos los permisos para hacerlo ejecutable | Código: | | chmod +x getpower |
Finalmente para todos las carpetas rc.d en /etc (rc2.d, rc3.d, rc4.d, rc5.d) excepto para rc1.d y rc6.d creamos un enlace simbólico al script getpower en /etc/init.d:
| Código: | ln -s /etc/init.d/getpower /etc/rc2.d/S99getpower
ln -s /etc/init.d/getpower /etc/rc3.d/S99getpower
ln -s /etc/init.d/getpower /etc/rc4.d/S99getpower
ln -s /etc/init.d/getpower /etc/rc5.d/S99getpower |
Espero que os sirva.
Para cualquier duda ya sabeis, ando por el foro. |
|