在机器上有 38 GB 的内存。在我将大页面 (2048k) 的数量设置为 17290 后,我发现几乎所有的内存都已使用。但我没有运行任何进程。怎么会这样?我应该设置多少大页面?
答案1
您已将几乎所有内存都保留给巨大的 tlb 页。这样几乎没有内存可以存储实际数据。建议的大小约为您设置的 1/1,000。
答案2
这个问题很老了,但我认为另一个答案是错误的。取决于大页面的分配方式,如果当时正确使用
echo 17290 > /proc/sys/vm/nr_hugepages
或类似的东西,所看到的是预期的行为,并且如文档所述。保留人们认为工作负载所需的大页面数量是绝对可以的,并且所描述的场景中几乎所有可用内存都用完了也是意料之中的:
用作大页面的页面在内核中保留,不能用于其他用途。在内存压力下,大页面不能被换出。
https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt
其他人也做同样的事情:
将 vm.nr_hugepages 内核参数设置为合适的值。在本例中,我们决定使用 12GB,并将参数设置为 6144(6144*2M=12GB)。您可以运行:echo 6144 > /proc/sys/vm/nr_hugepages
https://blog.pythian.com/performance-tuning-hugepages-in-linux/