Introducido en Android 12, el sistema de compilación de Android admite la optimización de módulos nativos de Android que tienen reglas de compilación de planos mediante la optimización automática dirigida por retroalimentación (AutoFDO) . AutoFDO es una técnica de optimización basada en muestreo. AutoFDO captura el comportamiento en tiempo de ejecución de los binarios del sistema, lo que permite a los compiladores realizar mejores optimizaciones del rendimiento y al mismo tiempo reducir el tamaño de los binarios. AutoFDO admite la recopilación de datos de las arquitecturas AArch32 y AArch64, aunque los perfiles se pueden utilizar en todas las arquitecturas.
AutoFDO es el sucesor de la optimización guiada por perfiles (PGO) basada en instrumentación.
En comparación con otros perfiles basados en instrumentación, AutoFDO tiene estos beneficios adicionales:
Recopilación de datos discreta: los perfiles de AutoFDO se pueden recopilar desde dispositivos de desarrollo o de usuario sin ninguna modificación en 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 instrumentación PGO es representativa solo de la carga de trabajo de recopilación sintética. Por lo general, no es sencillo crear una carga de trabajo de colección que se adapte perfectamente al uso en el mundo real.
AOSP se envía con perfiles AutoFDO para la mayoría de los proyectos críticos para el rendimiento. Los perfiles se recopilaron de teléfonos y tabletas 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.
Habilite AutoFDO para una regla de compilación de planos
Para habilitar AutoFDO para reglas de compilación de planos, agregue afdo: true
a la biblioteca compartida o regla binaria.
Recopilar perfiles
El perfil incluido con AOSP no admite estos escenarios específicos:
- La inclusión de proyectos adicionales de AutoFDO.
- La presencia de código modificado localmente.
- Patrones de uso únicos asociados con su sistema
Si tiene uno de estos escenarios, debe recopilar perfiles directamente desde los dispositivos de desarrollo o de usuario.
Para obtener instrucciones detalladas sobre cómo preparar dispositivos ARM para recopilar perfiles de AutoFDO, consulte 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, consulte Profcollect .
Analizar perfiles de AutoFDO
Android utiliza perfiles LLVM AutoFDO estándar. Los perfiles AFDO se pueden leer utilizando la herramienta llvm-profdata
de LLVM. El script afdo_summary.sh
( toolchain/pgo-profiles/scripts/afdo_summary.sh
) genera automáticamente las funciones ejecutadas con mayor frecuencia según el perfil AutoFDO.