El sistema de compilación de Android, que se introdujo en Android 12, admite la optimización de módulos nativos de Android 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 en tiempo de ejecución de los archivos binarios del sistema, lo que permite que los compiladores realicen mejores optimizaciones de rendimiento y, al mismo tiempo, reduce el tamaño de los archivos 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 discreta: Los perfiles de AutoFDO se pueden recopilar de dispositivos de desarrollo o de usuarios sin modificar las reglas de compilación.
Representación del uso en el mundo real: AutoFDO representa el comportamiento de uso en el mundo real suponiendo que los perfiles se recopilan de los dispositivos de los usuarios, mientras que la PGO de la instrumentación solo representa la carga de trabajo de recopilación sintética. Por lo general, no es sencillo crear una carga de trabajo de recopilación que coincida perfectamente con el uso en el mundo real.
El 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 blueprint
Para habilitar AutoFDO para las reglas de compilación de esquemas, agrega afdo: true
a la biblioteca compartida o a la regla binaria.
Recopila perfiles
El perfil incluido previamente con AOSP no admite estos casos de uso específicos:
- La inclusión de proyectos adicionales de AutoFDO
- La presencia de código modificado de forma local
- Patrones de uso únicos asociados a tu sistema
Si te encuentras en una de estas situaciones, debes recopilar los perfiles directamente desde los dispositivos de desarrollo o de los usuarios.
Si deseas obtener instrucciones detalladas para preparar dispositivos ARM para recopilar perfiles de AutoFDO, consulta Recopila datos de ETM para AutoFDO.
Para obtener instrucciones detalladas sobre cómo preparar dispositivos x86 para recopilar perfiles de AutoFDO, consulta Recopila datos de LBR para AutoFDO.
Para obtener información sobre cómo habilitar la recopilación, el procesamiento y la carga automáticos de perfiles en segundo plano, consulta Profcollect.
Analiza los perfiles de AutoFDO
Android usa perfiles estándar de LLVM AutoFDO. 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.