Das in Android 12 eingeführte Android-Build-System unterstützt die Optimierung nativer Android-Module mit Blueprint-Build-Regeln mithilfe der automatischen Feedback-gesteuerten Optimierung (AutoFDO) . AutoFDO ist eine stichprobenbasierte Optimierungstechnik. AutoFDO erfasst das Laufzeitverhalten von Systembinärdateien und ermöglicht Compilern so bessere Leistungsoptimierungen bei gleichzeitiger Reduzierung der Binärgröße. AutoFDO unterstützt das Sammeln von Daten von AArch32- und AArch64-Architekturen, obwohl die Profile architekturübergreifend verwendet werden können.
AutoFDO ist der Nachfolger der instrumentierungsbasierten Profile-Guided Optimization (PGO).
Im Vergleich zu anderen instrumentenbasierten Profilen bietet AutoFDO folgende zusätzliche Vorteile:
Unauffällige Datenerfassung: AutoFDO-Profile können von Entwicklungs- oder Benutzergeräten erfasst werden, ohne dass Änderungen an den Build-Regeln erforderlich sind.
Darstellung der realen Nutzung: AutoFDO stellt das reale Nutzungsverhalten dar, vorausgesetzt, Profile werden von Benutzergeräten erfasst, während Instrumentierungs-PGO nur für die Arbeitslast der synthetischen Erfassung repräsentativ ist. Im Allgemeinen ist es nicht einfach, eine Sammlungsarbeitslast zu erstellen, die perfekt zur realen Nutzung passt.
AOSP wird mit AutoFDO-Profilen für die meisten leistungskritischen Projekte ausgeliefert. Die Profile wurden von Telefonen und Tablets erfasst und sind repräsentativ für deren allgemeine Nutzungsmuster. Die Profile befinden sich unter toolchain/pgo-profiles/sampling
. AFDO ist auf AOSP standardmäßig aktiviert.
Aktivieren Sie AutoFDO für eine Blueprint-Build-Regel
Um AutoFDO für Blueprint-Build-Regeln zu aktivieren, hängen Sie afdo: true
an die gemeinsam genutzte Bibliothek oder Binärregel an.
Sammeln Sie Profile
Das mit AOSP bereitgestellte vorgefertigte Profil unterstützt diese spezifischen Szenarios nicht:
- Die Aufnahme weiterer AutoFDO-Projekte
- Das Vorhandensein von lokal geändertem Code
- Einzigartige Nutzungsmuster, die Ihrem System zugeordnet sind
Wenn Sie eines dieser Szenarios haben, müssen Sie Profile direkt von Entwicklungs- oder Benutzergeräten erfassen.
Ausführliche Anweisungen zum Vorbereiten von ARM-Geräten für das Sammeln von AutoFDO-Profilen finden Sie unter Sammeln von ETM-Daten für AutoFDO .
Informationen zum Aktivieren der automatischen Hintergrundprofilerfassung, -verarbeitung und -hochladung finden Sie unter Profcollect .
Analysieren Sie AutoFDO-Profile
Android verwendet Standard-LLVM-AutoFDO-Profile. Die AFDO-Profile können mit dem llvm-profdata
Tool des LLVM gelesen werden. Das Skript afdo_summary.sh
( toolchain/pgo-profiles/scripts/afdo_summary.sh
) generiert automatisch die am häufigsten ausgeführten Funktionen gemäß dem AutoFDO-Profil.