Habilitar tamaño de página de 16kB

Android 15 (AOSP experimental) y versiones posteriores admiten la compilación de Android con un tamaño de página de 16 kB. Esta opción utiliza memoria adicional pero mejora el rendimiento del sistema.

Las páginas de 16 kB solo se admiten en objetivos arm64 con núcleos de 16 kB. Sin embargo, también existe una opción para simular un espacio de usuario de 16 KB en x86_64 para Cuttlefish.

Para habilitar páginas de 16 kB, configure las siguientes opciones de compilación en un dispositivo:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true elimina la definición PAGE_SIZE y hace que los componentes determinen el tamaño de la página en tiempo de ejecución.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 lo que garantiza que los archivos ELF de la plataforma se creen con una alineación de 16 kB. Este tamaño mayor al necesario es para compatibilidad futura. Con una alineación ELF de 16 kB, el kernel puede admitir tamaños de página de 4 kB/16 kB.

Verificar indicadores de compilación

Después de seleccionar el objetivo lunch , verifique que los indicadores de compilación estén configurados correctamente en el entorno:

$ 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 los dos comandos anteriores devuelven 16384 y true respectivamente, sus indicadores de compilación están configurados correctamente.

Cree bibliotecas compartidas con alineación ELF de 16 kB

Para crear bibliotecas compartidas que formen parte del proyecto de Android , solo necesita configurar estos indicadores de compilación en su destino:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Para crear bibliotecas compartidas que no formen parte del proyecto de Android , debes pasar este indicador del vinculador:

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