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ĩaPAGE_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ề 16384
và true
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