Activer une taille de page de 16 Ko

Android 15 (AOSP expérimentale) ou version ultérieure est compatible avec la compilation Android avec une taille de page de 16 Ko. Cette option utilise davantage de mémoire, mais améliore les performances du système.

Les pages de 16 Ko ne sont compatibles qu'avec les cibles arm64 avec des noyaux de 16 Ko. Cependant, vous pouvez aussi simuler un espace utilisateur de 16 Ko sur x86_64 pour Cuttlefish.

Pour activer les pages de 16 Ko, définissez les options de compilation suivantes sur un appareil:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true supprime PAGE_SIZE. et permet aux composants de déterminer la taille de la page au moment de l'exécution.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384, qui garantit les fichiers ELF de la plate-forme sont alignés de 16 Ko. Cette taille plus que nécessaire est destinée à l'avenir. Avec un alignement ELF de 16 Ko, le noyau peut prendre en charge Taille de page de 4 Ko/16 Ko.

Vérifier les options de compilation

Après avoir sélectionné la cible lunch, vérifiez que les options de compilation sont configurées correctement dans l'environnement:

$ 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

Si les deux commandes précédentes renvoient respectivement 16384 et true, votre build sont correctement configurés.

Créer des bibliothèques partagées avec un alignement ELF de 16 Ko

Pour créer des bibliothèques partagées faisant partie projet android, Il vous suffit de définir ces indicateurs de compilation dans votre cible:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Pour créer des bibliothèques partagées qui ne font pas partie projet android, vous devez transmettre cet indicateur d'association:

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

Vérifier les binaires et les éléments prédéfinis pour l'alignement ELF de 16 Ko

Le meilleur moyen de vérifier l'alignement et le comportement lors de l'exécution est de tester et d'exécuter noyau compilé de 16 Ko Toutefois, pour détecter certains problèmes plus tôt:

  • À partir d'Android W (version expérimentale AOSP), vous pouvez définir PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true au moment de la compilation. Utilisez ignore_max_page_size: true dans Android.bp et LOCAL_IGNORE_MAX_PAGE_SIZE := true dans Android.mk pour ignorer temporairement de l'IA générative. Ces paramètres vérifient tous les composants prédéfinis et vous permettent de détecter est mis à jour, mais n'est pas aligné à 16 Ko.

  • Vous pouvez exécuter atest elf_alignment_test, qui vérifie l'alignement de fichiers ELF sur les appareils lancés avec Android 15 (version expérimentale AOSP) ou version ultérieure