在 Linux 中检查 Hugepages 是否启用
问题:
在你的 Linux 系统上,你想检查系统上是否启用了透明大页。
解决方案
这很简单:
check_hugepages.sh
cat /sys/kernel/mm/transparent_hugepage/enabled你会得到这样的输出:
hugepages_output.txt
always [madvise] never你会看到所有可能选项(always、madvise、never)的列表,当前活动选项用方括号括起来。madvise 是默认值。
这意味着透明大页仅为使用 madvise(2) 显式请求大页的内存区域启用。
always 意味着透明大页始终为每个进程启用。这通常提高性能,但如果你有许多每个只消耗少量内存的进程的用例,你的总体内存使用可能急剧增长。
never 意味着即使使用 madvise 请求,透明大页也不会启用。
详情请查看 Linux 内核文档中的 Documentation/vm/transhuge.txt。
如何更改默认值
选项 1: 直接修改 sysfs(设置在重启后恢复为默认值):
set_hugepages_sysfs.sh
echo always >/sys/kernel/mm/transparent_hugepage/enabled
echo madvise >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/enabled选项 2: 通过使用修改的配置重新编译内核来更改系统默认值(这仅在你使用自己的自定义内核时推荐):
为了将默认值设置为 always,设置这些选项:
set_hugepages_always.sh
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# Comment out CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y为了将默认值设置为 madvise,设置这些选项:
set_hugepages_madvise.sh
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
# Comment out CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=yCheck out similar posts by category:
Linux, Performance
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow