পৃষ্ঠার আকার হল গ্রানুলারিটি যেখানে একটি OS মেমরি পরিচালনা করে। বেশিরভাগ CPU আজ 4 KB পৃষ্ঠার আকার সমর্থন করে এবং তাই Android OS এবং অ্যাপগুলি ঐতিহাসিকভাবে তৈরি করা হয়েছে এবং 4 KB পৃষ্ঠার আকারের সাথে চালানোর জন্য অপ্টিমাইজ করা হয়েছে। ARM CPU গুলি 16 KB পৃষ্ঠার আকারকে সমর্থন করে এবং Android 15 থেকে শুরু করে, AOSP 16 KB পৃষ্ঠা আকারের সাথে Android তৈরির জন্য সমর্থন করে। এই বিকল্পটি অতিরিক্ত মেমরি ব্যবহার করে কিন্তু সিস্টেমের কর্মক্ষমতা উন্নত করে। অ্যান্ড্রয়েড 15 হিসাবে, এই বিকল্পটি ডিফল্টরূপে সক্ষম নয়, তবে এটি ভবিষ্যতে সর্বত্র 16 KB মোডে স্যুইচ করার জন্য OEM এবং অ্যাপ বিকাশকারীদের জন্য একটি বিকাশকারী মোড বা বিকাশকারী বিকল্প হিসাবে উপলব্ধ।
16 KB পৃষ্ঠার আকার সক্ষম করুন৷
16 KB পৃষ্ঠাগুলি শুধুমাত্র arm64
টার্গেটে 16 KB কার্নেল সহ সমর্থিত। যাইহোক, কাটলফিশের জন্য x86_64
এ 16 KB ইউজারস্পেস সিমুলেট করার একটি বিকল্পও রয়েছে।
arm64
টার্গেটের জন্য, আপনি যদি আপনার কার্নেল তৈরি করতে ক্লিফ ব্যবহার করেন, --page_size=16k
16 KB মোডে কার্নেল তৈরি করে। আপনি যদি সরাসরি লিনাক্স কার্নেল কনফিগারেশন ব্যবহার করেন, আপনি CONFIG_ARM64_4K_PAGES
এর পরিবর্তে CONFIG_ARM64_16K_PAGES
সেট করে 16 KB পৃষ্ঠা নির্বাচন করতে পারেন।
অ্যান্ড্রয়েড ইউজারস্পেসে 16 কেবি পৃষ্ঠার আকার সমর্থন সক্ষম করতে, আপনার পণ্যে নিম্নলিখিত বিল্ড বিকল্পগুলি সেট করুন:
-
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
PAGE_SIZE
সংজ্ঞায়িত সরিয়ে দেয় এবং এটি রানটাইমে পৃষ্ঠার আকার নির্ধারণ করে। -
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
যা নিশ্চিত করে যে প্ল্যাটফর্ম ELF ফাইলগুলি 16 KB প্রান্তিককরণের সাথে তৈরি করা হয়েছে৷ প্রয়োজনের চেয়ে বড় এই আকারটি ভবিষ্যতের সামঞ্জস্যের জন্য। 16 KB ELF প্রান্তিককরণের সাথে, কার্নেল 4 KB/16 KB পৃষ্ঠার আকার সমর্থন করতে পারে।
বিল্ড পতাকা যাচাই করুন
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
প্রদান করলে, আপনার বিল্ড পতাকা সঠিকভাবে সেট আপ করা হয়েছে।
16 KB ELF প্রান্তিককরণের সাথে শেয়ার্ড লাইব্রেরি তৈরি করুন৷
শেয়ার্ড লাইব্রেরি তৈরি করতে যা অ্যান্ড্রয়েড প্রোজেক্টের অংশ, 16 কেবি পৃষ্ঠার আকার সক্ষম করার আগের সেটিংস যথেষ্ট:
-
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
-
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
শেয়ার্ড লাইব্রেরি তৈরি করতে যা অ্যান্ড্রয়েড প্রকল্পের অংশ নয়, আপনাকে এই লিঙ্কার পতাকাটি পাস করতে হবে:
-Wl,-z,max-page-size=16384
16 KB ELF প্রান্তিককরণের জন্য বাইনারি এবং প্রিবিল্ট যাচাই করুন
প্রান্তিককরণ এবং রানটাইম আচরণ যাচাই করার সর্বোত্তম উপায় হল একটি 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
চালাতে পারেন যা Android 15 এবং তার পরে চালু হওয়া ডিভাইসগুলিতে অন-ডিভাইস ELF ফাইলগুলির প্রান্তিককরণ যাচাই করে৷