cgroup_enable=cpuset cgroup_enable=内存 cgroup_memory=1 swapaccount=1 的目的是什么

Say*_*yay 6 boot raspberrypi cgroup kubernetes 20.04

我正在尝试使用 Ubuntu 20.04.3 在树莓派集群上设置 kubernetes 集群。在许多可用的在线指南中,其中提到的步骤之一如下:

编辑/boot/firmware/cmdline.txt并添加cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1在末尾。

上面提到的步骤没有任何解释。因此,为了检查我当前的配置(不应用上述启动配置),我运行/proc/cgroups它给出了以下输出:

#subsys_name    hierarchy       num_cgroups     enabled
cpuset  8       1       1
cpu     4       43      1
cpuacct 4       43      1
blkio   7       43      1
memory  0       51      0
devices 10      43      1
freezer 3       2       1
net_cls 2       1       1
perf_event      5       1       1
net_prio        2       1       1
pids    6       48      1
rdma    9       1       1
Run Code Online (Sandbox Code Playgroud)

由于需要禁用交换,我检查过它已经被禁用。因此我有以下问题:

  1. 我相信cpuset已启用的输出,因为已启用列的值为 1。我对么?如果是的话,是否需要明确设置cgroup_enable=cpuset
  2. 由于启用下的值为 0,因为memory我相信它未启用。我对么?如果是这样,那么cgroup_enable=memory做什么cgroup_memory=1?为什么我必须同时设置它们?
  3. 设置的目的是什么swapaccount=1?如果无论如何禁用交换,设置它是否有意义?

cgroups对我来说是一个新主题,因此我想更好地了解每个命令的作用,而不是盲目复制它们。

编辑:我浏览了内核源代码,发现没有任何所谓的cgroup_memory存在。是的,存在一个具有该名称的函数,但它绑定到一个命令cgroup.memory。那么,所有谈论的在线博客都cgroup_memory只是照原样复制了拼写错误吗?

fal*_*aff 1

对于 2,这两个标志似乎都是 Raspberry Pi Linux 内核特有的。可能cgroup_memory=1不再需要了,它意味着向后兼容标志。所以只要cgroup_memory=0不存在,cgroup_enable=memory就应该足够好了。Raspberry Pi bug tracker 中的这条评论表明了这一点。