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çinAndroid.bp
veignore_max_page_size: true
Android.mk
uygulamasındaLOCAL_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.