Włącz rozmiar strony 16 KB

Android 15 (AOSP Experiment) i nowsze wersje obsługują tworzenie Android o rozmiarze strony 16 KB. Ta opcja wymaga dodatkowej pamięci, ale poprawia wydajność systemu.

Strony o rozmiarze 16 KB są obsługiwane tylko w celach arm64 z jądrem o rozmiarze 16 KB. Dostępna jest też opcja Przeprowadź symulację 16 KB przestrzeni użytkownika w x86_64 w przypadku mątwy.

Aby włączyć strony o rozmiarze 16 KB, ustaw na urządzeniu te opcje kompilacji:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true usuwa: PAGE_SIZE i umożliwia określenie rozmiaru strony przez komponenty w czasie działania.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384, który zapewnia dostęp do plików ELF platformy są tworzone z dopasowaniem 16 KB. Ten zaawansowany rozmiar jest przeznaczony i zgodność z internetem w przyszłości. Jeśli plik ELF jest dopasowany do rozmiaru 16 KB, jądro obsługuje 4 KB/16 KB.

Zweryfikuj flagi kompilacji

Po wybraniu środowiska docelowego lunch sprawdź, czy flagi kompilacji są 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 2 poprzednie polecenia zwracają odpowiednio 16384 i true, kompilacja są prawidłowo skonfigurowane.

Twórz biblioteki udostępnione, dopasowując pliki ELF o rozmiarze 16 KB

Aby utworzyć biblioteki udostępnione, które są częścią projekt na Androida, wystarczy ustawić te flagi kompilacji w środowisku docelowym:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Aby tworzyć biblioteki udostępnione, które nie są częścią projekt na Androida, musisz przekazać tę flagę tagu łączącego:

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

Zweryfikuj pliki binarne i gotowe pliki pod kątem dopasowania ELF o rozmiarze 16 KB

Najlepszym sposobem na sprawdzenie dopasowania i działania w środowisku wykonawczym jest przetestowanie i uruchomienie skompilowane jądro o rozmiarze 16 KB, Aby jednak wykryć niektóre problemy wcześniej:

  • Począwszy od Androida W (AOSP w ramach eksperymentu), możesz ustawić PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true w momencie kompilacji. Używaj ignore_max_page_size: true w: Android.bp i LOCAL_IGNORE_MAX_PAGE_SIZE := true w: Android.mk do tymczasowego zignorowania . Te ustawienia weryfikują wszystkie gotowe ustawienia i pozwalają wykryć, czy jest zaktualizowany, ale nie jest wyrównany o 16 KB.

  • Możesz uruchomić polecenie atest elf_alignment_test, które sprawdzi wyrównanie plików ELF na urządzeniu na urządzeniach z Android 15 (AOSP Experiment) i nowsze wersje.