Subcore es un demonio raíz que utiliza varios sensores en el dispositivo para aplicar sistemáticamente los diferentes perfiles de uso. El objetivo es lograr un saldo basado en la carga de trabajo del usuario, en lugar de confiar en el gobernador de la CPU para hacer suposiciones de bias sobre la carga de trabajo actual.
Subcore lee y escribe a numerosos archivos de kernel para determinar qué perfil colocar Dispositivo en. Estas interfaces incluyen: • Carga de CPU activa
• Cores de CPU disponibles
• Gobernadores de CPU disponibles
• Frecuencias de CPU disponibles
• CARGA DE GPU disponible
• Frecuencias de GPU disponibles
• Capacidad de la batería actual
• Estado de la batería (carga / descarga)
• Estado de pantalla
◦ Notificador de estado (elección primaria)
◦ Suspenda de alimentación (opción secundaria)
◦ FrameBuffer Interface ( Elección terciaria)
• Memoria disponible del dispositivo
• Memoria de dispositivo MAX
• Programadores de IO disponibles
• Bloquear Reamahead
• Bloquear la swappiness
• Bloquear presión de caché
• Bloquear raciones sucias
• Entropía aleatoria
• Bloqueo excesivo
• Block Page Cluster
• Bloquee centisecas sucias
• Bloquear LMK
• Bloqueo de modo portátil
• Bloque de ksm
• Tunables interactivos generados de forma única
• Tunables de horario generados de forma única
sin alguna forma de predicción de usuarios, un juego podría comenzar a retrasarse por un momento durante una escena de carga, donde el requisito de carga se sumerge. Para contrarrestar esto, Subcore implementa un algoritmo de predicción de los usuarios que intenta mantener la fluidez en aplicaciones pesadas, incluso durante los momentos de baja carga. Funciona al determinar los promedios de carga repetitivos, y dormir más tiempo cuando la carga es consistente.
Dado que Subcore es una herramienta de bajo nivel (sin embargo, a través del usuario), tiene acceso directo a las estadísticas de la batería. Al cargar (y la pantalla ON), Subcore aumentará su rendimiento al perfil de mayor rendimiento para garantizar que el usuario experimenta la conformidad de UI / UX, sin tener en cuenta la limitación de energía. Además, cuando Subcore detecta que el dispositivo es a 15% de batería o menos, la mitad del LoadAvg, lo que significa que requiere el doble de una carga de CPU para ingresar al siguiente perfil. Del mismo modo, a un 5% de batería o menos, Subcore bloquea el dispositivo en el perfil más bajo, que se optimiza para dormir profundo o inactivo, sacrificando un trozo de rendimiento a la batería. Esta configuración se puede desactivar al alternar "Deshabilitar Power Aware" en la aplicación Subcore GUI.
Subcore implementa un nuevo concepto que llamo RUPG. Lo que hace que Subcore Especial sea el hecho de que es compatible con esencialmente todos los dispositivos. En tiempo de ejecución, Subcore inicialmente reúne montones de datos para generar numerosos perfiles específicos de dispositivos basados en diversos factores. Estos perfiles generados están fuertemente optimizados para cada dispositivo, de modo que cada usuario logre la experiencia de software más eficiente para el hardware / software disponible proporcionado. Estos perfiles se guardan luego en la memoria y están marcados para su eliminación cuando se sale de Subcore. Algunos ejemplos en los que se utiliza RUPG se utiliza en la generación de compensaciones LMK específicas del dispositivo (Minfree). Cada dispositivo tiene un tamaño de RAM diferente, por lo que Subcore debe calcular manualmente los tamaños de MinFree Optimum LMK para cada vector de desplazamiento (Muy_light -> Muy_aggress). Subcore también utiliza RUPG en la producción de los Tunables del Gobernador. Cada dispositivo tiene una tabla de frecuencia de CPU de SOC diferente, que debe ser contabilizada. Estos perfiles son generados automáticamente por el binario, por lo que el usuario no necesita sintonizar nada en sí mismo.
Subcore resulta en una mejora notable de la vida de la batería, durante la pantalla y la pantalla.
Me gustaría agradecer personalmente a todos mis probadores por sacrificar sus teléfonos en mi código. Todos y cada uno de ellos asistieron en la estabilidad del programa en sí.
@Dotmiracle
@efranz
@ kdrag0n
@ ashley117
@ abhirams2020
@mountaser_halak
Para Subcore para funcionar correctamente, asegúrese de que las siguientes cosas sean adecuadas: • Asegúrese de que Subcore siempre se le otorgue la raíz. • Use el modo de memoria baja si el dispositivo no tiene ZRAM o ZCache, o si nota Aplicaciones que se estrellaron / no se abren.
Los usuarios pueden contactarme en cualquier momento para comentarios.
Gmail: tylernij@gmail.com
Telegram: @tytyDRACO
XDA: @TYTYDRACO
- Refactor low-memory mode to Memory-Aware
- Improve memory-aware RAM management (increase cache pressure)