当 ubuntu 20.04 上的 1GB Huge Pages 使用 `echo 1 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages` 失败时该怎么办

当 ubuntu 20.04 上的 1GB Huge Pages 使用 `echo 1 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages` 失败时该怎么办

我尝试在 Ubuntu Desktop 20.04 上启用 1GB 大页面,使用echo 1 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages使用 root 用户帐户,但我无法使用 root 用户帐户写入/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages,因为我的 Ubuntu 桌面 20.04 上 hugepages-1048576kB 没有这样的文件或目录:我该如何解决这个问题?

答案1

... 可能太晚了,但对于偶尔使用谷歌的人来说:1 GB 的大页面/巨型页面只能在启动时分配(并且以后也是不可变的),与 x86_64 不同默认大页面大小为 2MiB,在运行时分配/更改(使用类似的echo XX > ...命令)。

任何一个

  • 你可以通过指定以下方式将“默认”大页面大小设置为 1GiB(覆盖上述 2MiB 默认大页面大小)default_hugepagesz=1G hugepages=XX 或者
  • 您可以使用以下方式将 1GiB 定义为“额外”大页面大小hugepagesz=1G hugepages=XX

在内核的命令行上(例如通过 grub)。

您甚至可以决定定义两个(或更多)集合, hugepagesz=1G hugepages=XX hugepagesz=2M hugepages=YY 最终XX每个页面大小为 1GiB,YY每个页面大小为 2MiB(无论对于哪种用例,这都可能是合适的)。

所有这些“特殊地区”都必须连续的在物理 RAM 中,无论是在启动时分配(有大量未碎片化的可用 RAM),还是稍后分配。

就我个人而言,我更喜欢固定的无论如何,为了nr_hugepages更好地控制,可以在内核启动时设置,也可以在启动过程的早期使用早期的 systemd 服务/启动脚本进行设置。

如果您的服务器运行了很长一段时间,RAM 往往会变得碎片化,并且echo XX > /proc/sys/vm/nr_hugepages可能会出现故障,这仅仅是因为内核无法找到足够大的连续内存区域来容纳您的 XX 大页面。

相关内容