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

El sistema de compilación de Android, presentado en Android 12, admite la optimización Módulos de Android que tienen reglas de compilación de plano con Automatic Optimización 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 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 basada en instrumentación (PGO).

En comparación con otros perfiles basados en instrumentación, AutoFDO tiene estas beneficios:

  • 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 de 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 instrumentación es representativa solo de la carga de trabajo sintética de recopilación. 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. El 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 modelo

Para habilitar AutoFDO para las reglas de compilación de esquemas, agrega afdo: true a la biblioteca o regla binaria compartida.

Recopila perfiles

El perfil precompilado 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 alguna de estas situaciones, debes recopilar perfiles directamente de desarrollo o de usuarios.

Si deseas obtener instrucciones detalladas para 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. Se pueden leer los perfiles de AFDO 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 ejecutadas con más frecuencia según el Perfil de AutoFDO.