如何在 Amazon linux 2 上启用 cgroups V2

Posted

技术标签:

【中文标题】如何在 Amazon linux 2 上启用 cgroups V2【英文标题】:How to enable cgroups V2 on Amazon linux 2 【发布时间】:2021-09-08 15:21:04 【问题描述】:

我正在尝试在 Amazon linux 2 上启用 cgroups V2,但到目前为止没有成功。

我已经尝试添加

systemd.unified_cgroup_hierarchy=1

GRUB_CMDLINE_LINUX_DEFAULT/etc/default/grub,然后

grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

在那之后,我仍然没有看到 cgroup2 挂载。

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=4021004k,nr_inodes=1005251,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
/dev/nvme0n1p1 on / type xfs (rw,noatime,attr2,inode64,noquota)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=847)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=806356k,mode=700,uid=1000,gid=1000)

有人有这方面的经验吗?

【问题讨论】:

【参考方案1】:

您需要在启动参数中添加选项(systemd.unified_cgroup_hierarchy=1),或者像这样;

sudo grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="systemd.unified_cgroup_hierarchy=1"

重启 (/sbin/reboot) 到更新的配置,并挂载 cgroupv2;

sudo mount -t cgroup2 none /sys/fs/cgroup

然后您将能够看到已安装的 cgroup v2 及其控制器。

$ mount | grep cgroup2
none on /sys/fs/cgroup type cgroup2 (rw,relatime)
$ ls -lah /sys/fs/cgroup/
total 0
dr-xr-xr-x 2 root root 0 Dec 18 12:42 .
drwxr-xr-x 6 root root 0 Dec 18 12:35 ..
-r--r--r-- 1 root root 0 Dec 18 12:42 cgroup.controllers
-rw-r--r-- 1 root root 0 Dec 18 12:42 cgroup.max.depth
-rw-r--r-- 1 root root 0 Dec 18 12:42 cgroup.max.descendants
-rw-r--r-- 1 root root 0 Dec 18 12:42 cgroup.procs
-r--r--r-- 1 root root 0 Dec 18 12:42 cgroup.stat
-rw-r--r-- 1 root root 0 Dec 18 12:42 cgroup.subtree_control
-rw-r--r-- 1 root root 0 Dec 18 12:42 cgroup.threads
-rw-r--r-- 1 root root 0 Dec 18 12:42 cpu.pressure
-r--r--r-- 1 root root 0 Dec 18 12:42 cpu.stat
-rw-r--r-- 1 root root 0 Dec 18 12:42 io.pressure
-rw-r--r-- 1 root root 0 Dec 18 12:42 memory.pressure

更多信息请查看authoritative documentation on cgroup v2

【讨论】:

这会在内核更新之间保持不变吗?或者我是否必须在以后每次更新 krnel 后再次运行 grubby 命令?

以上是关于如何在 Amazon linux 2 上启用 cgroups V2的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon Beanstalk 和 Tomcat 上启用 HTML/JavaScript/CSS 的 gzip

pg_dump:如何在 Amazon Linux 上安装 PostgreSQL 9.5.2?

如何在 Amazon EC2 实例中启用根 SSH 访问?

如何在 AWS EB Amazon Linux 2 平台上为 cron.d 添加环境属性引用

如何在 Amazon Linux 2 平台上使用 Elastic Beanstalk 部署的 Node Js 中实现 gzip 压缩?

如何使用 Amazon Linux 2、单容器、无 Docker Compose 在 AWS Elastic Beanstalk 上获取 SYS_PTRACE