Włącz rozmiar strony 16kB

Android 15 (eksperymentalny AOSP) i nowsze wersje obsługują tworzenie Androida o rozmiarze strony 16 KB. Ta opcja zużywa dodatkową pamięć, ale poprawia wydajność systemu.

Strony 16kB są obsługiwane tylko na obiektach docelowych arm64 z jądrami 16kB. Istnieje jednak również opcja symulowania przestrzeni użytkownika 16 KB na x86_64 dla mątwy.

Aby włączyć strony o rozmiarze 16 KB, ustaw na urządzeniu następujące opcje kompilacji:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true usuwa definicję PAGE_SIZE i sprawia, że ​​komponenty określają rozmiar strony w czasie wykonywania.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 co zapewnia, że ​​pliki ELF platformy są budowane z wyrównaniem 16kB. Ten większy niż potrzebny rozmiar ma na celu zapewnienie przyszłej kompatybilności. Przy wyrównaniu ELF 16 kB jądro może obsługiwać strony o rozmiarach 4 kB/16 kB.

Sprawdź flagi kompilacji

Po wybraniu celu lunch sprawdź, czy flagi kompilacji są poprawnie skonfigurowane w środowisku:

$ source build/envsetup.sh
$ lunch target

$ get_build_var TARGET_MAX_PAGE_SIZE_SUPPORTED
16384
$ get_build_var TARGET_NO_BIONIC_PAGE_SIZE_MACRO
true

Jeśli poprzednie dwa polecenia zwrócą odpowiednio 16384 i true , flagi kompilacji są ustawione poprawnie.

Twórz biblioteki współdzielone z wyrównaniem ELF 16kB

Aby zbudować biblioteki współdzielone, które są częścią projektu na Androida , wystarczy ustawić te flagi kompilacji w swoim celu:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Aby zbudować biblioteki współdzielone, które nie są częścią projektu Android , musisz przekazać tę flagę linkera:

-Wl,-z,max-page-size=16384