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