হার্ডওয়্যার (বিশেষত, এমএমইউ , যা সিপিইউর অংশ) নির্ধারণ করে যে পৃষ্ঠার আকারগুলি কী সম্ভব। প্রসেসরের রেজিস্টার আকারের সাথে কোনও ঠিকানা নেই এবং কেবলমাত্র জায়গার আকারের সাথে একটি অপ্রত্যক্ষ সম্পর্ক রয়েছে (এতে এমএমইউ উভয়ই নির্ধারণ করে)।
প্রায় সমস্ত আর্কিটেকচার 4kB পৃষ্ঠার আকারকে সমর্থন করে। কিছু আর্কিটেকচার বড় পৃষ্ঠাগুলি সমর্থন করে (এবং কয়েকটি ছোট পৃষ্ঠাগুলিও সমর্থন করে) তবে 4 কেবি খুব বিস্তৃত ডিফল্ট।
লিনাক্স দুটি পৃষ্ঠার আকার সমর্থন করে:
- স্বাভাবিক আকারের পৃষ্ঠা, যা আমি বিশ্বাস করি, সব আর্কিটেকচারের ডিফল্টরূপে 4 KB যদিও কয়েকটি আর্কিটেকচার অন্যান্য মান অনুমতি, উপর যেমন 16kB ARM64 বা 8kB, 16kB বা 64kB উপর ia64 । এগুলি এমএমইউ (যা লিনাক্স পিটিই বলে ডাকে ) এর গভীর স্তরের বর্ণনাকারীর সাথে মিলে যায় ।
- বিশাল পৃষ্ঠাগুলি , যদি সংকলিত হয় (তবে
CONFIG_HUGETLB_PAGE
এটি প্রয়োজনীয় এবং CONFIG_HUGETLBFS
বেশিরভাগ ব্যবহারের জন্য)। এটি এমএমইউ বর্ণনাকারীদের দ্বিতীয়-গভীর স্তরের (যা লিনাক্স পিএমডি বলে) এর সাথে সামঞ্জস্য করে (বা কমপক্ষে এটি সাধারণত করে তোলে, আমি জানি না যে এটি সমস্ত আর্কিটেকচারের মধ্যে রয়েছে কিনা)।
পৃষ্ঠার আকার মেমরির ব্যবহার, মেমরির ব্যবহার এবং গতির মধ্যে একটি আপস।
- বৃহত্তর পৃষ্ঠার আকারের অর্থ যখন কোনও পৃষ্ঠা আংশিকভাবে ব্যবহৃত হয় তখন আরও অপচয় হয়, সুতরাং সিস্টেমটি মেমরির ক্ষতির বাইরে চলে যায়।
- একটি গভীর এমএমইউ বর্ণনাকারী স্তরের অর্থ পৃষ্ঠা টেবিলগুলির জন্য আরও কার্নেল মেমরি।
- একটি গভীর এমএমইউ বর্ণনাকারী স্তরের অর্থ পৃষ্ঠা সারণী ট্র্যাভারসালগুলিতে বেশি সময় ব্যয় করা।
বেশিরভাগ অ্যাপ্লিকেশনের জন্য বৃহত পৃষ্ঠার আকারগুলির লাভ খুব সামান্য, তবে ব্যয়টি যথেষ্ট। এ কারণেই বেশিরভাগ সিস্টেমগুলি কেবলমাত্র সাধারণ আকারের পৃষ্ঠা ব্যবহার করে use
getconf
ইউটিলিটি বা সি ফাংশন সহ আপনি আপনার সিস্টেমে (সাধারণ) পৃষ্ঠার আকারটি জিজ্ঞাসা করতে পারেন sysconf
।
$ getconf PAGE_SIZE
4096
বিশাল পৃষ্ঠাগুলি ব্যবহারের জন্য hugetlbfs
ফাইল সিস্টেমটি মাউন্ট করা এবং mmap
সেখানে ফাইলগুলি পিং করা প্রয়োজন ।