cgroup_enable=cpuset cgroup_enable=記憶體 cgroup_memory=1 swapaccount=1 的目的是什麼

cgroup_enable=cpuset cgroup_enable=記憶體 cgroup_memory=1 swapaccount=1 的目的是什麼

我正在嘗試使用 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

由於需要停用交換,我檢查過它已經停用。因此我有以下問題:

  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只是照原樣複製了拼字錯誤嗎?

答案1

對於 2,這兩個標誌似乎都是 Raspberry Pi Linux 核心特有的。可能cgroup_memory=1不再需要了,它意味著向後相容標誌。所以只要cgroup_memory=0不存在,cgroup_enable=memory就應該夠好了。這則評論Raspberry Pi bug 追蹤器中是這樣建議的。

相關內容