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

Introduit dans Android 12, le système de compilation Android permet d'optimiser les modules Android natifs qui comportent des règles de compilation de plans à l'aide de l'optimisation automatique dirigé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 permet de collecter des 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 des appareils des 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 habitudes d'utilisation générales. 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 blueprint

Pour activer AutoFDO pour les règles de compilation de plans, ajoutez afdo: true à la règle de bibliothèque partagée ou 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é en local
  • Schémas d'utilisation uniques associés à votre système

Si vous êtes dans l'un de ces cas, vous devez collecter les profils directement à partir des appareils de développement ou des appareils utilisateur.

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 à la collecte de profils AutoFDO, consultez Collecter des données LBR pour AutoFDO.

Pour savoir comment activer la collecte, le traitement et l'importation automatiques des profils en arrière-plan, consultez Profcollect.

Analyser les profils AutoFDO

Android utilise des profils AutoFDO LLVM standards. Les profils AFDO peuvent être lus à l'aide de l'outil llvm-profdata de LLVM. Le script afdo_summary.sh (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.