跳到主要内容

使用cgroup v2

fsched (版本fsched-10.70 +) 增加了对使用cgroup v2的系统的支持。 在ubuntu22的主机上,有的情况下需要用户先手动配置systemd以确保系统使用cgroup v2

注意
  • 在ubuntu22的主机上,需要先检查/proc/1/cgroup的内容,如果只有一行, 并且内容是0::/init.scope,那么系统已经是cgroup v2,不需要做额外配置,否则需要按照以下步骤配置systemd
  • 修改systemd配置后,该主机不能再挂载cgroup v1,所以不能在slurm配置为使用cgroup的情况下安装老的fsched版本 (fsched-10.70之前版本),否则slurmd不能启动,节点会变成未知状态

配置systemd以确保系统使用cgroup v2

在ubuntu22的主机上,如果/proc/1/cgroup的内容包含多行或首行以非0值开头,需要按照以下步骤配置systemd以确保系统使用cgroup v2

  1. 检查/proc/1/cgroup发现需要配置systemd

    root@jjtest-ubuntu22-3:~# cat /proc/1/cgroup
    2:cpuacct:/
    1:freezer:/
    0::/init.scope
  2. 修改grub, 增加参数systemd.unified_cgroup_hierarchy=1 systemd.legacy_systemd_cgroup_controller=0 cgroup_no_v1=all

    例如如果主机上当前的GRUB_CMDLINE_LINUX如下:

    root@jjtest-ubuntu22-3:~# grep -w GRUB_CMDLINE_LINUX /etc/default/grub
    GRUB_CMDLINE_LINUX="quiet splash net.ifnames=0 biosdevname=0"

    那么需要注释原GRUB_CMDLINE_LINUX的行,新的GRUB_CMDLINE_LINUX设置为在现有选项后添加cgroup相关参数:

    root@jjtest-ubuntu22-3:~# sed -e 's@^GRUB_CMDLINE_LINUX=@#GRUB_CMDLINE_LINUX=@' -i /etc/default/grub
    echo 'GRUB_CMDLINE_LINUX="quiet splash net.ifnames=0 biosdevname=0 systemd.unified_cgroup_hierarchy=1 systemd.legacy_systemd_cgroup_controller=0 cgroup_no_v1=all"' >> /etc/default/grub
  3. 更新grub

    root@jjtest-ubuntu22-3:~# update-grub
  4. 重启主机以使新的命令行选项生效

  5. 检查/proc/1/cgroup, 结果如下则配置成功

    root@jjtest-ubuntu22-3:~# cat /proc/1/cgroup
    0::/init.scope