Linux系统启动期间预留的Hugepage内存是否持续?

Whether the Hugepage Memory Reserved During Linux System Startup Is Continuous?

例如:

通过将以下行作为根用户添加到 /etc/default/grub 文件中的内核命令行选项,为 1 GB 页面创建一个 HugeTLB 池:

default_hugepagesz=16G hugepagesz=1G

Linux是否保证16GB的hugepage内存是连续的?如果不是,有什么命令可以查看是否连续吗?

每个 hugetlbfs“页面”在物理上都是连续的。从一页到下一页,不保证物理上相邻。

在启动时分配更大的页面大小(即 1GB)的原因是 运行 系统上的内存随着时间的推移变得更加碎片化,并且找到大的、连续的内存块以供大页面使用变得越来越多罕见。

在回答您的问题时,如果您的体系结构支持创建 16GB 页面大小,那么可以,单个 16GB 页面在物理上是连续的。

来源https://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html#hugetlbpage:

hugepagesz Specify a huge page size. Used in conjunction with hugepages parameter to preallocate a number of huge pages of the specified size. Hence, hugepagesz and hugepages are typically specified in pairs such as:

hugepagesz=2M hugepages=512 hugepagesz can only be specified once on the command line for a specific huge page size. Valid huge page sizes are architecture dependent.

但是,文档中的这条评论让我相信通常不支持创建大于 1GB 的页面大小:

For example, x86 CPUs normally support 4K and 2M (1G if architecturally supported) page sizes