docker原理:cgroup

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的子系統可以有很多,也在不斷增加中。

參考

DOCKER基礎技術:LINUX CGROUP

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章