ฮาร์ดแวร์ (โดยเฉพาะMMUซึ่งเป็นส่วนหนึ่งของ CPU) กำหนดขนาดหน้ากระดาษที่เป็นไปได้ ไม่มีความสัมพันธ์กับขนาดการลงทะเบียนของโปรเซสเซอร์และมีความสัมพันธ์ทางอ้อมกับขนาดพื้นที่ที่อยู่ (ในที่ MMU กำหนดทั้งสอง)
สถาปัตยกรรมเกือบทั้งหมดรองรับขนาดหน้ากระดาษ 4kB สถาปัตยกรรมบางแห่งรองรับหน้าเว็บที่ใหญ่ขึ้น (และอีกไม่กี่เพจก็สนับสนุนเพจขนาดเล็กกว่า) แต่ 4kB เป็นค่าเริ่มต้นที่แพร่หลายมาก
Linux รองรับสองขนาดหน้า:
- หน้าขนาดปกติซึ่งผมเชื่อว่าเป็น 4KB โดยเริ่มต้นในสถาปัตยกรรมทั้งหมดแม้ว่าสถาปัตยกรรมบางอนุญาตให้มีค่าอื่น ๆ เช่น 16kb ในARM64หรือ 8KB, 16KB หรือ 64kB ในIA64 สิ่งเหล่านี้สอดคล้องกับระดับที่ลึกที่สุดของคำอธิบายบน MMU (สิ่งที่ Linux เรียกPTE )
- หน้าเว็บขนาดใหญ่หากรวบรวมไว้ (
CONFIG_HUGETLB_PAGEจำเป็นและCONFIG_HUGETLBFSรวมถึงการใช้งานส่วนใหญ่ด้วย) สิ่งนี้สอดคล้องกับตัวบอก MMU ระดับลึกที่สุดอันดับสอง (สิ่งที่ Linux เรียกว่า PMD) (หรืออย่างน้อยก็มักจะทำฉันไม่รู้ว่าสิ่งนี้จะยึดตามสถาปัตยกรรมทั้งหมดหรือไม่)
ขนาดหน้ากระดาษมีการประนีประนอมระหว่างการใช้หน่วยความจำการใช้หน่วยความจำและความเร็ว
- ขนาดหน้ากระดาษที่ใหญ่ขึ้นหมายถึงการสิ้นเปลืองมากขึ้นเมื่อมีการใช้งานหน้ากระดาษเพียงบางส่วน
- ระดับตัวบ่งชี้ MMU ที่ลึกกว่าหมายถึงหน่วยความจำเคอร์เนลเพิ่มเติมสำหรับตารางหน้า
- ระดับตัวบ่งชี้ MMU ที่ลึกกว่าหมายถึงเวลาที่ใช้ในการสำรวจเส้นทางตารางหน้ามากขึ้น
กำไรที่เพิ่มขึ้นจากขนาดหน้ากระดาษที่เล็กมากสำหรับแอปพลิเคชั่นส่วนใหญ่ในขณะที่ต้นทุนนั้นสูง นี่คือเหตุผลที่ระบบส่วนใหญ่ใช้หน้าขนาดปกติเท่านั้น
ท่านสามารถสอบถาม (ปกติ) ขนาดหน้าในระบบของคุณกับยูทิลิตี้หรือฟังก์ชั่นซีgetconfsysconf
$ getconf PAGE_SIZE
4096
การใช้เพจขนาดใหญ่จำเป็นต้องติดตั้งhugetlbfsระบบไฟล์และmmapไฟล์ ping ที่นั่น