Android 15 (eksperimental AOSP) dan lebih tinggi memiliki dukungan untuk membangun Android dengan ukuran halaman 16kB. Opsi ini menggunakan memori tambahan namun meningkatkan kinerja sistem.
Halaman 16kB hanya didukung pada target arm64
dengan kernel 16kB. Namun, ada juga opsi untuk mensimulasikan ruang pengguna 16KB pada x86_64
untuk Cuttlefish.
Untuk mengaktifkan halaman 16kB, atur opsi build berikut pada perangkat:
-
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
menghapus definisiPAGE_SIZE
, dan membuat komponen menentukan ukuran halaman saat runtime. -
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
yang memastikan file platform ELF dibuat dengan penyelarasan 16kB. Ukuran yang lebih besar dari yang dibutuhkan ini adalah untuk kompatibilitas di masa mendatang. Dengan penyelarasan ELF 16kB, kernel dapat mendukung ukuran halaman 4kB/16kB.
Verifikasi tanda build
Setelah memilih target lunch
, verifikasi bahwa flag build telah diatur dengan benar di lingkungan:
$ 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
Jika dua perintah sebelumnya masing-masing mengembalikan 16384
dan true
, flag build Anda sudah diatur dengan benar.
Bangun perpustakaan bersama dengan penyelarasan ELF 16kB
Untuk membangun perpustakaan bersama yang merupakan bagian dari proyek Android , Anda hanya perlu menyetel tanda pembangunan berikut di target Anda:
-
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
-
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
Untuk membangun perpustakaan bersama yang bukan bagian dari proyek Android , Anda harus meneruskan tanda tautan ini:
-Wl,-z,max-page-size=16384