ฮาร์ดแวร์ (โดยเฉพาะ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 ที่ลึกกว่าหมายถึงเวลาที่ใช้ในการสำรวจเส้นทางตารางหน้ามากขึ้น
กำไรที่เพิ่มขึ้นจากขนาดหน้ากระดาษที่เล็กมากสำหรับแอปพลิเคชั่นส่วนใหญ่ในขณะที่ต้นทุนนั้นสูง นี่คือเหตุผลที่ระบบส่วนใหญ่ใช้หน้าขนาดปกติเท่านั้น
ท่านสามารถสอบถาม (ปกติ) ขนาดหน้าในระบบของคุณกับยูทิลิตี้หรือฟังก์ชั่นซีgetconf
sysconf
$ getconf PAGE_SIZE
4096
การใช้เพจขนาดใหญ่จำเป็นต้องติดตั้งhugetlbfs
ระบบไฟล์และmmap
ไฟล์ ping ที่นั่น