Das Android-Buildsystem, das in Android 12 eingeführt wurde, unterstützt die Optimierung nativer Android-Module mit Blueprint-Build-Regeln mithilfe der automatischen feedbackbasierten Optimierung (AutoFDO). AutoFDO ist eine stichprobenbasierte Optimierungsmethode. AutoFDO erfasst das Laufzeitverhalten von Systembinärdateien, sodass Compiler bessere Leistungsoptimierungen vornehmen und gleichzeitig die Binärdateigröße reduzieren können. Android unterstützt das Erfassen von Profilen von X86-, X86_64-, ARM- und ARM64-Geräten. Die Profile können jedoch architekturübergreifend verwendet werden.
AutoFDO ist der Nachfolger der instrumentierungsbasierten profilgestützten Optimierung (PGO).
Im Vergleich zu anderen instrumentenbasierten Profilen bietet AutoFDO folgende zusätzliche Vorteile:
Unaufdringliche Datenerhebung: AutoFDO-Profile können von Entwicklungs- oder Nutzergeräten erfasst werden, ohne die Build-Regeln zu ändern.
Darstellung der tatsächlichen Nutzung: AutoFDO stellt das tatsächliche Nutzungsverhalten dar, vorausgesetzt, Profile werden von Nutzergeräten erfasst. Die Instrumentierung für PGO ist nur repräsentativ für die synthetische Erfassungslast. Es ist im Allgemeinen nicht einfach, eine Sammlungsarbeitslast zu erstellen, die der tatsächlichen Nutzung perfekt entspricht.
AOSP wird mit AutoFDO-Profilen für die meisten leistungskritischen Projekte ausgeliefert. Die Profile wurden von Smartphones und Tablets erfasst und sind repräsentativ für die allgemeinen Nutzungsmuster. Die Profile befinden sich unter toolchain/pgo-profiles/sampling
. AFDO ist bei AOSP standardmäßig aktiviert.
AutoFDO für eine Build-Regel für den Blueprint aktivieren
Wenn Sie AutoFDO für Build-Regeln für Blueprints aktivieren möchten, hängen Sie afdo: true
an die freigegebene Bibliothek oder Binärregel an.
Profile erfassen
Das mit AOSP bereitgestellte vorab gebündelte Profil unterstützt die folgenden Szenarien nicht:
- Einschluss weiterer AutoFDO-Projekte
- Vorhandensein lokal geänderten Codes
- Einzigartige Nutzungsmuster, die mit Ihrem System verknüpft sind
In diesen Fällen müssen Sie Profile direkt von Entwicklungs- oder Nutzergeräten erfassen.
Eine ausführliche Anleitung zum Vorbereiten von ARM-Geräten für die Erfassung von AutoFDO-Profilen finden Sie unter ETM-Daten für AutoFDO erfassen.
Informationen zum Aktivieren der automatischen Erfassung, Verarbeitung und des Uploads von Hintergrundprofilen finden Sie unter Profcollect.
AutoFDO-Profile analysieren
Android verwendet standardmäßige LLVM AutoFDO-Profile. Die AFDO-Profile können mit dem llvm-profdata
-Tool von LLVM gelesen werden. Das afdo_summary.sh
-Script (toolchain/pgo-profiles/scripts/afdo_summary.sh
) generiert automatisch die am häufigsten ausgeführten Funktionen gemäß dem AutoFDO-Profil.