我正在尝试启用巨大的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
您需要使用此选项重新编译内核。