Optimización automática basada en comentarios (12 o versiones posteriores)

Introducido en Android 12, el sistema de compilación de Android 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 en tiempo de ejecución de los objetos binarios del sistema, lo que permite que los compiladores realicen mejores optimizaciones de rendimiento y, al mismo tiempo, reduzcan el tamaño binario. 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 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 dispositivos de usuario, mientras que la PGO de 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.

AOSP se envía con perfiles de AutoFDO para la mayoría de los proyectos de rendimiento crítico. Los perfiles se recopilaron de dispositivos de teléfonos y tablets, y representan 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 diseño

Para habilitar AutoFDO para las reglas de compilación de diseño, agrega afdo: true a la biblioteca compartida o a 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 dispositivos de desarrollo o de usuario.

Para obtener instrucciones detalladas sobre cómo 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 perfiles de AutoFDO

Android usa perfiles de AutoFDO de LLVM estándar. 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.