如何在 Ubuntu 上的 cgroup v2 中启用 HugeTLB 控制器

如何在 Ubuntu 上的 cgroup v2 中启用 HugeTLB 控制器

我正在尝试启用巨大的TLB我的系统上的 cgroup v2 上有控制器,但不知道如何操作。

这是我的系统上的控制器列表:

cat /sys/fs/cgroup/cgroup.controllers 
cpuset cpu io memory pids rdma

这是我在系统上看到的 meminfo:

cat /proc/meminfo | grep Huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB

我是否缺少在 cgroup v2 上启用 HugeTLB 控制器的某些内容?是否有内核标志或我需要启用的其他设置?

答案1

正如您可以在致谢页面底部附近看到的那样,Control Group v2 确实支持 HugeTLB 控制器。

与 V1 的区别在于,所有支持 v2 且不绑定到 v1 层次结构的控制器自动绑定到 v2 层次结构并显示在根目录中。

然后不需要在 mount 命令中指定额外的选项:

mount -t cgroup2 none $MOUNT_POINT

应该足够了。

您可以创建一些 cgroup 并通过读取其关联cgroup.controllers文件来检查巨大TLB 控制器是否可用。

当然(与任何其他控制器一样)它默认情况下不会激活。


全部学分kernel.org 官方文档。

答案2

大多数发行版内核都会设置此配置选项,但如果您编译了自己的内核,则可能会错过该CONFIG_CGROUP_HUGETLB选项。

您可以检查当前内核是否启用了此选项

grep CONFIG_CGROUP_HUGETLB /boot/config-`uname -r`

如果它不打印,CONFIG_CGROUP_HUGETLB=y您需要使用此选项重新编译内核。

相关内容