更新时间:2025-07-21 GMT+08:00
内核代码大页
背景说明
对于一些代码段较大,访问频次较高的应用,会导致较高的iTlb miss,HCE支持代码大页特性(提供配置参数,默认关闭可手动开启),支持将应用程序的可执行部分放入到大页中, 以降低程序的iTLB miss,提升数据库(MySQL)、大型应用软件等大代码段应用性能。
使用说明
- 检查内核启动参数是否包含exec_hugepages,若无则要添加上才能使用该功能(需要重启)。
- 为单个程序开启代码大页
HUGEPAGE_ELF=1 ./app // 该环境变量不会被复制到子进程。HUGEPAGE_ELF=0时应用程序不使用大页。
- 为被hugepageedit标记的程序开启
export HUGEPAGE_PROBE=1 // 导出环境变量HUGEPAGE_PROBE。该环境变量可被复制到子进程。 hugepageedit ./app // 使用hugepageedit工具标记欲使能程序的二进制文件,glibc-devel包提供hugepageedit工具。 ./app // 启动使能代码大页的程序。
- 全局开启代码大页
echo 1 > /sys/kernel/mm/exec_hugepages/enabled // echo 0时关闭,且默认为0。开启后启动符合条件的程序会自动使用代码大页
- 查看是否启用
cat /proc/进程号/smaps | grep eh // 若有被标记eh的则说明成功启用
父主题: 内核功能与接口