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
supprimePAGE_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. Utilisezignore_max_page_size: true
dansAndroid.bp
etLOCAL_IGNORE_MAX_PAGE_SIZE := true
dansAndroid.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