16 KB sayfa boyutunu etkinleştir

.

Android 15 (AOSP deneysel) ve sonraki sürümler 16 KB sayfa boyutuna sahip Android cihazlar. 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 isterseniz Mürekkep balığı için x86_64 üzerinde 16 KB kullanıcı alanı simüle eder.

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 özelliğini kaldırır tanımlar ve bileşenlerin çalışma zamanında sayfa boyutunu belirlemesini sağlar.
  • Platform ELF dosyalarını sağlayan PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 16 KB boyutuyla oluşturulur. Gerektiğinden daha büyük olan bu boyut uyumlu hale getirebilirsiniz. 16 KB ELF hizalaması kullanıldığında çekirdek 4 KB/16 KB sayfa boyutu.

Derleme işaretlerini doğrulama

lunch hedefini seçtikten sonra derleme işaretlerinin ayarlandığını doğrulayın göstermeniz gerekir:

$ 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 derlemeniz doğru ayarlandığından emin olun.

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

android projesi tek yapmanız gereken hedefinizde şu derleme işaretlerini ayarlamaktır:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Şunun bir parçası olmayan paylaşılan kitaplıklar oluşturmak için: android projesi ş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 derlenmiş çekirdek. Ancak bazı sorunları daha erken tespit etmek için:

  • Android W'dan (AOSP deneysel) başlayarak, Derleme sırasında PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true. Tekliflerinizi otomatikleştirmek ve optimize etmek için Android.bp ve ignore_max_page_size: true Android.mk uygulamasında LOCAL_IGNORE_MAX_PAGE_SIZE := true adlı kullanıcı geçici olarak yoksayılacak gerekir. Bu ayarlar tüm önceden oluşturulmuş öğeleri doğrular ve ne zaman yapıldığını tespit etmenizi sağlar. güncellendiği için 16 KB hizalı değildir.

  • Şunlar arasındaki eşleşmeyi doğrulayan atest elf_alignment_test komutunu çalıştırabilirsiniz: şu sürümle başlayan cihazlarda, cihaz üzerindeki ELF dosyaları: Android 15 (AOSP deneysel) ve sonraki sürümler.