Cgroups
cgroup 是一種命名空間嗎?
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 命名空間,在每個組命名空間中,您都有自己的一組限制和資源跟踪。