Kích hoạt kích thước trang 16kB

Android 15 (thử nghiệm AOSP) trở lên có hỗ trợ xây dựng Android với kích thước trang 16kB. Tùy chọn này sử dụng bộ nhớ bổ sung nhưng cải thiện hiệu suất hệ thống.

Các trang 16kB chỉ được hỗ trợ trên các mục tiêu arm64 có hạt nhân 16kB. Tuy nhiên, cũng có một tùy chọn để mô phỏng không gian người dùng 16KB trên x86_64 cho Mực nang.

Để bật trang 16kB, hãy đặt các tùy chọn bản dựng sau trên thiết bị:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true loại bỏ định nghĩa PAGE_SIZE và nó làm cho các thành phần xác định kích thước trang khi chạy.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 đảm bảo các tệp ELF nền tảng được xây dựng với căn chỉnh 16kB. Kích thước lớn hơn mức cần thiết này là để tương thích trong tương lai. Với căn chỉnh ELF 16kB, kernel có thể hỗ trợ kích thước trang 4kB/16kB.

Xác minh cờ xây dựng

Sau khi chọn mục tiêu lunch , hãy xác minh rằng cờ xây dựng được thiết lập chính xác trong môi trường:

$ 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

Nếu hai lệnh trước đó lần lượt trả về 16384true thì cờ xây dựng của bạn đã được thiết lập chính xác.

Xây dựng thư viện dùng chung với căn chỉnh ELF 16kB

Để xây dựng các thư viện dùng chung là một phần của dự án Android , bạn chỉ cần đặt các cờ xây dựng này trong mục tiêu của mình:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Để xây dựng các thư viện dùng chung không phải là một phần của dự án Android , bạn cần chuyển cờ liên kết này:

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