Automatyczna optymalizacja na podstawie opinii (12 lub nowsza wersja)

System kompilacji Androida, wprowadzony w Androidzie 12, obsługuje optymalizację natywnych modułów Androida, które mają reguły kompilacji blueprint, za pomocą automatycznej optymalizacji opartej na informacjach zwrotnych (AutoFDO). AutoFDO to technika optymalizacji oparta na próbkowaniu. AutoFDO rejestruje zachowanie środowiska wykonawczego binarnych plików systemowych, co umożliwia kompilatorom lepszą optymalizację wydajności przy jednoczesnym zmniejszeniu rozmiaru plików binarnych. Android obsługuje zbieranie profili z urządzeń X86, X86_64, ARM i ARM64, ale profile te mogą być używane na różnych architekturach.

AutoFDO to następca optymalizacji opartej na profilowaniu (PGO) opartej na instrumentacji.

W porównaniu z profilami opartymi na innych instrumentach AutoFDO ma te dodatkowe zalety:

  • Nieinwazyjne zbieranie danych: profile AutoFDO można zbierać z urządzeń deweloperskich lub użytkowników bez modyfikowania reguł kompilacji.

  • Reprezentacja rzeczywistego użytkowania: AutoFDO reprezentuje rzeczywiste zachowania użytkowników, zakładając, że profile są zbierane z urządzeń użytkowników, natomiast PGO z instrumentacją reprezentuje tylko syntetyczne obciążenie związane ze zbieraniem danych. Utworzenie obciążenia zbierania danych, które idealnie odpowiada rzeczywistemu wykorzystaniu, nie jest zwykle proste.

AOSP zawiera profile AutoFDO dla większości projektów o kluczowym znaczeniu dla wydajności. Profile zostały zebrane z telefonów i tabletów i odzwierciedlają ich ogólne wzorce użytkowania. Profile znajdują się w sekcji toolchain/pgo-profiles/sampling. Na platformie AOSP AFDO jest domyślnie włączone.

Włączanie AutoFDO w przypadku reguły kompilacji schematu

Aby włączyć AutoFDO w przypadku reguł tworzenia planów, dodaj afdo: true do reguły biblioteki współdzielonej lub reguły binarnej.

Zbieranie profili

Wstępnie dołączony profil dostarczany z AOSP nie obsługuje tych konkretnych scenariuszy:

  • uwzględnianie dodatkowych projektów AutoFDO,
  • obecność lokalnie zmodyfikowanego kodu;
  • unikalne wzorce użytkowania powiązane z Twoim systemem;

W takich przypadkach musisz zbierać profile bezpośrednio z urządzeń deweloperskich lub użytkowników.

Szczegółowe instrukcje przygotowywania urządzeń z procesorem ARM do zbierania profili AutoFDO znajdziesz w artykule Zbieranie danych ETM na potrzeby AutoFDO.

Szczegółowe instrukcje przygotowywania urządzeń X86 do zbierania profili AutoFDO znajdziesz w artykule Zbieranie danych LBR na potrzeby AutoFDO.

Informacje o tym, jak włączyć automatyczne zbieranie, przetwarzanie i przesyłanie profili w tle, znajdziesz w artykule Profcollect.

Analizowanie profili AutoFDO

Android używa 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.