在昨天我們介紹完 Namespace 這一個虛擬化技術的基本概念後,我們能大致了解到這種技術應用在容器的重要性。今天就讓我們來繼續探討另一個重要的容器技術,也就是CGroup(Control Groups)。
CGroups(Control Groups)是一種在 Linux Kernal 中控制行程的系統資源使用(系統資源包含CPU、Memory等),以實現資源管理和隔離的機制。這種機制可以確保系統運行的各種行程能夠有效分配系統資源,同時保持系統的效能和穩定性。
CGroups是由多個子系統(subsystems)所組成的,每個子系統負責控制和管理特定類型的資源。以下是一些常見的 CGroups 子系統以及其功能:
cpu:這個子系統可以限制行程的 CPU 使用,確保某些行程不會過度占用 CPU 資源。
memory:這個子系統又稱為 Memory Resource Controller,是用於限制行程的記憶體使用量,並提供檢視每個 CGroup 的實際記憶體使用情況。如果系統記憶體不足時,子系統會觸發 OOM(Out of Memory)事件,使系統終止某些行程以釋放記憶體資源,來確保系統的穩定性。
blkio:這個子系統用於控制每個 CGroup 磁碟 IO 的資源使用,這些限制包括讀取操作(Read IOPS)、寫入操作(Write IOPS)、讀取帶寬(Read Bps)、寫入帶寬(Write Bps)等。
devices:這個子系統又稱為 Device Whitelist Controller,是用於控制行程對設備的訪問權限,以提高系統的安全性和資源隔離性。
cpuset:這個子系統用於管理和分配 CPU 資源給指定的 CGroups 或行程,以確保不同工作負載之間的資源分配,提升系統的穩定性。
CGroups(Control Groups)是一個重要的概念,在微服務中可以有效地進行資源管理和控制,確保容器或微服務在共享資源的同時保持良好的效能和穩定性。CGroups 提供了多個子系統,如同以上所述,每個子系統負責不同類型的資源管理,而通過使用這些子系統,我們可以更輕鬆地控制容器資源使用。
我們明天見~