Automatyczna optymalizacja oparta na informacjach zwrotnych (12 lub nowsza)

Wprowadzony w systemie Android 12 system kompilacji systemu Android obsługuje optymalizację natywnych modułów systemu Android, które mają reguły tworzenia planów przy użyciu automatycznej optymalizacji opartej na opinii zwrotnej (AutoFDO) . AutoFDO to technika optymalizacji oparta na próbkowaniu. AutoFDO przechwytuje zachowanie plików binarnych systemu w czasie wykonywania, umożliwiając kompilatorom lepszą optymalizację wydajności przy jednoczesnym zmniejszeniu rozmiaru pliku binarnego. AutoFDO obsługuje zbieranie danych z architektur AArch32 i AArch64, chociaż profile mogą być używane w różnych architekturach.

AutoFDO jest następcą opartej na instrumentacji optymalizacji profili (PGO).

W porównaniu do innych profili opartych na oprzyrządowaniu, AutoFDO ma następujące dodatkowe korzyści:

  • Dyskretne gromadzenie danych: profile AutoFDO można zbierać z urządzeń programistycznych lub użytkowników bez żadnych modyfikacji reguł tworzenia.

  • Reprezentacja użycia w świecie rzeczywistym: AutoFDO reprezentuje zachowanie użytkowania w świecie rzeczywistym, przy założeniu, że profile są zbierane z urządzeń użytkowników, podczas gdy oprzyrządowanie PGO jest reprezentatywne tylko dla obciążenia związanego z gromadzeniem syntetycznym. Utworzenie obciążenia kolekcji, które idealnie pasuje do rzeczywistego użycia, nie jest zazwyczaj proste.

AOSP jest dostarczany z profilami AutoFDO dla większości projektów o krytycznym znaczeniu dla wydajności. Profile zebrano z telefonów i tabletów i odzwierciedlają ogólne wzorce ich użytkowania. Profile znajdują się w toolchain/pgo-profiles/sampling . AFDO jest domyślnie włączone w AOSP.

Włącz AutoFDO dla reguły kompilacji planu

Aby włączyć AutoFDO dla reguł kompilacji planu, dołącz afdo: true do biblioteki współdzielonej lub reguły binarnej.

Zbieraj profile

Profil dołączony do pakietu AOSP nie obsługuje tych konkretnych scenariuszy:

  • Włączenie dodatkowych projektów AutoFDO
  • Obecność lokalnie zmodyfikowanego kodu
  • Unikalne wzorce użytkowania powiązane z Twoim systemem

Jeśli masz jeden z tych scenariuszy, musisz zebrać profile bezpośrednio z urządzeń programistycznych lub użytkowników.

Aby uzyskać szczegółowe instrukcje dotyczące przygotowania urządzeń ARM do zbierania profili AutoFDO, zobacz Zbieranie danych ETM dla AutoFDO .

Aby uzyskać informacje na temat włączania automatycznego gromadzenia, przetwarzania i przesyłania profili w tle, zobacz Profcollect .

Analizuj profile AutoFDO

Android korzysta ze standardowych profili LLVM AutoFDO. Profile AFDO można odczytać za pomocą narzędzia llvm-profdata LLVM. Skrypt afdo_summary.sh ( toolchain/pgo-profiles/scripts/afdo_summary.sh ) automatycznie generuje najczęściej wykonywane funkcje zgodnie z profilem AutoFDO.