linux内核大页支持由启用机制、预分配数量、挂载方式、权限控制和thp屏蔽五维度协同决定;需确认内核配置与cpu支持,设置nr_hugepages,挂载hugetlbfs并授权,禁用透明大页。

确认并启用内核大页基础支持
先确保内核编译时已开启关键配置,否则后续所有操作无效:
- 运行 grep -i hugetlb /boot/config-$(uname -r),确认输出中包含:
CONFIG_HUGETLBFS=y 和 CONFIG_HUGETLB_PAGE=y - 检查 CPU 是否支持对应大小的大页:
2MB 大页 → 执行 grep pse /proc/cpuinfo(有输出即支持)
1GB 大页 → 执行 grep pdpe1gb /proc/cpuinfo - 若缺失任一配置,需重新编译内核;若 CPU 不支持,则只能用 2MB 或禁用该尺寸。
设定大页池容量(决定“可用量”)
这是最直接体现“支持力度”的参数——它定义了系统预留多少物理内存专供大页使用:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
-
临时生效(测试用):
echo 2048 | sudo tee /proc/sys/vm/nr_hugepages(分配 2048 个默认页,通常是 2MB) -
永久生效(生产推荐):
编辑 /etc/sysctl.conf,添加一行:
vm.nr_hugepages = 4096
然后执行 sysctl -p - 注意:实际能分配成功取决于连续空闲物理内存。若设置过大但内存碎片多,HugePages_Free 会远低于设定值,甚至为 0。
挂载 hugetlbfs 并授权访问(决定“谁能用”)
仅分配不挂载,应用无法通过 mmap 显式申请大页;不授权,普通用户或服务进程会被拒绝:
- 创建挂载点:sudo mkdir -p /hugepages
- 挂载(以 2MB 为例):
sudo mount -t hugetlbfs none /hugepages -o pagesize=2MB - 授权特定用户组(如 oracle 用户所在组 dba):
echo $(getent group dba | cut -d: -f3) | sudo tee /proc/sys/vm/hugetlb_shm_group - 为持久化,把 mount 命令写入 /etc/fstab(注意添加 defaults 和 pagesize=2MB 选项)。
关闭透明大页(THP)干扰(决定“是否干净”)
THP 会与标准大页竞争内存,并可能造成性能抖动(尤其数据库场景),必须显式禁用:
- 临时禁用:
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag - 永久禁用:在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 行末尾添加:
transparent_hugepage=never
再执行 sudo update-grub && sudo reboot










