Bật kích thước trang 16 KB

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

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

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

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true sẽ xoá PAGE_SIZE và giúp các thành phần xác định kích thước trang trong thời gian chạy.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 đảm bảo các tệp ELF của nền tảng được tạo với căn chỉnh 16 KB. Kích thước lớn hơn cần thiết này dành cho khả năng tương thích trong tương lai. Với căn chỉnh ELF là 16 KB, nhân có thể hỗ trợ Kích thước trang 4 KB/16 KB.

Xác minh cờ bản dựng

Sau khi chọn mục tiêu lunch, hãy xác minh rằng cờ bản dựng đã được thiết lập đúng cách 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 2 lệnh trước đó lần lượt trả về 16384true, thì bản dựng của bạn cờ đượ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 16 KB

Để xây dựng thư viện dùng chung thuộc dự án android, bạn chỉ cần đặt những cờ bản 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 thuộc dự án android, bạn cần truyền cờ trình liên kết này:

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

Xác minh tệp nhị phân và tệp tạo sẵn để căn chỉnh ELF 16 KB

Cách tốt nhất để xác minh cách căn chỉnh và hành vi trong thời gian chạy là thử nghiệm và chạy trên Hạt nhân được biên dịch 16 KB. Tuy nhiên, để phát hiện một số vấn đề sớm hơn:

  • Kể từ Android W (thử nghiệm AOSP), bạn có thể đặt PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true trong thời gian tạo bản dựng. Sử dụng ignore_max_page_size: true trong Android.bpLOCAL_IGNORE_MAX_PAGE_SIZE := true trong Android.mk để tạm thời bỏ qua chúng. Các chế độ cài đặt này xác minh mọi tệp tạo sẵn và cho phép bạn phát hiện khi một tệp tạo sẵn được cập nhật nhưng không được căn chỉnh trong 16 KB.

  • Bạn có thể chạy atest elf_alignment_test để xác minh sự căn chỉnh của tệp ELF trên thiết bị trên những thiết bị chạy bằng Android 15 (thử nghiệm AOSP) trở lên.