এই পৃষ্ঠায় ডিভাইসে ব্যবহৃত কার্নেল পৃষ্ঠার সাইজ পাওয়ার বিভিন্ন উপায় তালিকাভুক্ত করা হয়েছে। ডিভাইসে কানেক্ট করতে, আপনি adb ব্যবহার করতে পারবেন।
$ adb shell
প্রোগ্রামিং কোড ব্যবহার করা
C++-এ, getpagesize(2) ব্যবহার করা ভাল:
# include <unistd.h>
...
... = getpagesize();
Java-তে, আপনি সিস্টেম কনফিগারেশন ব্যবহার করতে পারবেন:
import android.system.Os;
import android.system.OsConstants;
... = Os.sysconf(OsConstants._SC_PAGE_SIZE);
getconf কমান্ড ব্যবহার করা
পৃষ্ঠার সাইজ জানতে getconf কমান্ড ব্যবহার করুন, যা নিচে দেখানো হয়েছে:
$ getconf PAGE_SIZE
4096
/proc//smaps ছদ্ম ফাইল ব্যবহার করুন
সিউডো ফাইলের KernelPageSize ফিল্ডে /proc/<pid>/smaps পৃষ্ঠার
সাইজ দেখানো হয়, যা নিচে দেখানো হল:
$ grep KernelPageSize /proc/1/smaps
KernelPageSize: 4 kB
LD_SHOW_AUXV=1 লিঙ্কার ফ্ল্যাগ ব্যবহার করুন
যে প্রোগ্রামটি এক্সিকিউট হতে চলেছে, সেটির
সহায়ক ভেক্টর প্রিন্ট করতে LD_SHOW_AUXV ফ্ল্যাগ ব্যবহার করুন। AT_PAGESZ ফিল্ডে পৃষ্ঠার সাইজ থাকে,
যা এইভাবে দেখানো হয়:
$ LD_SHOW_AUXV=1 ls
AT_SYSINFO_EHDR 0x7250460000
AT_MINSIGSTKSZ 4720
AT_HWCAP 0b11111111111111111111111111111111
AT_PAGESZ 4096
AT_CLKTCK 100
AT_PHDR 0x5fda1e0040
AT_PHENT 56
AT_PHNUM 12
AT_BASE 0x72502f8000
AT_FLAGS 0
AT_ENTRY 0x5fda210000
AT_UID 0
AT_EUID 0
AT_GID 0
AT_EGID 0
AT_SECURE 0
AT_RANDOM 0x7fc59d66f8
AT_HWCAP2 0b100011001111111111
AT_EXECFN "/system/bin/ls"
AT_PLATFORM "aarch64"
data dev. init vendor
/proc/config.gz ছদ্ম ফাইল ব্যবহার করা
সিউডো ফাইলে পৃষ্ঠার সাইজের জন্য কার্নেল কনফিগারেশন চেক করুন
/proc/config.gz. পেজ সাইজের জন্য সম্ভাব্য কনফিগারেশনগুলি হল:
CONFIG_ARM64_4K_PAGES=y: কার্নেল ৪০৯৬-বাইট পৃষ্ঠা ব্যবহার করে।CONFIG_ARM64_16K_PAGES=y: কার্নেল ১৬৩৮৪-বাইট পৃষ্ঠা ব্যবহার করে।CONFIG_ARM64_64K_PAGES=y: কার্নেল ৬৫৫৩৬-বাইট পৃষ্ঠা ব্যবহার করে।
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y
সহায়ক ভেক্টর ব্যবহার করা
কোনও প্রোগ্রাম এক্সিকিউট করা হলে, কার্নেল, ডায়নামিক
লিঙ্কার দ্বারা ব্যবহৃত পৃষ্ঠার সাইজের মতো তথ্য সহ সহায়ক
ভেক্টর বরাদ্দ করে এবং ইনিশিয়ালাইজ করে। সহায়ক ভেক্টরটি ছদ্ম ফাইল
/proc/<pid>/auxv থেকে পড়া যেতে পারে। প্রসেস ১-এর সহায়ক ভেক্টরের পৃষ্ঠা সাইজকে
নিম্নলিখিতভাবে দেখানো যেতে পারে:
$ od -N8 -j56 -td8 -An /proc/1/auxv
4096
যেখানে:
odহেক্সাডেসিমাল, ডেসিমাল বা অন্য ফর্ম্যাটে ডাম্প ফাইল।-N8 -j56ফাইলটিতে অফসেট ৫৬ থেকে শুরু করে ৮ বাইট ডাম্প করে, যাAT_PAGESZ-এর সাথে সম্পর্কিত।-td8ভ্যালুকে দশমিক ৮-বাইট পূর্ণসংখ্যা হিসেবে ফর্ম্যাট করে।-Anশুধুমাত্র ভ্যালু দেখায়, এর অ্যাড্রেস দেখায় না।
কার্নেল ইমেজ থেকে পড়ুন
পৃষ্ঠার সাইজ নির্ধারণ করতে, আপনি কার্নেল ইমেজের হেডার পড়তে পারেন। আপনি কোন ধরনের কার্নেল বুট করছেন তা জানতে চাইলে, বুটলোডারে এটি কাজে লাগে।
কার্নেল হেডারের ২৫তম বাইটে পৃষ্ঠার সাইজ দেওয়া আছে:
$ file Image
Image: Linux kernel ARM64 boot executable Image, little-endian, 16K pages
$ hexdump -C Image -n 48
00000000 4d 5a 40 fa ff 7f 7b 14 00 00 00 00 00 00 00 00 |MZ@...{.........|
00000010 00 00 64 02 00 00 00 00 0c 00 00 00 00 00 00 00 |..d.............|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030
এই উদাহরণে, ভ্যালু হল 0x0C = 0000 1100b। বিট ১-এর ভ্যালু হল 0,
এবং বিট ২-এর ভ্যালু হল 1। এই দুটি বিট পড়লে, আমরা ডেসিমাল পদ্ধতিতে 10b বা 2 পাই।
এইসব বিটের মানের উপর ভিত্তি করে, আপনি কার্নেল পৃষ্ঠার সাইজ নির্ধারণ করতে
পারবেন:
0- উল্লেখ করা নেই1- ৪ কেবি2- ১৬ কেবি3- ৬৪ কেবি
আরও তথ্যের জন্য, Linux kernel ডকুমেন্টেশন দেখুন