16 KB sayfa boyutunu etkinleştir

Android 15 (AOSP deneysel) ve sonraki sürümler 16 KB sayfa boyutuna sahip Android oluşturmayı destekler. Bu seçenek ek bellek kullanır ancak sistem performansını iyileştirir.

16 KB sayfalar yalnızca 16 KB çekirdeklere sahip arm64 hedeflerinde desteklenir. Ancak, Mürekkep balığı için x86_64 üzerinde 16 KB kullanıcı alanını simüle etme seçeneği de vardır.

16 KB sayfaları etkinleştirmek için bir cihazda aşağıdaki derleme seçeneklerini ayarlayın:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true, PAGE_SIZE tanımlamasını kaldırır ve bileşenlerin çalışma zamanında sayfa boyutunu belirlemesini sağlar.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384, platform ELF dosyalarının 16 KB hizalamayla oluşturulmasını sağlar. Gerekenden daha büyük olan bu boyut, gelecekteki uyumluluk içindir. 16 KB ELF hizalaması sayesinde çekirdek, 4 KB/16 KB sayfa boyutunu destekleyebilir.

Derleme işaretlerini doğrulama

lunch hedefini seçtikten sonra, derleme işaretlerinin ortamda doğru şekilde ayarlandığını doğrulayın:

$ 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

Önceki iki komut sırasıyla 16384 ve true döndürüyorsa derleme işaretleriniz doğru şekilde ayarlanmıştır.

16 KB ELF hizalaması ile paylaşılan kitaplıklar oluşturma

Android projesinin parçası olan paylaşılan kitaplıklar oluşturmak için yalnızca şu derleme işaretlerini hedefinizde ayarlamanız gerekir:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Android projesinin parçası olmayan paylaşılan kitaplıklar oluşturmak için şu bağlayıcı işaretini iletmeniz gerekir:

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

16 KB ELF hizalaması için ikili programları ve önceden oluşturulmuş öğeleri doğrulayın

Hizalamayı ve çalışma zamanı davranışını doğrulamanın en iyi yolu, 16 KB'lık derlenmiş bir çekirdekte test edip çalıştırmaktır. Ancak bazı sorunları daha erken tespit etmek için:

  • Android W (AOSP deneysel) sürümünden itibaren, derleme sırasında PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true değerini ayarlayabilirsiniz. Bunları geçici olarak yoksaymak için Android.bp içinde ignore_max_page_size: true ve Android.mk içinde LOCAL_IGNORE_MAX_PAGE_SIZE := true kullanın. Bu ayarlar, önceden oluşturulmuş tüm öğeleri doğrular ve bir tanesinin ne zaman güncellendiğini, ancak 16 KB ile uyumlu olmadığını tespit etmenizi sağlar.

  • Android 15 (AOSP deneysel) ve sonraki sürümlerin yüklü olduğu cihazlarda cihaz üzerindeki ELF dosyalarının uyumluluğunu doğrulayan atest elf_alignment_test komutunu çalıştırabilirsiniz.