(mini tutorial) escalado de frecuencia de CPU en laptops

Foro para discutir sobre la documentación en linux (libros, ebooks, documentos, editoriales, autores, etc), así como temas publicados en el sitio.
Responder
Avatar de Usuario
4eVaH
Forista Nuevo
Forista Nuevo
Mensajes: 6
Registrado: Lun Jul 31, 2006 7:00 am

(mini tutorial) escalado de frecuencia de CPU en laptops

Mensaje por 4eVaH » Lun Jul 31, 2006 10:49 pm

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: Seleccionar todo

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


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: Seleccionar todo

 #!/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: Seleccionar todo

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: Seleccionar todo

 #!/bin/sh 
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

 
hacemos el script ejecutable

Código: Seleccionar todo

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: Seleccionar todo

 #!/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: Seleccionar todo

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: Seleccionar todo

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.
Avatar de Usuario
artzneo
Forista Ancestral
Forista Ancestral
Mensajes: 3188
Registrado: Dom Feb 12, 2006 8:00 am
Ubicación: @artzneo mount /dev/mex /mnt/gdl
Contactar:

Mensaje por artzneo » Mié Dic 17, 2008 10:50 pm

gracias. no lo habia visto , lo probare
Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: (mini tutorial) escalado de frecuencia de CPU en laptops

Mensaje por niky45 » Vie Feb 25, 2011 3:58 pm

por si le sirve a alguien (me he topado con el post buscando noseque, y creo que mi aporte puede ser util)

si para el stepping necesitas el modulo p4-clockmod, el stepping automatico (ondemand y conservative), no funciona (se estancan en la maxima frecuencia- al menos ondemand). esto es porque se supone que la latencia es muy alta, y cambiar no sale rentable.

pero en maquinas poco potentes (mi eeepc), puede ser util tener stepping (escalado), aun cuando la latencia sea alta.

hacerlo "de la forma normal" no funciona, por lo que he dicho: ondemand se queda ahi, y no hay quien lo mueva.

no obstante, estuve peleandome con conky, y la verdad que he conseguido un stepping automatico, un poco lento (a veces tarda un par de segundo es cambiar aunque se haya cumplido la condicion de salto), pero que funciona divinamente, y con un consumo de recursos minimo (en mi eeepc de 900 mhz y 512 Mb de ram, ni notas que esta corriendo, aun con la cpu a 225 Mhz que es el minimo para el que la tengo configurada. )

aqui teneis toda la info (no tengo ganas de volver a explicarlo... :?)
http://man-linux.comli.com/?p=241
:)
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje