Hugepage实现与使用
现代CPU使用虚拟内存地址。每次访问内存时,CPU根据页表,获取对应的物理地址。CPU 使用TLB(Translation Lookaside Buffer)加速这一过程。为了进一步提高TLB命中率, CPU推出HugePage,支持2MB或1GB的大页。相比4KB的内存页,相同的TLB,可以命中更多的映射。另外一方面,大页可以缩减页表层次,进一步提高虚拟地址到物理地址的转换效率。
1 HugePage CPU侧的实现
2 Hugepage 在Linux的实现
[yanyg@x1{192.168.0.106} ~ ] <2022-07-16 15:12:38>
$ tree hub/linux-stable/fs/hugetlbfs/
hub/linux-stable/fs/hugetlbfs/
├── inode.c
└── Makefile
3 Linux Hugepage配置管理接口与应用
[yanyg@x1{192.168.0.106} ~ ] <2022-07-16 15:10:13>
$ tree /sys/kernel/mm/hugepages/
/sys/kernel/mm/hugepages/
├── hugepages-1048576kB
│ ├── free_hugepages
│ ├── nr_hugepages
│ ├── nr_hugepages_mempolicy
│ ├── nr_overcommit_hugepages
│ ├── resv_hugepages
│ └── surplus_hugepages
└── hugepages-2048kB
├── free_hugepages
├── nr_hugepages
├── nr_hugepages_mempolicy
├── nr_overcommit_hugepages
├── resv_hugepages
└── surplus_hugepages