16KB 페이지 크기 사용하기

Android 15(AOSP 실험용) 이상에서는 16KB 페이지 크기의 Android 빌드를 지원합니다. 이 옵션은 추가 메모리를 사용하지만 시스템 성능을 향상시킵니다.

16KB 페이지는 16KB 커널이 있는 arm64 타겟에서만 지원됩니다.

16KB 페이지를 사용하려면 기기에서 다음 빌드 옵션을 설정하세요.

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := truePAGE_SIZE 정의를 삭제하며, 구성요소가 런타임에 페이지 크기를 결정하도록 합니다.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384는 플랫폼 ELF 파일이 16KB 정렬로 빌드되도록 합니다. 필요 이상으로 큰 크기는 향후의 호환성을 고려한 것입니다. 16KB ELF 정렬을 사용하면 커널은 4KB/16KB 페이지 크기를 지원할 수 있습니다.

빌드 플래그 확인

lunch 타겟을 선택한 후 다음과 같이 빌드 플래그가 환경에서 올바르게 설정되어 있는지 확인하세요.

$ 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

이전 명령어 두 개에서 각각 16384true가 반환되면 빌드 플래그가 올바르게 설정된 것입니다.

16KB ELF 정렬로 공유 라이브러리 빌드

Android 프로젝트에 포함된 공유 라이브러리를 빌드하려면 타겟에서 다음 빌드 플래그만 설정하면 됩니다.

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Android 프로젝트에 포함되지 않은 공유 라이브러리를 빌드하려면 다음 링커 플래그를 전달해야 합니다.

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