El sistema de compilación de Android, que se introdujo en Android 12, admite la optimización de módulos de Android nativos que tienen reglas de compilación de diseño con la optimización automática dirigida por comentarios (AutoFDO). AutoFDO es una técnica de optimización basada en muestras. AutoFDO captura el comportamiento del tiempo de ejecución de los objetos binarios del sistema, lo que permite a los compiladores realizar mejores optimizaciones de rendimiento y, al mismo tiempo, reducir el tamaño de los objetos binarios. Android admite la recopilación de perfiles de dispositivos X86, X86_64, ARM y ARM64, aunque los perfiles se pueden usar en todas las arquitecturas.
AutoFDO es el sucesor de la optimización guiada por perfil (PGO) basada en la instrumentación.
En comparación con otros perfiles basados en la instrumentación, AutoFDO tiene los siguientes beneficios adicionales:
Recopilación de datos no invasiva: Los perfiles de AutoFDO se pueden recopilar desde dispositivos de desarrollo o de usuario sin ninguna modificación para compilar reglas.
Representación del uso en el mundo real: AutoFDO representa el comportamiento de uso en el mundo real, siempre que se recopilen perfiles de los dispositivos de los usuarios, mientras que la PGO de instrumentación solo representa la carga de trabajo de recopilación sintética. Por lo general, no es directo crear una carga de trabajo de colección que coincida perfectamente con el uso real.
AOSP se envía con perfiles de AutoFDO para la mayoría de los proyectos en los que el rendimiento es fundamental. Los perfiles se recopilaron de teléfonos y tablets, y son representativos de sus patrones de uso generales. Los perfiles se encuentran en toolchain/pgo-profiles/sampling
. AFDO está habilitado de forma predeterminada en AOSP.
Habilita AutoFDO para una regla de compilación de plano técnico
Si deseas habilitar AutoFDO para las reglas de compilación de planos, agrega afdo: true
a la biblioteca compartida o la regla binaria.
Recopila perfiles
El perfil preempaquetado que se proporciona con AOSP no admite estas situaciones específicas:
- La inclusión de proyectos adicionales de AutoFDO
- La presencia de código modificado de forma local
- Patrones de uso únicos asociados con tu sistema
Si tienes una de estas situaciones, debes recopilar perfiles directamente desde los dispositivos de desarrollo o de usuarios.
Para obtener instrucciones detalladas sobre cómo preparar dispositivos ARM para recoger perfiles de AutoFDO, consulta Cómo recopilar datos de ETM para AutoFDO.
Para obtener información sobre cómo habilitar la recopilación, el procesamiento y la carga automática de perfiles en segundo plano, consulta Profcollect.
Cómo analizar perfiles de AutoFDO
Android usa perfiles AutoFDO estándar de LLVM. Los perfiles de AFDO se pueden leer con la herramienta llvm-profdata
de LLVM. La secuencia de comandos afdo_summary.sh
(toolchain/pgo-profiles/scripts/afdo_summary.sh
) genera automáticamente las funciones que se ejecutan con mayor frecuencia según el perfil de AutoFDO.