เปิดใช้งานขนาดหน้า 16kB

Android 15 (รุ่นทดลอง AOSP) และสูงกว่ารองรับการสร้าง Android ด้วยขนาดหน้า 16kB ตัวเลือกนี้ใช้หน่วยความจำเพิ่มเติมแต่ปรับปรุงประสิทธิภาพของระบบ

เพจขนาด 16kB รองรับเฉพาะเป้าหมาย arm64 ที่มีเคอร์เนลขนาด 16kB อย่างไรก็ตาม ยังมีตัวเลือกใน การจำลองพื้นที่ผู้ใช้ 16KB บน x86_64 สำหรับ Cuttlefish

หากต้องการเปิดใช้งานเพจขนาด 16kB ให้ตั้งค่าตัวเลือกการสร้างต่อไปนี้บนอุปกรณ์:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true จะลบการกำหนด PAGE_SIZE และทำให้ส่วนประกอบต่างๆ กำหนดขนาดหน้าในขณะรันไทม์
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 ซึ่งช่วยให้มั่นใจว่าไฟล์แพลตฟอร์ม ELF ถูกสร้างขึ้นด้วยการจัดตำแหน่ง 16kB ขนาดใหญ่เกินความจำเป็นนี้มีไว้สำหรับความเข้ากันได้ในอนาคต ด้วยการจัดตำแหน่ง ELF 16kB เคอร์เนลสามารถรองรับขนาดหน้า 4kB/16kB

ตรวจสอบแฟล็กบิลด์

หลังจากเลือกเป้าหมาย lunch แล้ว ให้ตรวจสอบว่าตั้งค่าสถานะการสร้างอย่างถูกต้องในสภาพแวดล้อม:

$ 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

หากสองคำสั่งก่อนหน้านี้ส่งคืน 16384 และ true ตามลำดับ แสดงว่าแฟล็ก build ของคุณได้รับการตั้งค่าอย่างถูกต้อง

สร้างไลบรารีที่ใช้ร่วมกันด้วยการจัดแนว ELF ขนาด 16kB

ในการสร้างไลบรารีที่ใช้ร่วมกันซึ่งเป็นส่วนหนึ่งของ โครงการ Android คุณจะต้องตั้งค่าสถานะการสร้างเหล่านี้ในเป้าหมายของคุณ:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

หากต้องการสร้างไลบรารีที่ใช้ร่วมกันซึ่งไม่ได้เป็นส่วนหนึ่งของ โครงการ Android คุณต้องส่งแฟล็กตัวเชื่อมโยงนี้:

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