Aktifkan ukuran halaman 16% KB

Android 15 (AOSP eksperimental) dan yang lebih baru memiliki dukungan untuk membangun Android dengan ukuran halaman 16 KB. Opsi ini menggunakan memori tambahan, tetapi akan meningkatkan performa sistem.

Halaman berukuran 16 KB hanya didukung di target arm64 dengan kernel 16 KB. Namun, ada juga opsi untuk menyimulasikan ruang pengguna 16 KB di x86_64 untuk Cuttlefish.

Untuk mengaktifkan halaman berukuran 16 KB, tetapkan opsi build berikut di perangkat:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true menghapus penetapan PAGE_SIZE, dan membuat komponen menentukan ukuran halaman saat runtime.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 yang memastikan file ELF platform dibuat dengan perataan 16 KB. Ukuran yang lebih besar daripada yang dibutuhkan ini untuk kompatibilitas pada masa mendatang. Dengan penyelarasan ELF 16 KB, kernel dapat mendukung ukuran halaman 4 KB/16 KB.

Memverifikasi flag build

Setelah memilih target lunch, pastikan flag build disiapkan 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 menampilkan 16384 dan true masing-masing, flag build Anda telah disiapkan dengan benar.

Membuat library bersama dengan penyelarasan ELF 16 KB

Untuk mem-build library bersama yang merupakan bagian dari project Android, Anda hanya perlu menetapkan flag build ini dalam target:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Untuk membangun library bersama yang bukan bagian dari project android, Anda harus meneruskan flag linker ini:

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

Memverifikasi biner dan bawaan untuk perataan ELF 16 KB

Cara terbaik untuk memverifikasi keselarasan dan perilaku runtime adalah dengan menguji dan menjalankan kernel yang dikompilasi sebesar 16 KB. Namun, untuk mengetahui beberapa masalah lebih awal:

  • Mulai dari Android W (AOSP eksperimental), Anda dapat menetapkan PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true pada waktu build. Gunakan ignore_max_page_size: true di Android.bp dan LOCAL_IGNORE_MAX_PAGE_SIZE := true di Android.mk untuk mengabaikannya untuk sementara. Setelan ini memverifikasi semua bawaan dan memungkinkan Anda mendeteksi saat salah satunya diupdate, tetapi tidak selaras dengan ukuran 16 KB.

  • Anda dapat menjalankan atest elf_alignment_test yang memverifikasi penyelarasan file ELF di perangkat pada perangkat yang diluncurkan dengan Android 15 (eksperimental AOSP) dan yang lebih baru.