Yanyg - Software Engineer

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