System kompilacji Androida, który został wprowadzony w Androidzie 12, obsługuje optymalizację natywnych modułów Androida, które mają reguły kompilacji szablonów za pomocą automatycznej optymalizacji kierowanej przez opinie (AutoFDO). AutoFDO to technika optymalizacji oparta na próbkowaniu. AutoFDO rejestruje zachowanie binarek systemowych w czasie wykonywania, co umożliwia kompilatorom lepsze optymalizowanie wydajności przy jednoczesnym zmniejszaniu rozmiaru binarek. Android obsługuje zbieranie profili z urządzeń X86, X86_64, ARM i ARM64, ale można ich używać w różnych architekturach.
AutoFDO jest następcą optymalizacji opartej na profilowaniu (PGO).
W porównaniu z innymi profilami opartymi na pomiarach AutoFDO ma te dodatkowe zalety:
Dyskretne zbieranie danych: profile AutoFDO można zbierać z urządzeń programistycznych lub użytkowników bez konieczności modyfikowania reguł tworzenia.
Przedstawienie rzeczywistych zastosowań: funkcja AutoFDO przedstawia rzeczywiste zachowania użytkowników przy założeniu, że profile są zbierane z urządzeń użytkowników, natomiast PGO to instrumentacja reprezentatywna dla zbioru zadań zbierania danych syntetycznych. Zwykle nie jest łatwo utworzyć zbiorczy zestaw zadań, który idealnie odpowiadałby rzeczywistemu użyciu.
AOSP jest dostarczany z profilami AutoFDO w przypadku większości projektów, w których kluczowa jest wydajność. Te profile zostały zebrane z telefonów i tabletów i reprezentują ogólne wzorce korzystania z urządzeń. Profile znajdują się w regionie toolchain/pgo-profiles/sampling
. Funkcja AFDO jest domyślnie włączona w AOSP.
Włączanie AutoFDO w przypadku reguły kompilacji szablonu
Aby włączyć AutoFDO w przypadku reguł kompilacji szablonów, dodaj afdo: true
do reguły biblioteki współdzielonej lub binarnej.
Zbieranie profili
Wstępnie skonfigurowany profil dostarczony z AOSP nie obsługuje tych scenariuszy:
- uwzględnienie dodatkowych projektów AutoFDO,
- obecność lokalnie zmodyfikowanego kodu;
- unikalne wzorce użytkowania powiązane z Twoim systemem;
Jeśli występuje jeden z tych scenariuszy, musisz zebrać profile bezpośrednio z urządzeń deweloperskich lub użytkowników.
Szczegółowe instrukcje dotyczące przygotowywania urządzeń z procesorami ARM do zbierania profili AutoFDO znajdziesz w artykule Zbieranie danych ETM na potrzeby AutoFDO.
Informacje o tym, jak włączyć automatyczne zbieranie, przetwarzanie i przesyłanie profili w tle, znajdziesz na stronie Profcollect.
Analizowanie profili AutoFDO
Android używa standardowych profili AutoFDO LLVM. Profile AFDO można odczytać za pomocą narzędzia llvm-profdata
firmy LLVM. Skrypt afdo_summary.sh
(toolchain/pgo-profiles/scripts/afdo_summary.sh
) automatycznie generuje najczęściej wykonywane funkcje zgodnie z profilem AutoFDO.