Optimisation automatique dirigée par feedback (12 ou supérieur)

Introduit dans Android 12, le système de build Android prend en charge l'optimisation des modules Android natifs qui ont des règles de build de modèle à l'aide de l'optimisation automatique dirigée par retour d'information (AutoFDO) . AutoFDO est une technique d'optimisation basée sur l'échantillonnage. AutoFDO capture le comportement d'exécution des binaires du système, permettant aux compilateurs de réaliser de meilleures optimisations de performances tout en réduisant la taille des binaires. AutoFDO prend en charge la collecte de données à partir des architectures AArch32 et AArch64, bien que les profils puissent être utilisés dans toutes les architectures.

AutoFDO est le successeur de l'optimisation guidée par profil (PGO) basée sur l'instrumentation.

Par rapport à d'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 des appareils de développement ou des utilisateurs sans aucune modification pour créer des règles.

  • Représentation de l'utilisation dans le monde réel : AutoFDO représente le comportement d'utilisation dans le monde réel en supposant que les profils sont collectés à partir des appareils des utilisateurs, tandis que l'instrumentation PGO est représentative uniquement 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 à une utilisation réelle.

AOSP est livré 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 modèles 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 création de Blueprint

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

Collecter des profils

Le profil prégroupé fourni avec AOSP ne prend pas en charge ces scénarios spécifiques :

  • L’inclusion de projets AutoFDO supplémentaires
  • La présence de code modifié localement
  • 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 utilisateur.

Pour obtenir des instructions détaillées sur la façon de préparer les appareils ARM à la collecte de profils AutoFDO, reportez-vous à Collecter des données ETM pour AutoFDO .

Pour plus d'informations sur la façon d'activer la collecte, le traitement et le téléchargement automatiques de profils d'arrière-plan, voir Profcollect .

Analyser les profils AutoFDO

Android utilise les profils LLVM AutoFDO standard. Les profils AFDO peuvent être lus à l'aide de l'outil llvm-profdata du 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 selon le profil AutoFDO.