您好,登錄后才能下訂單哦!
這篇文章主要介紹cgroup在ceph中有什么用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
一、 Cgroup介紹
Cgroup是什么 Cgroups是control groups的縮寫(xiě),是Linux內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組(process groups)所使用的物理資源(如:cpu,memory,IO等等)的機(jī)制。最初由google的工程師提出,后來(lái)被整合進(jìn)Linux內(nèi)核。Cgroups也是LXC為實(shí)現(xiàn)虛擬化所使用的資源管理手段,可以說(shuō)沒(méi)有cgroups就沒(méi)有LXC。
Cgroup能做什么
Cgroups最初的目標(biāo)是為資源管理提供的一個(gè)統(tǒng)一的框架,既整合現(xiàn)有的cpuset等子系統(tǒng),也為未來(lái)開(kāi)發(fā)新的子系統(tǒng)提供接口?,F(xiàn)在的cgroups適用于多種應(yīng)用場(chǎng)景,從單個(gè)進(jìn)程的資源控制,到實(shí)現(xiàn)操作系統(tǒng)層次的虛擬化(OS Level Virtualization)。Cgroups提供了一下功能:
限制進(jìn)程組可以使用的資源數(shù)量(Resource limiting )。比如:memory子系統(tǒng)可以為進(jìn)程組設(shè)定一個(gè)memory使用上限,一旦進(jìn)程組使用的內(nèi)存達(dá)到限額再申請(qǐng)內(nèi)存,就會(huì)出發(fā)OOM(out of memory)。
進(jìn)程組的優(yōu)先級(jí)控制(Prioritization )。比如:可以使用cpu子系統(tǒng)為某個(gè)進(jìn)程組分配特定cpu share。
記錄進(jìn)程組使用的資源數(shù)量(Accounting )。比如:可以使用cpuacct子系統(tǒng)記錄某個(gè)進(jìn)程組使用的cpu時(shí)間
進(jìn)程組隔離(isolation)。比如:使用ns子系統(tǒng)可以使不同的進(jìn)程組使用不同的namespace,以達(dá)到隔離的目的,不同的進(jìn)程組有各自的進(jìn)程、網(wǎng)絡(luò)、文件系統(tǒng)掛載空間。
進(jìn)程組控制(control)。比如:使用freezer子系統(tǒng)可以將進(jìn)程組掛起和恢復(fù)。
Cgroup能做什么 相關(guān)概念
任務(wù)(task)。在cgroups中,任務(wù)就是系統(tǒng)的一個(gè)進(jìn)程。
控制族群(control group)??刂谱迦壕褪且唤M按照某種標(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è)定的限制。
層級(jí)(hierarchy)??刂谱迦嚎梢越M織成hierarchical的形式,既一顆控制族群樹(shù)??刂谱迦簶?shù)上的子節(jié)點(diǎn)控制族群是父節(jié)點(diǎn)控制族群的孩子,繼承父控制族群的特定的屬性。
子系統(tǒng)(subsytem)。一個(gè)子系統(tǒng)就是一個(gè)資源控制器,比如cpu子系統(tǒng)就是控制cpu時(shí)間分配的一個(gè)控制器。子系統(tǒng)必須附加(attach)到一個(gè)層級(jí)上才能起作用,一個(gè)子系統(tǒng)附加到某個(gè)層級(jí)以后,這個(gè)層級(jí)上的所有控制族群都受到這個(gè)子系統(tǒng)的控制。
相互關(guān)系
每次在系統(tǒng)中創(chuàng)建新層級(jí)時(shí),該系統(tǒng)中的所有任務(wù)都是那個(gè)層級(jí)的默認(rèn) cgroup(我們稱(chēng)之為 root cgroup ,此cgroup在創(chuàng)建層級(jí)時(shí)自動(dòng)創(chuàng)建,后面在該層級(jí)中創(chuàng)建的cgroup都是此cgroup的后代)的初始成員。
一個(gè)子系統(tǒng)最多只能附加到一個(gè)層級(jí)。
一個(gè)層級(jí)可以附加多個(gè)子系統(tǒng)。
一個(gè)任務(wù)可以是多個(gè)cgroup的成員,但是這些cgroup必須在不同的層級(jí)。
系統(tǒng)中的進(jìn)程(任務(wù))創(chuàng)建子進(jìn)程(任務(wù))時(shí),該子任務(wù)自動(dòng)成為其父進(jìn)程所在 cgroup 的成員。然后可根據(jù)需要將該子任務(wù)移動(dòng)到不同的 cgroup 中,但開(kāi)始時(shí)它總是繼承其父任務(wù) 的cgroup。
Cgroups子系統(tǒng)介紹 blkio -- 這個(gè)子系統(tǒng)為塊設(shè)備設(shè)定輸入/輸出限制,比如物理設(shè)備(磁盤(pán),固態(tài)硬盤(pán),USB 等等)。 cpu -- 這個(gè)子系統(tǒng)使用調(diào)度程序提供對(duì) CPU 的 cgroup 任務(wù)訪(fǎng)問(wèn)。 cpuacct -- 這個(gè)子系統(tǒng)自動(dòng)生成 cgroup 中任務(wù)所使用的 CPU 報(bào)告。 cpuset -- 這個(gè)子系統(tǒng)為 cgroup 中的任務(wù)分配獨(dú)立 CPU(在多核系統(tǒng))和內(nèi)存節(jié)點(diǎn)。 devices -- 這個(gè)子系統(tǒng)可允許或者拒絕 cgroup 中的任務(wù)訪(fǎng)問(wèn)設(shè)備。 freezer -- 這個(gè)子系統(tǒng)掛起或者恢復(fù) cgroup 中的任務(wù)。 memory -- 這個(gè)子系統(tǒng)設(shè)定 cgroup 中任務(wù)使用的內(nèi)存限制,并自動(dòng)生成由那些任務(wù)使用的內(nèi)存資源報(bào)告。 net_cls -- 這個(gè)子系統(tǒng)使用等級(jí)識(shí)別符(classid)標(biāo)記網(wǎng)絡(luò)數(shù)據(jù)包,可允許 Linux 流量控制程序(tc)識(shí)別從具體 cgroup 中生成的數(shù)據(jù)包。 ns -- 名稱(chēng)空間子系統(tǒng)。
以上是“cgroup在ceph中有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。