16 KB পৃষ্ঠার আকার

পৃষ্ঠার আকার হল গ্রানুলারিটি যেখানে একটি 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 ফাইলগুলির প্রান্তিককরণ যাচাই করে৷