PDA

Ver la Versión Completa : [ RECOPILACION ] Gobernadores, I/O Scheduler, Otros ajustes y configuraciones para el kernel


Pollos
27/08/14, 00:50:49
Gobernadores, I/O Scheduler, Otros... - Team AOSPM
http://fotos.subefotos.com/b82ee8f137b1acf93184bc368769e2f2o.png


Gobernadores


Smartmax:
Se trata de un nuevo gobernador, que es una mezcla entre ondemand y smartassV2. Por defecto está configurado para el ahorro de batería por lo que este NO es un gobernador para jugar.

SmartassV2:
El gobernador tiene una "frecuencia ideal", y sube agresivamente hacia esa frecuencia y baja menos agresivamente. Utiliza diferentes frecuencias ideales para cuando la pantalla esta encendida y apagada, es decir awake_ideal_freq y sleep_ideal_freq. Este gobernador baja muy rapido para llegar a sleep_ideal_freq rápidamente mientras la pantalla está apagada y escala rápidamente a awake_ideal_freq cuando la pantalla está encendida. No hay límite máximo mientras la pantalla está apagada (a diferencia de Smartass). Así que toda la gama de frecuencias está disponible para el gobernador a utilizar durante awake y sleep. Este gobernador es un equilibrio entre el rendimiento y la batería.

Smartass:
Se basa en el concepto del gobernador Interactive. Smartass es una reescritura completa del código y mucho más. El rendimiento es a la par con el gobernador MIN/MAX viejo pero Smartass es un poco más sensible.

Ondemand:
Este gobernador sube rápidamente entre las frecuencias para subir la CPU a la máxima velocidad establecida por el usuario. Cuando lar carga de la CPU disminuye el gobernador va bajando lentamente hasta ponerse al mínimo hasta que el usuario le exige otra tarea y se vuelve a poner al máximo.

Ondemand tiene una excelente fluidez debido a su alta subida de frecuencia, pero también puede tener un efecto relativamente negativo en la vida de la batería frente a otros gobernantes. OnDemand es comúnmente elegido por los fabricantes de teléfonos inteligentes, ya que esta muy probado el gobernador, fiable y prácticamente garantiza una muy buena fluidez para el teléfono.

Intellidemand:
Intellidemand es otro gobernador que se basa en ondemand. El gobernador se comporta de manera diferente según el uso de la GPU. Cuando la GPU está muy ocupado (juegos, mapas, benchmarking, etc) intellidemand se comporta como Ondemand. Cuando GPU esta en modo 'ralentí', intellidemand limita la frecuencia máxima dependiendo de las frecuencias disponibles en el dispositivo para ahorrar batería, esto se conoce como modo de navegación.

En resumen, este es un ondemand inteligente que entra en modo de navegación para limitar la frecuencia máxima cuando la GPU está al ralentí, y se comporta como ondemand cuando la GPU está ocupada para ofrecer un rendimiento para juegos y tal. Intellidemand no salta a la frecuencia más alta cuando la pantalla está apagada.

Conservative:
Este gobernador intenta siempre ir a la frecuencia mas baja de la CPU lo antes possible. Este gobernador se define como "Ondemand lento", esto pude ayudar a entender mejor el gobernador. Por otro lado, puede ser bueno para la vida de la batería.

Hotplug:
Es un gobernador muy parecido a Ondemand, escala rápidamente a las frecuencias mas altas, aumentando el rendimiento, dejando siempre que no sea necesario la segunda cpu apagada, ahorrando en batería siempre que no se necesite, cuando necesita rendimiento entra en funcionamiento la segunda cpu.
Un buen sistema para los que navegan y leen mucho, puesto que mantiene siempre la cpu secundaria en out, consumiendo solo 1 cpu.

Lagfree:
El gobernador Lagfree es similar a ondemand. La diferencia principal es su optimización para llevarse mejor con la batería. Lagfree no se salta ningún paso de frecuencia mientras escala arriba o abajo. Recuerde que si hay un requerimiento para un repentino gasto de energía grande, lagfree no puede satisfacerlo mientras eleva la cpu a través de cada paso de alta frecuencia desde el actual. Algunos usuarios han reportado problemas de tirones en la reproducción de vídeo utilizando Lagfree.

OndemandX
Básicamente es un gobernador ondemand con un perfil de suspensión/despertar. Este gobernador es un ondemand con mejor comportamiento con la batería. Cuando la pantalla está apagada, la frecuencia máxima son 500Mhz.

Userspace:
En lugar de determinar automáticamente las frecuencias, permite al usuario configurar las frecuencias

Powersave:
Bloquea la frecuencia máxima a la frecuencia mínima. No se puede utilizar con la pantalla encendida o incluso con la pantalla apagada (si la frecuencia mínima de escalado es demasiado baja).

MIN/MAX:
Este gobernador utiliza el mínimo y máximo configurado no utiliza frecuencias intermedia, todo esto basado en la carga de procesos requerido por el sistema

InteractiveX:
El gobernador de InteractiveX está diseñado para cargas de trabajo sensibles a la latencia, interactivo. Este gobernador establece la velocidad de la CPU según su uso, similar a "Ondemand" y "Conservative”. Sin embargo el gobernador es más agresivo sobre el aumento de la velocidad de la CPU hasta en respuesta a la actividad intensiva de la CPU.

Interactive:
Disponible en los nuevos kernels y convirtiéndose en el predeterminado para algunos kernels oficiales. El gobernador interactivo es funcionalmente similar al gobernador de Ondemand con una mayor atención a la capacidad de respuesta.

Brazilianwax:
Similar a SmartassV2. Es más agresivo, más rendimiento, menos batería

Lazy:
Este gobernador de Ezekeel es básicamente un Ondemand con un parámetro adicional "min_time_state" para especificar el tiempo mínimo en que la CPU permanecerá en una frecuencia antes de aumentar hacia arriba/abajo. La idea es eliminar cualquier inestabilidad causada por la subida/bajada rápida. También tiene otro parámetro adicional "screenoff_maxfreq" en el cual se habilita la máxima frecuencia mientras que la pantalla está apagada

Max:
Permite a su teléfono correr a máxima velocidad, haciendo caso omiso de todas las funciones de ahorro de energía.

Performance:
Esto bloquea la CPU del teléfono a la frecuencia máxima. Esto puede sonar como una idea horrible, hay cada vez más pruebas que indican que la ejecución de un teléfono a su frecuencia máxima en todo momento permitirá un race-to-idle rapido. Race-to-idle es el proceso por el que un teléfono completa una tarea determinada, como la sincronización, y devuelve la CPU al estado de bajo consumo extremadamente eficiente. Esto todavía requiere de extensas pruebas, es un gobernador que implementa correctamente CPU's C-states (estados de bajo consumo).

Scary:
Un nuevo gobernador basándose en Conservative con algunas características Smartass, se escala de acuerdo a las leyes del Conservative. Por lo tanto, iniciará desde abajo, tomar una muestra de carga, si es superior al umbral, subirá solo una frecuencia a la vez, y lo mismo para bajar. Automáticamente limitara la frecuencia en pantalla pagada a 245Mhz, y si su mínima frecuencia es superior a 245mhz, se restablecerá el mínimo a 120 MHz mientras la pantalla está apagada y restaurarla la frecuencia al despertar de la pantalla. Así que pasa la mayor parte de su tiempo en las frecuencias más bajas. El objetivo de esto es conseguir la mejor vida de la batería con un rendimiento decente.

Smoothass:
El mismo gobernador que Smartass pero mucho más agresivo y en todos los ámbitos una mejor duración de la batería que es alrededor de un tercio mejor que el kernel stock.

SavagedZen:
Otro gobernador basado en smartassV2. Logra un buen equilibrio entre el rendimiento y la batería en comparación con brazilianwax.

LionHeart:
LionHeart es un gobernador Conservative que saco Samsung en su Update3 de los sources. El gobernador se comporta más para el rendimiento, a costa de la batería, ya que el escalado es muy agresivo.

LionHeartX:
LionHeartXestá basado en Lionheart, pero tiene algunos cambios en los valores ajustables y cuenta con un perfil de suspender basado en Smartass.

Pegasusq/Pegasusd:
El Pegasusq/Pegasusd es un gobernador multi-core basado en el gobernador Ondemand y ademas tiene un hot-plugging integrado. Los procesos en curso se van a una cola, sabemos que varios procesos se pueden ejecutar simultáneamente en el, estos procesos están activos en un array, los procesos con sus valores de prioridad (La prioridad la usa el task scheduler para luego decidir qué procesos se ejecutan después). Para asegurarse de que cada proceso tiene su parte justa de los recursos, cada uno funcionando durante un cierto período y finalmente se detiene y luego se coloca de nuevo en la cola hasta que sea su turno de nuevo.

HotplugX:
Es un Hotplug modificado y optimizado para cuando la pantalla esta apagada

AbissPlug:
Es un hotplug derivado, que funciona de la misma manera, pero con cambios en el ahorro de batería.

IntelliActive:
Basado en el gobernador Interactive de Google con ciertas mejoras, capacidad de "modo turbo" sin necesidad del PowerHAL, comprueba los nucleos apagados para mejorar la ejecución del gobernador y tiene 2 fases para evitar poner la CPU al máximo.

Pollos
27/08/14, 00:51:38
I/O Scheduler

La planificación de Entrada/Salida (Input/Output Scheduling, o I/O scheduling) consiste en el método mediante el cual los sistemas android deciden el orden en que se procesan las peticiones de lectura/escritura en el movil o unidad de almacenamiento. El objetivo de optimizar el sistema, eligiendo un algoritmo de planificación de Entrada/salida, es disminuir los tiempos de búsqueda (seek times), priorizar las peticiones de ciertos procesos de Entrada/salida.


Noop:
Gestiona todas las peticiones siguiendo el método FIFO (First In First Out), o dicho de otra forma, las primeras en llegar son las primeras en salir/ser atentidas. Lo mejor es utilizarlo con dispositivos de almacenamiento que no dependen de movimiento mecánico para acceder a los datos (si, como nuestras tarjetas flash). La ventaja aquí es que las unidades flash no requieren un reordenamiento de las múltiples peticiones I/O, a diferencia de los discos duros normales.

Ventajas:

Sirve las peticiones I/O con un menor número de ciclos de la CPU (¿mejora de la batería?).
Es el mejor para unidades flash.
Buen rendimiento en los sistemas db



Inconvenientes:

La reducción en el número de ciclos de la CPU es proporcional a la pérdida de rendimiento.



Deadline:
El objetivo es minimizar la latencia de I/O o la necesidad de una petición. Esto se logra medianta una política de “todos contra todos”, para ser justos entre múltiples peticiones de I/O. Se utilizan 5 colas de espera para reordenar las solicitudes entrantes.

Ventajas:

Se acerca bastante a un planificador a tiempo real.
Excelente en la reducción de latencia de peticiones I/O.
El mejor planificador para el acceso a bases de datos y consultas.
El requerimiento de “ancho de banda” de un proceso (el porcentaje de CPU que necesita) se puede calcular fácilmente.
Al igual que Noop, es un buen planificador para memorias flash.



Inconvenientes:

Cuando el sistema está sobrecargado, la elección de procesos se puede volver impredecible.



CFQ:
Completely Fair Queuing (o dicho de manera cutre “cola completamente equitativa”) mantiene una cola de procesos estable, repartiendo el porcentaje necesitado de la CPU en partes iguales entre todas las peticiones I/O. El intervalo de tiempo asignado a cada cola depende de la prioridad del proceso primario.

Ventajas:

Considerado el mejor ofreciendo un equilibrado rendimiento I/O.
El más fácil de configurar.
Excelente en sistemas multiprocesador.
El mejor rendimiento del sistema en bases de datos, después de Deadline.



Inconvenientes:

Algunos usuarios reportan que el escáner de medios tarda bastante en completarse usando CFQ. Esto podría deberse a que la distribución del uso de la CPU se reparte equitativamente entre todas las operaciones I/O durante el arranque y no se conceden prioridades.
Jitter (el peor caso de retardo) puede llegar a ser alto debido a la cantidad de tareas que necesitan acceso al disco.



SIO:
Es un scheduler I/O simple cuyo objetivo es mantener unos consumos mínimos y lograr un escaso restardo al atender solicitudes. Sio es una mezcla entre Noop y Deadline. No existe un reordenamiento de las peticiones.

Ventajas:

Simple, muy seguro.
Minimiza la necesidad de atención de las solicitudes.



Inconvenientes:

Velocidades lentas de lectura en memorias flash, en comparación con los otros schedulers.
La velocidad de las lecturas secuenciales en memorias flash tampoco es buena.



VR:
A diferencia de los otros schedulers, las peticiones síncronas y asíncronas no se tratan de forma separada. La siguiente solicitud en ser atendida será la que más cercana esté a la última atendida.

Ventajas:

Quizás es el mejor para benchmarking porque en el mejor de sus comportamientos el rendimiento es mejor.



Inconvenientes:

Los resultados de las variaciones de rendimiento pueden ser que esté por debajo del promedio a veces.
Menos fiable y más inestable.



BFQ:
En lugar de asignar intervalo de tiempo como CFQ, BFQ asigna como unos “presupuestos” estimativos. Garantiza el disco para el proceso activo hasta que el presupuesto expira. El presupuesto asignado a un proceso varía con el tiempo como una función de su comportamiento. (la traducción deja mucho que desear, si alguien la puede hacer mejor que me lo comente por PM).

Ventajas:

Se cree que es muy bueno para la tasa de transferencia de datos vía USB.
Se cree que es el mejor scheduler para la grabación de videos de HD y video streaming (por el menor “jitter” en comparación con CFQ y los otros).
Es considerado un scheduler I/O muy preciso.
Alcanza alrededor de un 30% más de rendimiento que CFQ.



Inconvenientes:

No es el mejor scheduler para hacer benchmarking.
El mayor “presupuesto” asignado a un proceso puede afectar a la experiencia de usuario y aumentar la latencia (retardos).



Anticipatory:
Anticipatory I/O es un algoritmo para la programación de entrada/salida. Su objetivo es aumentar la eficiencia "anticipando" las operaciones de lectura sincrónica.

ROW:
Favorecer las solicitudes de lectura sobre las de escritura eso disminuye la latencia al leer en gran medida.


Gráficas de comparcion entre los I/O Scheduler


Que se ha comprobado?
-Lectura secuencial (MB/s)
-Escritura secuencial (MB/s)
-Lectura aleatoria (IOPS)
-Escritura aleatoria (IOPS)

Las pruebas:
http://www.subeimagenes.com/img/sin-nombre-1073279.png

Conclusión:
Como podemos ver, los resultados no son muy diferentes de un gobernador a otro (diferencias no significativos para Random I/O). Aunque podemos ver que FIOPS es un poco mejor por encima de los otros (Zen, Sio, Noop y Row no están tan mal!). CFQ y VR están atrasados ​​en lectura secuencial pero mejor en escritura secuencial.

Pollos
27/08/14, 00:52:10
Otras opciones del kernel


CPU Control:

CPU Control Core:
CPU Min Frequency:
Permite regular la frequencia minima a la que la CPU puede llegar

CPU Max Frequency:
Permite regular la frequencia maxima a la que la CPU puede llegar

CPU Speed Limit:
Permite regular una frequencia maxima donde la CPU no pude sobrepasar aunque la opcion anterior este con mas Mhz

Suspend Defer Time:
Permite controlar el tiempo (En segundos) en que el movil entra en el estado screen off,

CPU Max Screen Off:
Cuando se activa esta opcion permite controlar la frequencia minima cuando la pantalla esta apagada, esta opcion va enlazada con "Suspend Defer Time"

CPU Boost Driver:
Al activar esta opcion aceleramos la CPU a un "modo turbo"

Boost:
Tiempo minimo en ms en la que la CPU esta en este estado.

Sync Threshold:
Cuando la carga de CPU cruza el umbral preestablecido, la CPU sube a la frecuencia elegida.

Input Boost:
Tiempo minimo cuando se detecta una entrada y la CPU entra en ese modo

Input Boost Frequency:
Esto aumentará su velocidad mínima de la CPU a la frecuencia seleccionada cuando se toca la pantalla o se pulsa un botón


GOV Control:

Aqui solo se pueden selecionar los gobernadores que estan explicado en el primer post, ademas depende el gobernador podemos editar su configuracion.

I/O Control:

I/O Control:
Read-ahead:
Establece el tamaño de lectura anticipada para la tarjeta SD interna

I/O Scheduler:
El I/O elegido decide cómo priorizar y manejar la solicitud (anteriormente descritos)


General I/O Tuneables:
Add Random:

I/O Stats:
Mantiene estadísticas de I/O para este dispositivo de almacenamiento. La desactivación romperá con el monitoreo I/O de las apps.

Rotational:
Tratar el dispositivo como si tuviera almacenamiento de rotación

No merges:
Esta opción te permite fusionar (prioridad) la cola del I/O

RQ Affinity:



GPU Control:

Current GPU Frequency:
GPU Frequency:
Indica la frecuencia en la que se encuentra la GPU en tiempo real.

GPU Max Frequency:
Permite regular la frequencia maxima a la que la GPU puede llegar


GPU Governor:
Permite elegir el gobernador de la GPU (Descritos anteriormente)

Pollos
27/08/14, 00:55:40
Poco a poco voy ir a actualizando los post pero son muchas cosas y en un dia no las tendre todas.

Cualquiera pude corregir, añadir y comentar!! Incluso poner sus configuraciones :)

rrodbue
27/08/14, 08:37:57
Gracias Pollos!! he metido el Kernel Decepticon y con el Synapse estoy un poco perdido.... ya en nexus4 ni lo tocaba, jajaja. Gracias por tu curro

Pollos
28/08/14, 22:11:48
Actualizado el hilo con muchísimas cosas nuevas! :)

Nonamed
30/08/14, 23:38:48
Adherimos.

Ludaloskpo
04/10/14, 06:24:39
Porque no ponen en stick este tema en el subforo de desarrollo del moto g normal , es bastante interesante saber cada detalle y no creo que la gente q no renga la versión 4g se pase por aquí a leer.

guzanu
06/10/14, 09:00:11
muy buen tema la informacion es muy importante

zeghio98
06/10/14, 19:25:36
Alguien sabe como restablecer las configuraciones de fábrica? (Con synapse) 😕

franq36
14/10/14, 08:55:21
Porque no ponen en stick este tema en el subforo de desarrollo del moto g normal , es bastante interesante saber cada detalle y no creo que la gente q no renga la versión 4g se pase por aquí a leer.


sería de gran ayuda sí :rolleyes:

jorge_kai
14/10/14, 09:36:33
Porque no ponen en stick este tema en el subforo de desarrollo del moto g normal , es bastante interesante saber cada detalle y no creo que la gente q no renga la versión 4g se pase por aquí a leer.
Pueden crearlo de nuevo allí si creen que es interesante.

Adnachiel
14/10/14, 16:06:35
He visto que algunas apps para configurar el kernel tienen la opción de CONTROL DE CONGESTIÓN TCP, seria bueno agregar esa información.

Pollos
24/10/14, 18:08:13
He visto que algunas apps para configurar el kernel tienen la opción de CONTROL DE CONGESTIÓN TCP, seria bueno agregar esa información.

Me lo apunto, voy un poco mal de tiempo a ver si esta tarde puedo hacer algo :ok:

arieligena
19/11/14, 16:39:07
Gracias, Pollos, buen post. Respecto a los I/O schedulers, FIOPS no aparece explicado y es el ganador :cry:

maximo86
08/05/15, 22:23:09
gran post si señor

ramcafe
10/05/15, 22:34:58
hola. me podrias ayudar flashe mi rom de un xt1040 y ahora ya no lo reconoce mi ordenador. ya cambie nuevamente la rom y sigue igual. ya descargue los drives de motorola