Automatische Optimierung auf Grundlage von Feedback (12 oder höher)

Das in Android 12 eingeführte Android-Build-System unterstützt die Optimierung nativer Android-Module, die Blueprint-Build-Regeln verwenden, mit Automatic Feedback-Directed Optimization (AutoFDO). AutoFDO ist eine stichprobenbasierte Optimierungstechnik. AutoFDO erfasst das Laufzeitverhalten von Systembinärdateien, sodass Compiler die Leistung besser optimieren und gleichzeitig die Binärdateigröße verringern 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 profilgesteuerten Optimierung (Profile-Guided Optimization, PGO).

Im Vergleich zu anderen instrumentierungsbasierten Profilen bietet AutoFDO die folgenden zusätzlichen Vorteile:

  • Unaufdringliche Datenerhebung: AutoFDO-Profile können von Entwicklungs- oder Nutzergeräten erhoben werden, ohne dass Build-Regeln geändert werden müssen.

  • Darstellung der tatsächlichen Nutzung: AutoFDO stellt das tatsächliche Nutzungsverhalten dar, sofern Profile von Nutzergeräten erfasst werden. Instrumentierungs-PGO ist nur repräsentativ für die synthetische Erfassungsarbeitslast. Es ist in der Regel nicht einfach, eine Sammlung von Arbeitslasten zu erstellen, die der tatsächlichen Nutzung perfekt entspricht.

AOSP wird mit AutoFDO-Profilen für die meisten leistungskritischen Projekte ausgeliefert. Die Profile wurden auf Smartphones und Tablets erhoben und sind repräsentativ für die allgemeinen Nutzungsmuster. Die Profile befinden sich unter toolchain/pgo-profiles/sampling. AFDO ist in AOSP standardmäßig aktiviert.

AutoFDO für eine Blueprint-Build-Regel aktivieren

Wenn Sie AutoFDO für Blueprint-Build-Regeln aktivieren möchten, hängen Sie afdo: true an die Regel für die freigegebene Bibliothek oder das Binärprogramm an.

Profile erfassen

Das mit AOSP bereitgestellte vorab gebündelte Profil unterstützt die folgenden spezifischen Szenarien nicht:

  • Die Einbeziehung zusätzlicher AutoFDO-Projekte
  • Vorhandensein von lokal geändertem Code
  • Eindeutige Nutzungsmuster, die mit Ihrem System verknüpft sind

In diesen Fällen müssen Sie Profile direkt von Entwicklungs- oder Nutzergeräten erfassen.

Eine detaillierte Anleitung zum Vorbereiten von ARM-Geräten für die Erfassung von AutoFDO-Profilen finden Sie unter ETM-Daten für AutoFDO erfassen.

Eine detaillierte Anleitung zum Vorbereiten von X86-Geräten für die Erfassung von AutoFDO-Profilen finden Sie unter LBR-Daten für AutoFDO erfassen.

Informationen zum Aktivieren der automatischen Erfassung, Verarbeitung und des automatischen Hochladens von Hintergrundprofilen finden Sie unter Profcollect.

AutoFDO-Profile analysieren

Android verwendet Standard-LLVM-AutoFDO-Profile. Die AFDO-Profile können mit dem LLVM-Tool llvm-profdata gelesen werden. Das afdo_summary.sh-Skript (toolchain/pgo-profiles/scripts/afdo_summary.sh) generiert automatisch die am häufigsten ausgeführten Funktionen gemäß dem AutoFDO-Profil.