Android
Optimización del núcleo de Android
Buscar..
Configuración de RAM baja
Android ahora es compatible con dispositivos con 512 MB de RAM. Esta documentación está destinada a ayudar a los OEM a optimizar y configurar Android 4.4 para dispositivos con poca memoria. Varias de estas optimizaciones son lo suficientemente genéricas para que también puedan aplicarse a versiones anteriores.
Habilitar bandera de dispositivo bajo de RAM
Estamos introduciendo una nueva API llamada ActivityManager.isLowRamDevice () para que las aplicaciones determinen si deberían desactivar las funciones específicas de uso intensivo de memoria que funcionan mal en dispositivos con poca memoria.
Para dispositivos de 512 MB, se espera que devuelva esta API: "verdadero" Puede activarse mediante la siguiente propiedad del sistema en el archivo make del dispositivo.
PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true
Deshabilitar JIT
El uso de la memoria JIT en todo el sistema depende de la cantidad de aplicaciones que se ejecutan y de la huella del código de esas aplicaciones. El JIT establece un tamaño máximo de caché de código traducido y toca las páginas que contiene según sea necesario. Los costos de JIT en algún lugar entre 3M y 6M en un sistema de ejecución típico.
Las aplicaciones grandes tienden a maximizar la memoria caché de código bastante rápidamente (lo que por defecto ha sido 1M). En promedio, el uso del caché JIT se ejecuta en algún lugar entre 100K y 200K bytes por aplicación. Reducir el tamaño máximo de la memoria caché puede ayudar de alguna manera con el uso de la memoria, pero si se establece demasiado bajo, enviará el JIT a un modo de paliza. Para los dispositivos con muy poca memoria, recomendamos que el JIT se desactive por completo.
Esto se puede lograr agregando la siguiente línea al archivo make del producto:
PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.jit.codecachesize=0
Cómo agregar un regulador de CPU
El gobernador de la CPU en sí mismo es solo un archivo C, que se encuentra en kernel_source / drivers / cpufreq /, por ejemplo: cpufreq_smartass2.c. Usted mismo es responsable de encontrar el gobernador (busque en un repositorio de kernel existente para su dispositivo). Pero para poder llamar y compilar este archivo en su kernel, deberá realizar los siguientes cambios:
- Copie su archivo de gobernador (cpufreq_govname.c) y vaya a kernel_source / drivers / cpufreq, ahora péguelo.
- y abra Kconfig (esta es la interfaz del diseño del menú de configuración) cuando agregue un kernel, desea que aparezca en su configuración. Puedes hacerlo agregando la elección de gobernador.
config CPU_FREQ_GOV_GOVNAMEHERE
tristate "'gov_name_lowercase' cpufreq governor"
depends on CPU_FREQ
help
governor' - a custom governor!
por ejemplo, para smartassV2.
config CPU_FREQ_GOV_SMARTASS2
tristate "'smartassV2' cpufreq governor"
depends on CPU_FREQ
help
'smartassV2' - a "smart" optimized governor!
Además de agregar la opción, también debe declarar la posibilidad de que el gobernador sea elegido como gobernador predeterminado.
config CPU_FREQ_DEFAULT_GOV_GOVNAMEHERE
bool "gov_name_lowercase"
select CPU_FREQ_GOV_GOVNAMEHERE
help
Use the CPUFreq governor 'govname' as default.
por ejemplo, para smartassV2.
config CPU_FREQ_DEFAULT_GOV_SMARTASS2
bool "smartass2"
select CPU_FREQ_GOV_SMARTASS2
help
Use the CPUFreq governor 'smartassV2' as default.
- ¿No puedes encontrar el lugar correcto para ponerlo? Simplemente busque “CPU_FREQ_GOV_CONSERVATIVE”
, y coloque el código debajo, lo mismo cuenta para “CPU_FREQ_DEFAULT_GOV_CONSERVATIVE”
Ahora que Kconfig ha terminado, puede guardar y cerrar el archivo.
- Mientras
/drivers/cpufreq
carpeta/drivers/cpufreq
, abra Makefile. En Makefile, agregue la línea correspondiente a su CPU Governor. por ejemplo:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2) += cpufreq_smartass2.o
Tenga en cuenta que no llama al archivo C nativo, sino al archivo O! que es el archivo C compilado. Guarda el archivo.
- Mover a:
kernel_source/includes/linux
. Ahora abrecpufreq.h
Desplázate hacia abajo hasta que veas algo como:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND)
extern struct cpufreq_governor cpufreq_gov_ondemand;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_ondemand)
(otros gobernadores de la CPU también se enumeran allí)
Ahora agregue su entrada con el Gobernador de CPU seleccionado, ejemplo:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS2)
extern struct cpufreq_governor cpufreq_gov_smartass2;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass2)
Guarde el archivo y ciérrelo.
La configuración inicial del regulador de CPU ahora está completa. cuando haya realizado todos los pasos correctamente, debería poder elegir su gobernador en el menú ( menuconfig
, xconfig
, gconfig
, nconfig
). Una vez comprobado en el menú se incluirá en el kernel.
Confirme que es casi lo mismo que en las instrucciones anteriores: agregue smartassV2 y lulzactive Governor commit
Programadores de E / S
Puede mejorar su kernel agregando nuevos programadores de E / S si es necesario. A nivel mundial, los gobernadores y planificadores son los mismos; ambos proporcionan una manera de cómo debería funcionar el sistema. Sin embargo, para los programadores se trata del flujo de datos de entrada / salida, excepto por la configuración de la CPU. Los programadores de E / S deciden cómo se programará una próxima actividad de E / S. Los programadores estándar, como noop o cfq, tienen un rendimiento muy razonable.
Los programadores de E / S se pueden encontrar en kernel_source / block .
Copie su archivo del programador de E / S (por ejemplo, sio-iosched.c ) y navegue hasta kernel_source / block . Pegue el archivo del planificador allí.
Ahora abra Kconfig.iosched y agregue su elección a Kconfig , por ejemplo para SIO :
config IOSCHED_SIO tristate "Simple I/O scheduler" default y ---help--- The Simple I/O scheduler is an extremely simple scheduler, based on noop and deadline, that relies on deadlines to ensure fairness. The algorithm does not do any sorting but basic merging, trying to keep a minimum overhead. It is aimed mainly for aleatory access devices (eg: flash devices).
A continuación, establezca la opción de elección predeterminada de la siguiente manera:
default "sio" if DEFAULT_SIO
Guarda el archivo.
Abra el archivo Makefile en kernel_source / block / y simplemente agregue la siguiente línea para SIO :
obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
Guarda el archivo y listo! Los programadores de E / S ahora deberían aparecer en la configuración del menú.
Compromiso similar en GitHub: se agregó el planificador de E / S simple .