Uncategorized

Ajustar el programador de tareas de Kernel para mejorar el rendimiento en Android [Parte 2]

Bienvenido a una guía de ajuste de Tareas de tareas de Kernel más para Android. En el artículo anterior, cubrimos algunas opciones de configuración de programador de tareas fundamentales, que se pueden ajustar manualmente para aumentar el rendimiento en cualquier tipo de dispositivo Android. En la situación que ya no ha revisado ese artículo, sugerimos encarecidamente hacerlo antes de continuar, ya que incluye información beneficiosa para comprender mucho mejor cómo funciona realmente el programador de tareas, así como exactamente cómo modificar el programador de tareas de Kernel.

Ajustar el programador de tareas de Kernel

Además de los parámetros fundamentales discutidos en el artículo anterior, Linux Task Scheduler implementa algunas características especiales que intentan mejorar su distribución justa de la potencia de procesamiento. Estas características no crean exactamente los mismos resultados en todos los sistemas, así como en los casos de uso, por lo que pueden habilitarse o deshabilitar en tiempo de ejecución. Se ofrecen con las depugas del núcleo. Sin embargo, no todos los kernels compatibles con las características de ajuste del programador. Puede descubrir si su núcleo admite alterar estas características ingresando el comando cumplir con el comando dentro de una aplicación terminal (como superusador):

CAT/SYS/KERNEL/DEBUG/SCHED_FEATURES
Si obtiene una salida como la siguiente, su kernel admite alterar las funciones de depuración en tiempo de ejecución:

Si obtiene una salida de error de “no hay datos o directorio”, puede intentar instalar los desbogados del kernel, en la situación que se ofrece, sin embargo, no se monta en el arranque:

Mount -t Debugfs Ninguno/Sys/Kernel/Debug
Si este comando no crea un error, puede intentar pasar el primer comando nuevamente.

Alternar una función de depuración del planificador

Para permitir una función de depuración del planificador, solo requiere componer su nombre dentro del archivo sched_features. Por ejemplo:

echo gentle_fair_sleepers>/sys/kernel/debug/sched_features
Para deshabilitar una función, también debe componer su nombre dentro del mismo archivo, sin embargo, con un “NO_” en el frente. Por ejemplo:

echo no_gentle_fair_sleepers>/sys/kernel/debug/sched_features

No te pierdas
Ideas de administración de Ram Android y trucos

Características de depuración de programador más típicas

No se garantiza que cierto núcleo admitirá todas las características del programador de tareas que se analizan a continuación. El soporte para las características varía entre las versiones del núcleo, así como entre las implementaciones de gadgets. Todas las características admitidas son las contenidas en la salida del comando “Cat/Sys/Kernel/Debug/Sched_Feature”. Las características que comienzan con un “NO_” son las compatibles sin embargo actualmente deshabilitadas.

Gentle_fair_sleepers

Esta función trata de minimizar el tiempo de ejecución de los durmientes (procesos que tienden a dormir durante mucho tiempo). Como resultado, se distribuye más tiempo de ejecución a tareas activas. Algunas personas informan que deshabilitar esta función puede mejorar la capacidad de respuesta en dispositivos de gama baja.

Affine_wakeups

Ponga una tarea que se despierte exactamente en la misma CPU que la tarea que la despertó. Esto supone que la nueva tarea funcionará en los mismos datos en la memoria que el anterior. Organizarlo en la misma CPU mejorará la localidad de caché (lea a continuación para obtener más información sobre la localidad de caché).

Rt_runtime_share

Requerimos una tarea más profunda que organice una comprensión para comprender esta característica: en Linux, existen diferentes prioridades de organización de tareas. La preocupación de la organización de una tarea define exactamente cuán importante es esa tarea, así como exactamente cuántos recursos obtendrán del programador. Muchas tareas se ejecutan utilizando la prioridad SHED_OTHER (SCHED_Normal en los núcleos más nuevos). Otras prioridades son SHED_BATCH, SCHED_RR, SCHED_FIFO y SHET_DEADLINE. Las últimas tres de estas prioridades son prioridades en tiempo real, creadas para tareas que requieren que se ejecute lo más rápido posible, así como se crean.

El programador de tareas asigna cada CPU dos parámetros especiales: RT_Runtime y RT_PERIOD. RT_PERIOD es el período de arreglo que es equivalente al ancho de banda de CPU al 100%. RT_Runtime es el momento en que cada CPU solo ejecuta tareas en tiempo real. Todas las demás tareas se ejecutan para el tiempo [RT_PERIOD – RT_RUNTIME]. Por lo general, el programador de tareas del núcleo proporciona el 95% del tiempo de una CPU para tareas en tiempo real, así como al 5% a todos los demás.

RT_Runtime_share permite que una CPU ejecute una tarea en tiempo real hasta el 100% del tiempo, tomando prestado RT_Runtime de otras CPU. Las CPU que prestan RT_Runtime pueden ejecutar tareas no realizadas por más tiempo. Algunos diseñadores de núcleos personalizados desactivan esta función de forma predeterminada, ya que puede hacer que una CPU no pueda atender tareas no realizadas estrictamente, así como disminuir el rendimiento.

Next_buddy

Generalmente en Linux, cuando una tarea se despierta, se adelanta (= toma la ubicación de) la tarea que se estaba ejecutando antes en la CPU (preemptación de despertar). Next_Buddy maneja la situación cuando la tarea que se despierta no causa preferencia. Cuando Next_Buddy está habilitado, la tarea que acaba de despertar se ejecutará en el próximo evento de organización. Esta función también mejora la localidad de caché.

Debe leer
Hackbench – Descubra el mejor kernel de rendimiento para Android

Last_buddy

Wnull