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

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

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

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

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

ยืนยัน Flag ของบิลด์

หลังจากเลือกเป้าหมาย 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

หาก 2 คำสั่งก่อนหน้าแสดงผล 16384 และ true ตามลำดับ การตั้งค่าสถานะถูกต้อง

สร้างคลังภาพที่แชร์โดยมีการวางแนว ELF ขนาด 16 KB

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

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

เพื่อสร้างไลบรารีที่ใช้ร่วมกันซึ่งไม่ได้เป็นส่วนหนึ่งของ โปรเจ็กต์ Android คุณจะต้องส่ง Flag Linker นี้

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

ตรวจสอบไบนารีและไฟล์ที่สร้างไว้ล่วงหน้าเพื่อการตรวจสอบความสอดคล้อง ELF ขนาด 16 KB

วิธีที่ดีที่สุดในการตรวจสอบความสอดคล้องและลักษณะรันไทม์คือการทดสอบและเรียกใช้ใน เคอร์เนลแบบคอมไพล์ขนาด 16 KB อย่างไรก็ตาม เพื่อตรวจหาปัญหาบางอย่างก่อนหน้านี้:

  • เริ่มตั้งแต่ Android W (เวอร์ชันทดลอง AOSP) คุณสามารถ PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true ที่เวลาบิลด์ ใช้ ignore_max_page_size: true ใน Android.bp และ LOCAL_IGNORE_MAX_PAGE_SIZE := true ใน Android.mk เพื่อละเว้นชั่วคราว ให้พวกเขา การตั้งค่าเหล่านี้จะยืนยันรายการที่สร้างไว้ล่วงหน้าทั้งหมด และให้คุณตรวจหาได้ มีการอัปเดต แต่ไม่สอดคล้องกับขนาด 16 KB

  • คุณสามารถเรียกใช้ atest elf_alignment_test ซึ่งจะยืนยันความสอดคล้องของ ไฟล์ ELF ในอุปกรณ์ที่เปิดด้วย Android 15 (เวอร์ชันทดลอง AOSP) ขึ้นไป