Cgroups

cgroup 是一種命名空間嗎?

  • January 21, 2022

cgroup 是一種命名空間嗎?

我問這個是因為我看到部落格說 cgroup 和命名空間是不同的。但是,在不同的 linux 命令中,cgroup 被視為一種命名空間。例如,

% unshare --help | grep cgroup
-C, --cgroup[=<file>]     unshare cgroup namespace
% lsns --help | grep cgroup
-t, --type <name>      namespace type (mnt, net, ipc, user, pid, uts, cgroup)

這裡到底發生了什麼?

許多不同的命名空間類型,Cgroup 就是其中之一:

  • 集團
  • 工業PC
  • 網路
  • PID
  • 時間
  • 使用者
  • UTS(主機名和 NIS 域名)

但是 cgroup 和cgroup 命名空間的操作方式不同;cgroup 命名空間虛擬化 cgroup 層次結構。大多數時候你只會直接使用 cgroups,而不關心 cgroup 命名空間。

我發現斯蒂芬基特的回答是準確的。但是,如果您仍然無法理解,也許以下看待問題的方式可能會有所幫助。

選擇一個具有您很好理解的特性的命名空間。也許網路(網路)。並問這個問題:“網路和網路命名空間是一回事嗎?”。不,它們不是一回事,但兩者之間存在關係。在 Linux 中,網路可以指介面、IP 地址、路由表、過濾規則(例如 iptables/nft)。然後,您可以在系統上擁有許多網路命名空間,在每個網路命名空間內,您都有自己的一組介面、IP 地址、路由表、過濾規則。命名空間為特定的 Linux 功能(在我的範例中為網路)創建了一些虛擬環境。

cgroup 也是如此。在 Linux 中,cgroup 可能意味著一種限制和跟踪資源(例如 CPU 和記憶體)的方法。然後,您可以在系統上擁有許多 cgroup 命名空間,在每個組命名空間中,您都有自己的一組限制和資源跟踪。

引用自:https://unix.stackexchange.com/questions/686864