Optimisation automatique guidée par les commentaires (12 ou version ultérieure)

Introduit dans Android 12, le système de compilation Android est compatible avec l'optimisation des modules Android natifs qui comportent des règles de compilation de plan à l'aide de l'optimisation automatique guidée par le feedback (AutoFDO). AutoFDO est une technique d'optimisation basée sur l'échantillonnage. AutoFDO capture le comportement d'exécution des binaires système, ce qui permet aux compilateurs d'optimiser les performances tout en réduisant la taille des binaires. Android est compatible avec la collecte de profils à partir d'appareils X86, X86_64, ARM et ARM64, bien que les profils puissent être utilisés sur différentes architectures.

AutoFDO succède à l'optimisation guidée par profil (PGO) basée sur l'instrumentation.

Par rapport aux autres profils basés sur l'instrumentation, AutoFDO présente les avantages supplémentaires suivants :

  • Collecte de données discrète : les profils AutoFDO peuvent être collectés à partir d'appareils de développement ou d'utilisateurs sans aucune modification des règles de compilation.

  • Représentation de l'utilisation réelle : AutoFDO représente le comportement d'utilisation réel en supposant que les profils sont collectés à partir d'appareils d'utilisateurs, tandis que l'instrumentation PGO n'est représentative que de la charge de travail de collecte synthétique. Il n'est généralement pas simple de créer une charge de travail de collecte qui correspond parfaitement à l'utilisation réelle.

AOSP est fourni avec des profils AutoFDO pour la plupart des projets critiques en termes de performances. Les profils ont été collectés à partir de téléphones et de tablettes, et sont représentatifs de leurs schémas d'utilisation généraux. Les profils se trouvent sous toolchain/pgo-profiles/sampling. AFDO est activé par défaut sur AOSP.

Activer AutoFDO pour une règle de compilation de plan

Pour activer AutoFDO pour les règles de compilation de plan, ajoutez afdo: true à la bibliothèque partagée ou à la règle binaire.

Collecter des profils

Le profil préintégré fourni avec AOSP n'est pas compatible avec les scénarios spécifiques suivants :

  • L'inclusion de projets AutoFDO supplémentaires
  • La présence de code modifié localement
  • Les schémas d'utilisation uniques associés à votre système

Si vous vous trouvez dans l'un de ces scénarios, vous devez collecter des profils directement à partir d'appareils de développement ou d'utilisateurs.

Pour obtenir des instructions détaillées sur la préparation des appareils ARM pour la collecte de profils AutoFDO, consultez Collecter des données ETM pour AutoFDO.

Pour obtenir des instructions détaillées sur la préparation des appareils X86 pour la collecte de profils AutoFDO, consultez Collecter des données LBR pour AutoFDO.

Pour en savoir plus sur l'activation de la collecte, du traitement et de l'importation automatiques de profils en arrière-plan, consultez Profcollect.

Analyser les profils AutoFDO

Android utilise des profils LLVM AutoFDO standards. Les profils AFDO peuvent être lus à l'aide de l'outil llvm-profdata de LLVM. Le afdo_summary.sh script (toolchain/pgo-profiles/scripts/afdo_summary.sh) génère automatiquement les fonctions les plus fréquemment exécutées en fonction du profil AutoFDO.