Android impulsa el rendimiento del kernel con AutoFDO: más rápido y eficiente

Descubre cómo Android está implementando AutoFDO en el kernel para lograr una experiencia más fluida, arranques más rápidos y mejor batería.

Cristian Do Carmo Rodríguez
11 de mar. de 2026
5 min de lectura
AndroidGoogleSoftwareNuevas tecnologíasAvanzado
Photo by Denny Müller / Unsplash

En el constante empeño de Google por ofrecer una experiencia móvil sin igual, el equipo de herramientas LLVM de Android no cesa en su búsqueda de optimizaciones. Aunque gran parte de su trabajo se centra en el espacio de usuario, el corazón del sistema, el kernel, es ahora el objetivo de una importante mejora: la implementación de la Optimización Dirigida por Retroalimentación Automática (AutoFDO).

¿Qué es AutoFDO y por qué es tan crucial?

Cuando un software se compila de manera estándar, el compilador toma miles de decisiones, como si incluir una función o qué rama de una condición es más probable que se ejecute, basándose en pistas estáticas del código. Si bien estas heurísticas son útiles, no siempre reflejan con precisión cómo se ejecutará el código en el uso real de un teléfono.

person holding computer cell processor
Photo by Brian Kostiuk / Unsplash

AutoFDO revoluciona este proceso. Utiliza patrones de ejecución reales para guiar al compilador. Estos patrones representan las rutas de instrucción más comunes que sigue el código durante el uso real, capturadas mediante el registro del historial de ramificación de la CPU. En el caso del kernel, estos datos se sintetizan en un entorno de laboratorio utilizando cargas de trabajo representativas, como la ejecución de las 100 aplicaciones más populares.

Esto permite identificar qué partes del código están «calientes» (frecuentemente usadas) y cuáles están «frías» (poco usadas). Al reconstruir el kernel con estos perfiles, el compilador puede tomar decisiones de optimización mucho más inteligentes y adaptadas a las cargas de trabajo reales de Android.

El impacto del kernel en Android

Para entender la magnitud de esta optimización, hay que considerar algunos datos clave:

  • En Android, el kernel representa aproximadamente el 40% del tiempo de CPU.
  • AutoFDO ya se utiliza para optimizar ejecutables y bibliotecas nativas en el espacio de usuario, logrando una mejora de aproximadamente el 4% en el inicio de aplicaciones «en frío» y una reducción del 1% en el tiempo de arranque.

Estas no son solo cifras teóricas. Se traducen en una interfaz más ágil, un cambio de aplicaciones más rápido, una mayor duración de la batería y un dispositivo globalmente más receptivo para el usuario final.

Así funciona la optimización: un proceso robusto

La estrategia de implementación de AutoFDO implica un sofisticado proceso para asegurar que los perfiles se mantengan relevantes y el rendimiento estable.

person holding black android smartphone
Photo by Daniel Romero / Unsplash

Recolección de perfiles

Mientras que para los binarios del espacio de usuario se utilizan dispositivos de prueba internos, para la Imagen Genérica del Kernel (GKI) se ha optado por un entorno de laboratorio controlado. Esto permite actualizaciones flexibles e inmediatas, independientes de los ciclos de lanzamiento de los dispositivos.

Además, las pruebas confirman que estos datos de laboratorio ofrecen ganancias de rendimiento comparables a las de las flotas en el mundo real.

  • Cargas de trabajo: Se construye una carga de trabajo representativa utilizando las 100 aplicaciones más populares del Android App Compatibility Test Suite (C-Suite). Se enfoca en: la optimización del lanzamiento de aplicaciones y la monitorización de todo el sistema para capturar actividades en segundo plano y comunicaciones entre procesos.
  • Validación: Esta carga de trabajo sintetizada muestra un 85% de similitud con los patrones de ejecución recopilados de las flotas internas de Google.

Procesamiento de perfiles

Los datos sin procesar se post-procesan para asegurar su limpieza y eficacia antes de ser utilizados por el compilador.

  • Agregación: Consolidación de datos de múltiples ejecuciones de prueba y dispositivos.
  • Conversión y filtrado: Transformación de los rastros en el formato de perfil AutoFDO, filtrando símbolos no deseados.
  • Recorte de perfiles: Eliminación de datos para funciones «frías», permitiendo que utilicen la optimización estándar. Esto previene regresiones en código poco usado y evita aumentos innecesarios en el tamaño del binario.

Pruebas y verificación

Antes de la implementación, los perfiles se someten a una verificación rigurosa para asegurar ganancias de rendimiento consistentes sin riesgos de estabilidad.

  • Análisis de perfil y binario: Se compara estrictamente el contenido del nuevo perfil (funciones «calientes», conteos de muestras, tamaño del perfil) con versiones anteriores. También se construye una nueva imagen del kernel para analizar los binarios y asegurar que los cambios sean consistentes con las expectativas.
  • Verificación de rendimiento: Se ejecutan benchmarks específicos en la nueva imagen del kernel para confirmar que mantiene las mejoras de rendimiento establecidas por las líneas base anteriores.
green and red metal trash bins
Photo by Guido Coppa / Unsplash

Actualizaciones continuas para un rendimiento óptimo

El código evoluciona con el tiempo, por lo que un perfil estático perdería eficacia. Para mantener el máximo rendimiento, este proceso se ejecuta continuamente para impulsar actualizaciones regulares.

Se refrescan los perfiles en las ramas LTS del kernel de Android antes de cada lanzamiento de GKI, asegurando que cada compilación incluya los últimos datos de perfil. Actualmente, estas actualizaciones se están implementando en las ramas android16-6.12 y android15-6.6, y se expandirá el soporte a versiones GKI más recientes, como la próxima android17-6.18.

Garantizando la estabilidad: una prioridad

Una pregunta común con la optimización guiada por perfiles es si introduce riesgos de estabilidad. Dado que AutoFDO influye principalmente en las heurísticas del compilador (como la inclusión de funciones y el diseño del código) en lugar de alterar la lógica del código fuente, preserva la integridad funcional del kernel.

Esta tecnología ya ha sido probada a gran escala, sirviendo como optimización estándar para las bibliotecas de la plataforma Android, ChromeOS y la propia infraestructura de servidores de Google durante años.

Para garantizar aún más un comportamiento consistente, se aplica una estrategia «conservadora por defecto». Las funciones no capturadas en los perfiles de alta fidelidad se optimizan utilizando métodos estándar del compilador. Esto asegura que las partes «frías» o raramente ejecutadas del kernel se comporten exactamente como lo harían en una compilación estándar, previniendo regresiones de rendimiento o comportamientos inesperados en casos extremos.

El futuro de AutoFDO en el kernel de Android

Aunque AutoFDO ya se está implementando en las ramas android16-6.12 y android15-6.6, Google vislumbra varias vías prometedoras para mejorar aún más la tecnología.

green Android robot toy on grass
Photo by Alexander London / Unsplash

Alcance ampliado

Se espera desplegar perfiles AutoFDO en versiones más recientes del kernel GKI y objetivos de compilación adicionales más allá del soporte actual para aarch64.

Optimización de módulos GKI

Actualmente, la optimización se centra en el binario principal del kernel (vmlinux). Expandir AutoFDO a los módulos GKI podría aportar beneficios de rendimiento a una parte mayor del subsistema del kernel.

Soporte para módulos de proveedores

También se está explorando el soporte de AutoFDO para módulos de proveedores construidos utilizando el Kit de Desarrollo de Controladores (DDK). Con el soporte ya disponible en el sistema de compilación (Kleaf) y las herramientas de perfilado (simpleperf), esto permitirá a los fabricantes aplicar estas mismas técnicas de optimización a sus controladores de hardware específicos.

Cobertura de perfiles más amplia

Existe el potencial de recopilar perfiles de una gama más amplia de «Critical User Journeys» (CUJ) para optimizarlos.


Al llevar AutoFDO al kernel de Android, Google se asegura de que la base misma del sistema operativo esté optimizada para la forma en que los usuarios utilizan sus dispositivos cada día, prometiendo una experiencia más fluida y eficiente para todos.