تفعيل حجم الصفحة الذي يبلغ 16 كيلوبايت

يتوافق الإصدار Android 15 (الإصدار التجريبي من AOSP) والإصدارات الأحدث مع إصدار Android بحجم صفحة يبلغ 16 كيلوبايت. يستخدم هذا الخيار ذاكرة إضافية ولكنه يحسن أداء النظام.

لا تتوافق الصفحات التي يبلغ حجمها 16 كيلوبايت إلا مع استهدافات arm64 ذات النواة التي يبلغ حجمها 16 كيلوبايت. ومع ذلك، هناك خيار لمحاكاة مساحة المستخدم التي تبلغ 16 كيلوبايت على x86_64 لتطبيق Cuttlefish.

لتفعيل صفحات 16 كيلوبايت، يجب ضبط خيارات الإصدار التالية على جهاز:

  • تزيل السمة PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true التعريف PAGE_SIZE، وتجعل المكوّنات تحدد حجم الصفحة في وقت التشغيل.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 الذي يضمن إنشاء ملفات ELF للنظام الأساسي بتنسيق 16 كيلوبايت هذا الحجم الأكبر من المطلوب للتوافق في المستقبل. من خلال محاذاة ELF التي تبلغ 16 كيلوبايت، يمكن أن تتيح النواة استخدام أحجام الصفحات التي تبلغ 4 كيلوبايت أو 16 كيلوبايت.

التأكّد من علامات الإصدار

بعد اختيار هدف 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 على التوالي، يعني ذلك أنّه تم إعداد علامات الإصدار بشكل صحيح.

إنشاء مكتبات مشتركة باستخدام تنسيق ELF الذي يبلغ 16 كيلوبايت

لإنشاء مكتبات مشتركة تشكّل جزءًا من مشروع Android، ما عليك سوى وضع علامات التصميم هذه في هدفك:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

لإنشاء مكتبات مشتركة ليست جزءًا من مشروع Android، يجب تمرير علامة الربط هذه:

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

التحقُّق من البرامج الثنائية والعناصر المُعَدة مسبقًا لمحاذاة ELF بحجم 16 كيلوبايت

أفضل طريقة للتحقق من المحاذاة وسلوك بيئة التشغيل هي الاختبار والتشغيل باستخدام نواة مجمّعة بـ 16 كيلوبايت. ومع ذلك، للتعرّف على بعض المشاكل في وقت سابق:

  • بدءًا من إصدار 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 كيلوبايت.

  • يمكنك تشغيل atest elf_alignment_test الذي يتحقّق من توافق ملفات ELF على الجهاز على الأجهزة التي تعمل بالإصدار 15 من Android (الإصدار التجريبي من AOSP) والإصدارات الأحدث.