在 Beowulf 计算节点上启用 cgroup

在 Beowulf 计算节点上启用 cgroup

我们正在使用 Penguin Computing 的 Scyld 发行版运行 Beowulf 集群,看起来 cgroups 是在头节点上配置的,而不是在计算节点上配置的。我正在尝试配置 Slurm 以使用该proctrack/cgroup插件,但它在计算节点上不起作用。

例如,我可以列出头节点上的 cgroup,但不能列出计算节点上的 cgroup:

$ bpsh -1 systemd-cgls
├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
├─user.slice
...
$ bpsh 1 systemd-cgls
Failed to create bus connection: No such file or directory
$

如果我查看 cgroup 系统的挂载点,它挂载在头节点上,而不是计算节点上。计算节点在该位置只有一个空目录。

$ bpsh -1 findmnt /sys/fs/cgroup
TARGET         SOURCE FSTYPE OPTIONS
/sys/fs/cgroup tmpfs  tmpfs  ro,nosuid,nodev,noexec,mode=755
$ bpsh 1 findmnt /sys/fs/cgroup
$ bpsh 1 ls -l /sys/fs/cgroup
total 0
$

我假设我必须在计算节点上启动一些 cgroup 服务,但该怎么做呢?我发现 RHEL文档关于 cgroups,但它只描述了如何使用它们,而不是初始设置。

更新

man7.org描述了如何安装 cgroups 控制器,但是说了这样的话:

请注意,在许多系统上,v1 控制器会自动挂载在 /sys/fs/cgroup 下;特别是,systemd(1) 会自动创建这样的挂载点。

这就解释了为什么我在头节点上看不到任何 cgroup 配置:它们只是自动安装的。为什么它们没有自动安装在计算节点上?

看起来驱动程序已加载到计算节点上,但尚未安装:

$ cat /proc/cgroups
#subsys_name    hierarchy   num_cgroups enabled
cpuset  6   1   1
cpu 4   1   1
cpuacct 4   1   1
memory  2   1   1
devices 3   1   1
freezer 10  1   1
net_cls 7   1   1
blkio   5   1   1
perf_event  9   1   1
hugetlb 8   1   1
pids    11  1   1
net_prio    7   1   1
$ bpsh 0 cat /proc/cgroups
#subsys_name    hierarchy   num_cgroups enabled
cpuset  0   1   1
cpu 0   1   1
cpuacct 0   1   1
memory  0   1   1
devices 0   1   1
freezer 0   1   1
net_cls 0   1   1
blkio   0   1   1
perf_event  0   1   1
hugetlb 0   1   1
pids    0   1   1
net_prio    0   1   1

我尝试在中搜索“cgroup” /var/log/messages,发现头节点正在初始化 cgroup 子系统,但计算节点却没有任何信息。

相关内容