Ver Mensaje Individual
  #3  
Viejo 04/09/12, 08:22:11
Array

[xs_avatar]
pedestre pedestre no está en línea
Apolero y +
 
Fecha de registro: ene 2011
Localización: Madrid
Mensajes: 8,963
Modelo de smartphone: Galaxy J5(2016), ICONIA TAB A510
Tu operador: Vodafone
SOBRE GOBERNADORES Y SCHEDULERS (Programadores)

Una de las características que se han introducido en el Apolo para completar el speedmod ha sido la inclusión de gobernadores y schedulers.
No es inmediato el tema para alguien que llegue de nuevas y no sepa mucho de que va esto.
Quien quiera informarse sobre ellos:

¿Qué son?
Basicamente el scheduler se encarga de manejar las entradas y salidas en el sistema. Según mi experiencia no tiene mucha repercusión en el consumo aunque si en la estabilidad y rendimiento
El gobernador es el que controla en que frecuencia va a funcionar el procesador en cada momento. Digamos que el procesador podría funcionar siempre a máxima frecuencia. El rendimiento serái estupendo pero el consumo se dispararía. Lo que hace el gobernador es adaptar la frecuencia del procesador a las necesidades que se le exige al sistema en cada momento. Evidentemente esto tiene repercusiones en el rendimiento y el consumo y al final se trata de buscar un equilibrio entre ambos. Aunque puede que haya casos en que nos interese más ahorro o más rendimiento.

Más información en los siguientes enlaces:

Gobernadores
Schedulers

Para aquellos que se manejen en la lengua de Shakespeare: información en xda

Por defecto el Apolo lleva como el speedmod, el cfq como programador y el Oindemand como gobernador (lo mismo que las ROM Samsung).
Esta pareja funciona perfectamente y si no quieres complicarte la vida puedes dejarlo tal cual. De hecho en el speedmod no es posible cambiar el gobernador, ya que Hardcore no es partidario de ello.
Sin embargo, es posible que para muchos usuarios y a cambio de un poco de rendimiento aumentar algo la batería (la mayoría de las veces ni se nota en rendimiento).
Para ello podemos usar el cambio de gobernador y scheduler (se puede probar y comparar, no hay peligro en ello )

¿Cómo podemos elegir el gobernador y el scheduler?:

  • MÉTODO 1: El método más sencillo es con el uso de aplicaciones
Os pongo las dos más conocidas (hay más) :

- Voltaje Control: permite elegir ambos, pero no deja tocar parámetros de los gobernadores
- SetCPU: no permite elegir scheduler. Deja modificar parámetros de los gobernadores y elegir perfiles
Los parámetros de los gobernadores se pueden también cambiar desde el root explorer. Para ello hay que ir a la ruta:
"/sys/devices/system/cpu/cpufreq/[nombre del gobernador]"
También es posible cambiar el gobernador editando el fichero "scaling_governor" situado en:
"/sys/devices/system/cpu/cpu0/cpufreq/"
El archivo se edita de manera que dentro se pone el nombre del gobernador (por ejemplo conservative), se graba para aplicar los cambios y listo
Dentro del directorio se pueden editar los ficheros que contienen los parámetros.
Cada gobernador tiene sus parámetros propios. Para más información ir a los links que puse más arriba.

El scheduler es más complicado hacerlo mediante este método porque hay que editar varios ficheros para fijarlo. Para los schedulers es mejor usar un script (que explico más abajo) o bien el Voltaje Control.

Estos cambios duran hasta que se reinicia el sistema, en ese momento vuelven los parámetros por defecto establecidos en el kernel.

Para que no se pierdan al reiniciar, se pueden usar scripts
  • MÉTODO 2: Uso de scripts de Arranque
Un script de arranque es un fichero que se ejecuta al iniciarse el sistema. Por medio de este sistema podemos fijar el gobernador y scheduler que más nos guste y que se aplique siempre que se reinicie el sistema.
En el wuala de descargas hay algunos scripts.Se pueden descargar y para que funcionen hay que ponerlos en:

"/system/etc/init.d" (recordad montar el directorio como escritura en el root explorer para os deje copiar el archivo)

Importante: algunos navegadores añaden una extensión al nombre del archivo. En ese caso hay que quitar la extensión puesto que si no no se ejecuta el script.

El script se puede ejecutar en cualquier momento desde el root explorer. Se toca sobre el archivo y se elige la opción: "controlador de scripts de linux". Así podemos cambiar de una configuración a otra sin reiniciar, ni usar ninguna aplicación.

Los scripts del wuala pueden fijar 4 cosas :

- Frecuencia máxima de uso
- Scheduler
- Gobernador
- Parámetros del gobernador

Ejemplo: voy a usar el "noop" como scheduler y el "conservative" como gobernador como ejemplo para ilustrarlo.
Lo rojo son comentarios para explicar un poco lo que se pone en cada caso
En azul lo que hay que editar en el caso de querer poner otros valores

--------------------- EJEMPLO --------------------------------------------------------------------

#!/system/bin/sh ---> Esta línea indica que es un script ejecutable

sleep 30 ---> Tiempo de retardo para que de tiempo a arrancar el sistema

echo "200000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq ---> Minima frecuencia (no se puede cambiar en Apolo)
echo ""
echo "---------------"

echo "1200000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq ---> Máxima frecuencia (útil para underclock)
echo ""
echo "---------------"

echo "Poner el scheduler"

for i in `ls /sys/block/stl*` /sys/block/bml* /sys/block/mmcblk* /sys/block/mtdblock* ; do
echo "noop" > $i/queue/scheduler; ---> Aqui ponemos el scheduler
echo "$i/queue/scheduler";
done;
echo "---------------";

echo "conservative" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ---> Aqui ponemos el gobernador
echo ""
echo "---------------"

echo "BUSFREQ_STATIC_TOGGLE" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
echo ""
echo "---------------"
echo "BUS_STATIC_FREQS" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
echo ""
echo "---------------"

#Ajustando Valores del governador
echo "85" > /sys/devices/system/cpu/cpufreq/conservative/up_threshold; ---> Aqui ponemos los parámetros (una línea por parámetro)
echo "55" > /sys/devices/system/cpu/cpufreq/conservative/down_threshold; ---> Ejemplo down_threshold es el nombre del parámetro y 55 el valor que le damos
echo "5" > /sys/devices/system/cpu/cpufreq/conservative/freq_step; ---> El valor que va entrecomillas es lo que queremos cambiar
echo "1" > /sys/devices/system/cpu/cpufreq/conservative/sampling_down_factor; ---> Podemos añadir más líneas para otros parámetros que queramos cambiar
echo "50000" > /sys/devices/system/cpu/cpufreq/conservative/sampling_rate;

--------------------------------------------------------------------------------------------------

Espero que os haya sido de ayuda o al menos os haya aclarado cosas que hablamos en el hilo .
__________________


Última edición por pedestre Día 23/10/12 a las 15:51:49.
Responder Con Cita
Los siguientes 16 usuarios han agradecido a pedestre su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]