Seitengröße von 16 KB aktivieren

Android 15 (experimentell über AOSP) und höher bieten Unterstützung für Android mit einer Seitengröße von 16 KB Diese Option benötigt zusätzlichen Arbeitsspeicher, verbessert die Systemleistung.

Seiten mit 16 KB werden nur für arm64-Ziele mit 16-KB-Kerneln unterstützt. Es gibt jedoch auch die Möglichkeit, 16 KB Userspace auf x86_64 für Cuttlefish 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 PAGE_SIZE und lässt die Seitengröße zur Laufzeit von Komponenten bestimmen.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384, die Plattform-ELF-Dateien bereitstellt mit einer 16-KB-Ausrichtung erstellt werden. Diese Größe ist größer als nötig zukünftige Kompatibilität. Mit einer 16-KB-ELF-Ausrichtung kann der Kernel Seitengröße: 4 KB bzw. 16 KB

Build-Flags prüfen

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

$ 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, dass die Flags korrekt eingerichtet sind.

Gemeinsam genutzte Bibliotheken mit 16 KB ELF erstellen

Um gemeinsam genutzte Bibliotheken zu erstellen, die Teil des Android-Projekt müssen Sie in Ihrem Ziel nur die folgenden Build-Flags festlegen:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Um gemeinsam genutzte Bibliotheken zu erstellen, die nicht Teil von Android-Projekt 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 Ausrichtung und das Laufzeitverhalten lassen sich am besten überprüfen, 16 KB kompilierter Kernel. Um jedoch Probleme früher zu erkennen, gehen Sie folgendermaßen vor:

  • Ab Android W (experimentell über AOSP) können Sie Folgendes festlegen: PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true bei der Build-Erstellung. Verwenden Sie ignore_max_page_size: true in Android.bp und LOCAL_IGNORE_MAX_PAGE_SIZE := true in Android.mk, um es vorübergehend zu ignorieren . Mit diesen Einstellungen werden alle vordefinierten Einstellungen überprüft. So können Sie feststellen, aktualisiert, aber nicht auf 16 KB ausgerichtet.

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