上一篇文章將到 Docker 容器使用 linux namespace 來隔離其運行環境,使得容器中的進程看起來就像愛一個獨立環境中運行一樣。但是,光有運行環境隔離還不夠,因為這些進程還是可以不受限制地使用系統資源,比如網絡、磁盤、CPU以及內存 等。為了讓容器中的進程更加可控,Docker 使用 Linux cgroups 來限制容器中的進程允許使用的系統資源。
1. 基礎知識:Linux control groups
1.1 概念
Linux Cgroup 可讓您為系統中所運行任務(進程)的用戶定義組群分配資源 ― 比如 CPU 時間、系統內存、網絡帶寬或者這些資源的組合。您可以監控您配置的 cgroup,拒絕 cgroup 訪問某些資源,甚至在運行的系統中動態配置您的 cgroup。所以,可以將 controll groups 理解為 controller (system resource) (for) (process)groups,也就是是說它以一組進程為目標進行系統資源分配和控制。
它主要提供了如下功能:
Resource limitation: 限制資源使用,比如內存使用上限以及文件系統的緩存限制。 Prioritization: 優先級控制,比如:CPU利用和磁盤IO吞吐。 Accounting: 一些審計或一些統計,主要目的是為了計費。 Control: 掛起進程,恢復執行進程。使用 cgroup,系統管理員可更具體地控制對系統資源的分配、優先順序、拒絕、管理和監控。可更好地根據任務和用戶分配硬件資源,提高總體效率。
新聞熱點
疑難解答