Aktifkan ukuran halaman 16% KB

Android 15 (Eksperimental AOSP) dan yang lebih tinggi memiliki dukungan untuk proses build Android dengan ukuran halaman 16 KB. Opsi ini menggunakan memori tambahan tetapi meningkatkan performa sistem.

Halaman berukuran 16 KB hanya didukung di target arm64 dengan kernel 16 KB. Namun, ada juga pilihan untuk simulasikan 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 PAGE_SIZE mendefinisikan, dan membuat komponen menentukan ukuran halaman pada saat {i>runtime<i}.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 yang memastikan file ELF platform dibuat dengan keselarasan 16 KB. Ukuran yang lebih besar dari yang dibutuhkan ini untuk kompatibilitas mundur 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 tanda build telah disiapkan dengan benar di lingkungannya:

$ 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, build Anda penanda diatur dengan benar.

Membuat library bersama dengan penyelarasan ELF 16 KB

Untuk membangun pustaka bersama yang merupakan bagian dari project android, Anda hanya perlu menyetel flag build ini dalam target Anda:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

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

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

Memverifikasi biner dan bawaan untuk penyelarasan ELF 16 KB

Cara terbaik untuk memverifikasi perilaku penyelarasan dan 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 dalam Android.bp dan LOCAL_IGNORE_MAX_PAGE_SIZE := true di Android.mk untuk mengabaikan sementara mereka. Setelan ini memverifikasi semua bawaan dan memungkinkan Anda mendeteksi ketika diperbarui namun 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.