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.