Activer une taille de page de 16 Ko

Android 15 (AOSP expérimental) et versions ultérieures prennent en charge la création d'Android avec une taille de page de 16 Ko. Cette option utilise de la mémoire supplémentaire mais améliore les performances du système.

Les pages de 16 Ko ne sont prises en charge que sur les cibles arm64 avec des noyaux de 16 Ko. Cependant, il existe également une option pour simuler un espace utilisateur de 16 Ko sur x86_64 pour Cuttlefish.

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

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true supprime la définition 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 que les fichiers ELF de la plate-forme sont construits avec un alignement de 16 Ko. Cette taille plus grande que nécessaire est destinée à une compatibilité future. Avec un alignement ELF de 16 Ko, le noyau peut prendre en charge des tailles de page de 4 Ko/16 Ko.

Vérifier les indicateurs de build

Après avoir sélectionné la cible lunch , vérifiez que les indicateurs de build sont correctement configurés 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 , vos indicateurs de build sont correctement configurés.

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

Pour créer des bibliothèques partagées faisant partie du projet Android , il vous suffit de définir ces indicateurs de construction 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 du projet Android , vous devez transmettre cet indicateur de l'éditeur de liens :

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