Ajustar el programador de tareas de Kernel para aumentar el rendimiento en Android [Parte 1]

Se entiende comúnmente que Android es un sistema operativo con mucho espacio para la configuración personalizada. Esto se debe en parte al uso del núcleo Linux en su núcleo. Hoy, vamos a discutir la configuración de una de las partes de nivel más bajo del kernel de Android: su programador de tareas. Con la configuración de programador de tareas adecuada, puede aumentar el rendimiento en Android. Sigue leyendo para descubrir exactamente cómo puedes modificar tu dispositivo para un mayor rendimiento.

Pero, ¿qué es precisamente el programador de tareas de un kernel?

El programador de tareas de un sistema es responsable de distribuir CPU entre una gran cantidad de tareas de ejecución. Lo hace al proporcionar a cada tarea un tiempo de ejecución en la CPU, así como cambiarla con uno más en intervalos de tiempo específicos. En general, hay dos tipos de programación de tareas: organización preventiva y programación cooperativa.

En la programación preventiva, el núcleo decide cuándo evitar (= intercambiar) una tarea de ejecución. Puede hacerlo en casi cualquier tipo de tiempo, basado en algoritmos de organización complejos. Por el contrario, en la programación cooperativa, cada tarea es responsable de notificar al núcleo cuando ya no requiere la CPU, así como, por lo tanto, se puede cambiar. En este caso, el núcleo solo es responsable de determinar al mejor candidato para organizar y ponerlo en la CPU.

Ver también: Mitos de Android y hechos: Busto a 10 leyendas metropolitanas

Tarea Arreglar en Android

Android se ejecuta en la parte superior de Linux, que es un núcleo preventivo. El programador de tareas se activa en un intervalo constante codificado y codificado, el intervalo de organización. Esto suele ser cada 10 milisegundos en dispositivos Android. Cuando se ejecuta el planificador, decide si la tarea de ejecución debe prevenirse o no, así como qué tarea de aquellos que esperan ejecutar deben tomar su ubicación en la CPU. Desde la versión 2.6.23, Linux Kernel utiliza un programador de tareas extremadamente avanzado, el planificador totalmente justo (CFS). CFS trata de proporcionar a cada tarea una buena cantidad de tiempo de ejecución en la CPU en función de una serie de factores, incluido el peso de la tarea y la prioridad. El algoritmo de este planificador es bastante complejo de entender. Es por eso que hay una cantidad muy pequeña de diseñadores de núcleos que contribuyen a su desarrollo.

Ajustar el planificador CFS

Requisitos previos

Acceso raíz

Una aplicación de emulador terminal

A pesar de su complejidad, CFS Scheduler ofrece algunas opciones de configuración. Ajustar estas elecciones podría afectar extremadamente el rendimiento del sistema. Tradicionalmente, la herramienta de línea de comandos SYSCTL se utiliza para examinar, así como alterar los parámetros del núcleo en tiempo de ejecución, incluidos los parámetros del planificador. Vamos a utilizar esta herramienta en nuestra guía, ya que viene preinstalada en la mayoría de los androides. Sin embargo, primero, requerimos hacerle una pequeña introducción:

Cómo utilizar SYSCTL

Parámetros de listado, así como sus valores actuales
Para enumerar todos los parámetros de núcleo ofrecidos con sus valores asignados, proporcione el comando cumplir con el comando dentro de una aplicación terminal:

sysctl -a
Para obtener solo los parámetros relacionados con el programador de tareas, podríamos proporcionar el comando cumplir con el comando:

sysctl -a | Grep “Sched”
Esto proporciona el cumplimiento de la salida en nuestro dispositivo de ejemplo:

La lista de parámetros es bastante grande. Solo discutiremos algunos de estos parámetros a continuación, que son los más importantes.

Cambiar un parámetro
Podemos modificar un parámetro que utiliza un comando en el tipo sysctl -W [parámetro] = valor donde el parámetro es el nombre del parámetro del núcleo y el valor es el nuevo valor. Por ejemplo:

sysctl -w kernel.sched_scaling_enable = 1

Lea a continuación para obtener más ejemplos de uso de SYSCTL. Tenga en cuenta que las modificaciones no lo hacen a través de un reinicio. Puede utilizar un script init.d para aplicar cualquier tipo de modificaciones necesarias en el momento del arranque. Por último, asegúrese de ejecutar comandos SYSCTL con privilegios raíz. Puede obtener privilegios raíz en una aplicación de terminal proporcionando el comando de cumplimiento:

SU
Parámetros básicos del planificador de tareas

No se pierda: Pasado y Future of the Linux Kernel en dispositivos móviles

kernel.sched_min_granularity_ns
Se garantiza que las tareas vinculadas al procesador se ejecutarán durante este tiempo mínimo antes de que sean previstas. Se considera que una tarea se encuentra en el procesador cuando el tiempo que lleva al total depende solo de la velocidad del procesador. Por ejemplo, una tarea que espera un paquete para aparecer con la web no es una tarea vinculada al procesador. En general, aumentar este valor aumentará el rendimiento de un sistema. Por otro lado, los valores tan altos pueden reducir la capacidad de respuesta del dispositivo. Este parámetro toma valores en nanosegundos. Por ejemplo, para configurarlo en 4000000 nanosegundos (4 milisegundos), podemos proporcionar el comando cumplir con:

sysctl -w kernel.sched_min_granularity_ns = 4000000
Según la documentación oficial del kernel de Linux, este es el programador CFS central sintonizable.

kernel.sched_latency_ns
Se garantiza que todas las tareas en la cola de ejecución del CFS se organizarán al menos cuando dentro de este período.null

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post