Introduit dans Android 12, le système de compilation Android permet d'optimiser les modules Android natifs qui disposent de règles de compilation de modèle à l'aide de l'optimisation automatique orientée par les commentaires (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 est le successeur 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 ne représente que 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 sur des téléphones et des 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 modèle
Pour activer AutoFDO pour les règles de compilation de modèle, ajoutez afdo: true
à la bibliothèque partagée ou à la règle binaire.
Collecter des profils
Le profil pré-embarqué fourni avec AOSP n'est pas compatible avec les scénarios suivants:
- Inclusion de projets AutoFDO supplémentaires
- Présence de code modifié en local
- Modèles d'utilisation uniques associés à votre système
Si vous rencontrez l'un de ces scénarios, vous devez collecter des profils directement à partir des appareils de développement ou des appareils des utilisateurs.
Pour obtenir des instructions détaillées sur la préparation des appareils ARM pour collecter des profils AutoFDO, consultez la page Collecter des données ETM pour AutoFDO.
Pour en savoir plus sur l'activation de la collecte, du traitement et de l'importation automatiques des profils en arrière-plan, consultez la page 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 exécutées le plus fréquemment en fonction du profil AutoFDO.