cgroup
全稱Linux Control Group, 是Linux內核的一個功能,用來限制、控制與分離一個進程組羣的資源(如CPU、內存、磁盤輸入輸出等),可更具體地控制對系統資源的分配、優先順序等。
一句話總結,namesapce解決環境隔離問題,cgroup則解決對計算機資源使用上的隔離問題。
主要功能
- Resource limitation: 限制資源使用,比如內存使用上限以及文件系統的緩存限制。
- Prioritization: 優先級控制,比如:CPU利用和磁盤IO吞吐。
- Accounting: 一些審計或一些統計,主要目的是爲了計費。
- Control: 掛起進程,恢復執行進程。
術語
-
任務(Tasks):就是系統的一個進程。
-
控制組(Control Group):一組按照某種標準劃分的進程,比如官方文檔中的Professor和Student,或是WWW和System之類的,其表示了某進程組。Cgroups中的資源控制都是以控制組爲單位實現。一個進程可以加入到某個控制組。而資源的限制是定義在這個組上,就像上面示例中我用的haoel一樣。簡單點說,cgroup的呈現就是一個目錄帶一系列的可配置文件。
-
層級(Hierarchy):控制組可以組織成hierarchical的形式,既一顆控制組的樹(目錄結構)。控制組樹上的子節點繼承父結點的屬性。簡單點說,hierarchy就是在一個或多個子系統上的cgroups目錄樹。
-
子系統(Subsystem):一個子系統就是一個資源控制器,比如CPU子系統就是控制CPU時間分配的一個控制器。子系統必須附加到一個層級上才能起作用,一個子系統附加到某個層級以後,這個層級上的所有控制族羣都受到這個子系統的控制。Cgroup的子系統可以有很多,也在不斷增加中。