اندازه صفحه 16 KB را فعال کنید

اندروید 15 (AOSP آزمایشی) و بالاتر از ساخت اندروید با اندازه صفحه 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 کیلوبایت

برای ساخت کتابخانه های مشترک که بخشی از پروژه اندروید هستند، فقط باید این پرچم های ساخت را در هدف خود تنظیم کنید:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

برای ساخت کتابخانه های مشترک که بخشی از پروژه اندروید نیستند، باید این پرچم پیوند دهنده را پاس کنید:

-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 روی دستگاه را در دستگاه‌هایی که با Android 15 (AOSP آزمایشی) و جدیدتر راه‌اندازی می‌شوند تأیید می‌کند.