我尝试在 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 大页面。