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

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 Optimierungstechnik. 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 Profilerleichterten Optimierung (Profile-Guided Optimization, PGO).

Im Vergleich zu anderen instrumentenbasierten Profilen bietet AutoFDO folgende zusätzliche 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, vorausgesetzt, Profile werden von Nutzergeräten erfasst. Die Instrumentierung PGO ist nur repräsentativ für die synthetische Erfassungsarbeitslast. 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 finden Sie unter toolchain/pgo-profiles/sampling. AFDO ist unter AOSP standardmäßig aktiviert.

AutoFDO für eine Build-Regel für den Blueprint aktivieren

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

Profile erfassen

Das mit AOSP bereitgestellte vorkonfigurierte Profil unterstützt diese speziellen 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 Erhebung von AutoFDO-Profilen finden Sie unter ETM-Daten für AutoFDO erheben.

Eine ausführliche 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 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.