应使用grep -i huge /proc/meminfo查看hugepages_total、hugepages_free、hugepages_rsvd等关键字段,结合grep -i hugetlb /proc/pid/status验证进程是否实际使用大页,而非误用不存在的minfo命令。

Linux 系统中没有 minfo 命令,它不是标准工具,也不用于内存检查——你可能混淆了命令名(比如误记为 minfo,实际想查的是 free、cat /proc/meminfo 或专门的大页工具)。检查大页(Huge Pages)分配情况,要用的是明确支持该功能的命令和接口。
看大页总量与已用数:/proc/meminfo 是最直接来源
大页相关统计全部由内核导出到 /proc/meminfo,执行以下命令即可获取关键指标:
grep -i huge /proc/meminfo
典型输出类似:
AnonHugePages: 122880 kB # 透明大页(THP)已分配的匿名内存(非用户显式申请) ShmemHugePages: 0 kB # 使用大页的共享内存页(需显式配置) HugePages_Total: 1024 # 管理员预设的巨页总数(如 2MB 页) HugePages_Free: 987 # 当前未分配的巨页数量 HugePages_Rsvd: 42 # 已被进程通过 mmap(MAP_HUGETLB) 预留但尚未使用的页数 HugePages_Surp: 0 # 超额分配的巨页数(超出 HugePages_Total 的部分,通常为 0) Hugepagesize: 2048 kB # 每个巨页大小(单位 kB,常见为 2MB 或 1GB)
重点关注 HugePages_Free 和 HugePages_Rsvd:前者反映剩余可用数,后者说明已有进程成功预留但还没真正“触达”物理页——如果 Rsvd == Total 且 Free == 0,说明大页资源已被占满;若 Rsvd ,表示虽有预留,但仍有余量可分配。
确认大页是否被进程实际使用:用 grep + /proc/PID/status
仅看全局统计不够,还要验证具体进程有没有真正用上大页。对某进程 PID,运行:
grep -i hugetlb /proc/<pid>/status</pid>
返回类似:
HugetlbPages: 1024 kB # 表示该进程已映射 512 个 2MB 大页(注意单位是 kB,不是页数)
这个值不为 0,才说明该进程确实在使用大页内存(而非只预留了地址空间)。也可结合 pmap -x <pid></pid> 查看映射详情,含 huge 标记的行即为大页段。
检查透明大页(THP)状态:/sys/kernel/mm/transparent_hugepage
透明大页是内核自动管理的,不依赖预分配,但会影响性能表现。查看当前启用状态:
-
cat /sys/kernel/mm/transparent_hugepage/enabled→ 输出如[always] madvise never,方括号内为当前模式 -
cat /sys/kernel/mm/transparent_hugepage/defrag→ 查看是否开启后台合并碎片 -
grep AnonHugePages /proc/meminfo→ 数值高说明 THP 正在活跃使用
注意:free 命令本身不显示大页信息,它的 buff/cache 和 available 等列完全不区分普通页与大页,不能用于判断大页分配情况。











