跳转至

内存页

Linux内存⻚默认大小是4K的,所以每个4K都有一个对应的page结构体进行管理。Linux有大⻚功能,比如2M,1G大⻚,但这里的大⻚并不是指Linux管理物理内存的基本单位,而是指MMU⻚表项所能描述的最大物理块空间,使用更大的⻚,是为了减少TLB miss造成查⻚表带来的性能开销。一个大⻚,也是由多个连 续的物理⻚组成的,每个物理⻚也都有page结构体描述。所以,在Linux里面4K物理⻚,与Hugetlbfs中的大⻚是没有相接关系的。回到最初的问题,用一个page结构,管理一个4K大小的物理⻚,这个内存开销也不小,对于大内存机器来说,也是一个不小的开销。所以,在X86_64架构和ARM64架构里,Linux内核支持将物理⻚配置成64K⻚大小,即一个page结构描一个64K小的物理⻚。 综合起来,Linux的⻚是这样的:

1)从管理的⻆度来说,支持4K⻚和64K⻚ 2)从映射单位来说,支持4K/2M/1G,具体看体系架构

查看默认页大小命令:

$ getconf PAGE_SIZE
4096