Ativar tamanho de página de 16kB

Android 15 (AOSP experimental) e superior têm suporte para construção de Android com tamanho de página de 16 KB. Esta opção utiliza memória adicional, mas melhora o desempenho do sistema.

Páginas de 16kB são suportadas apenas em alvos arm64 com kernels de 16kB. No entanto, também existe uma opção para simular um espaço de usuário de 16 KB em x86_64 para Cuttlefish.

Para ativar páginas de 16 KB, defina as seguintes opções de compilação em um dispositivo:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true remove a definição PAGE_SIZE e faz com que os componentes determinem o tamanho da página em tempo de execução.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 que garante que os arquivos ELF da plataforma sejam construídos com alinhamento de 16kB. Esse tamanho maior que o necessário é para compatibilidade futura. Com alinhamento ELF de 16kB, o kernel pode suportar tamanhos de página de 4kB/16kB.

Verifique sinalizadores de compilação

Depois de selecionar o destino lunch , verifique se os sinalizadores de construção estão configurados corretamente no ambiente:

$ 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

Se os dois comandos anteriores retornarem 16384 e true respectivamente, seus sinalizadores de construção estão configurados corretamente.

Crie bibliotecas compartilhadas com alinhamento ELF de 16kB

Para construir bibliotecas compartilhadas que fazem parte do projeto Android , você só precisa definir estes sinalizadores de construção em seu destino:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Para criar bibliotecas compartilhadas que não fazem parte do projeto Android , você precisa passar este sinalizador de vinculador:

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