CGroup 介紹
CGroup 是 Control Groups
的縮寫姨夹,是 Linux 內(nèi)核提供的一種可以限制、記錄矾策、隔離進(jìn)程組 (process groups) 所使用的物力資源 (如 cpu memory
i/o 等等) 的機(jī)制磷账。2007 年進(jìn)入 Linux 2.6.24 內(nèi)核,CGroups 不是全新創(chuàng)造的贾虽,它將進(jìn)程管理從 cpuset
中剝離出來逃糟,作者是 Google 的 Paul Menage。CGroups 也是 LXC 為實(shí)現(xiàn)虛擬化所使用的資源管理手段蓬豁。
CGroup 是將任意進(jìn)程進(jìn)行分組化管理的 Linux 內(nèi)核功能绰咽。CGroup 本身是提供將進(jìn)程進(jìn)行分組化管理的功能和接口的基礎(chǔ)結(jié)構(gòu),I/O
或內(nèi)存的分配控制等具體的資源管理功能是通過這個(gè)功能來實(shí)現(xiàn)的地粪。這些具體的資源管理功能稱為 CGroup 子系統(tǒng)或控制器取募。CGroup
子系統(tǒng)有控制內(nèi)存的 Memory 控制器、控制進(jìn)程調(diào)度的 CPU 控制器等蟆技。運(yùn)行中的內(nèi)核可以使用的 Cgroup
子系統(tǒng)由/proc/cgroup 來確認(rèn)玩敏。
CGroup 相關(guān)概念解釋
任務(wù)(task)斗忌。在 cgroups 中,任務(wù)就是系統(tǒng)的一個(gè)進(jìn)程旺聚;
控制族群(control group)织阳。控制族群就是一組按照某種標(biāo)準(zhǔn)劃分的進(jìn)程砰粹。Cgroups
中的資源控制都是以控制族群為單位實(shí)現(xiàn)唧躲。一個(gè)進(jìn)程可以加入到某個(gè)控制族群,也從一個(gè)進(jìn)程組遷移到另一個(gè)控制族群碱璃。一個(gè)進(jìn)程組的進(jìn)程可以使用
cgroups 以控制族群為單位分配的資源弄痹,同時(shí)受到 cgroups 以控制族群為單位設(shè)定的限制;
層級(hierarchy)嵌器「卣妫控制族群可以組織成 hierarchical 的形式,既一顆控制族群樹嘴秸』傩溃控制族群樹上的子節(jié)點(diǎn)控制族群是父節(jié)點(diǎn)控制族群的孩子,繼承父控制族群的特定的屬性岳掐;
子系統(tǒng)(subsystem)凭疮。一個(gè)子系統(tǒng)就是一個(gè)資源控制器,比如 cpu 子系統(tǒng)就是控制 cpu 時(shí)間分配的一個(gè)控制器串述。子系統(tǒng)必須附加(attach)到一個(gè)層級上才能起作用执解,一個(gè)子系統(tǒng)附加到某個(gè)層級以后,這個(gè)層級上的所有控制族群都受到這個(gè)子系統(tǒng)的控制纲酗。
也就是說任務(wù)就是系統(tǒng)的一個(gè)進(jìn)程衰腌,多個(gè)任務(wù)組成控制族群,多個(gè)控制族群組成一個(gè)層級觅赊,而每個(gè)層級都要有一個(gè)子系統(tǒng)控制調(diào)度右蕊。