Seitengröße von 16 KB aktivieren

Android 15 (experimentell über AOSP) und höher unterstützen die Entwicklung von Android mit einer Seitengröße von 16 KB. Diese Option benötigt zusätzlichen Arbeitsspeicher, verbessert aber die Systemleistung.

Seiten mit 16 KB werden nur für arm64-Ziele mit 16-KB-Kerneln unterstützt. Es gibt aber auch die Möglichkeit, einen 16 KB-Nutzerbereich auf x86_64 für Sepia zu simulieren.

Um 16-KB-Seiten zu aktivieren, legen Sie die folgenden Build-Optionen auf einem Gerät fest:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true entfernt die PAGE_SIZE-Definition und sorgt dafür, dass die Seitengröße während der Laufzeit von Komponenten bestimmt wird.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384: Dadurch werden Plattform-ELF-Dateien mit einer Ausrichtung von 16 KB erstellt. Diese Größe ist größer als nötig und dient der zukünftigen Kompatibilität. Bei einer ELF-Ausrichtung mit 16 KB unterstützt der Kernel Seitengrößen mit 4 KB bzw. 16 KB.

Build-Flags prüfen

Nachdem Sie das Ziel lunch ausgewählt haben, prüfen Sie, ob die Build-Flags in der Umgebung richtig eingerichtet sind:

$ 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

Wenn die beiden vorherigen Befehle 16384 bzw. true zurückgeben, sind die Build-Flags korrekt eingerichtet.

Gemeinsam genutzte Bibliotheken mit 16 KB ELF erstellen

Wenn Sie gemeinsam genutzte Bibliotheken erstellen möchten, die zum Android-Projekt gehören, müssen Sie im Ziel nur diese Build-Flags festlegen:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Wenn Sie gemeinsam genutzte Bibliotheken erstellen möchten, die nicht Teil eines Android-Projekts sind, müssen Sie dieses Verknüpfungs-Flag übergeben:

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

Binärdateien und vorgefertigte Elemente für die 16-KB-ELF-Ausrichtung überprüfen

Die beste Möglichkeit zum Prüfen der Ausrichtung und des Laufzeitverhaltens besteht darin, einen kompilierten 16-KB-Kernel zu testen und auszuführen. Um jedoch Probleme früher zu erkennen, gehen Sie folgendermaßen vor:

  • Ab Android W (AOSP-Testphase) können Sie PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true bei der Build-Erstellung festlegen. Verwenden Sie ignore_max_page_size: true in Android.bp und LOCAL_IGNORE_MAX_PAGE_SIZE := true in Android.mk, um sie vorübergehend zu ignorieren. Mit diesen Einstellungen werden alle vordefinierten Einstellungen geprüft. So können Sie erkennen, wenn eine Konfiguration aktualisiert wird, aber nicht auf 16 KB ausgerichtet ist.

  • Sie können atest elf_alignment_test ausführen, um die Ausrichtung von ELF-Dateien auf dem Gerät auf Geräten zu prüfen, die mit Android 15 (AOSP experimentell) und höher gestartet werden.