真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linuxcgroups詳細(xì)介紹-創(chuàng)新互聯(lián)

Cgroups是什么?

金水ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

cgroups(Control Groups) 是 linux 內(nèi)核提供的一種機(jī)制,這種機(jī)制可以根據(jù)需求把一系列系統(tǒng)任務(wù)及其子任務(wù)整合(或分隔)到按資源劃分等級的不同組內(nèi),從而為系統(tǒng)資源管理提供一個(gè)統(tǒng)一的框架。簡單說,cgroups 可以限制、記錄任務(wù)組所使用的物理資源。本質(zhì)上來說,cgroups 是內(nèi)核附加在程序上的一系列鉤子(hook),通過程序運(yùn)行時(shí)對資源的調(diào)度觸發(fā)相應(yīng)的鉤子以達(dá)到資源追蹤和限制的目的。

本文以 Ubuntu 16.04 系統(tǒng)為例介紹 cgroups,所有的 demo 均在該系統(tǒng)中演示。

為什么要了解 cgroups

在以容器技術(shù)為代表的虛擬化技術(shù)大行其道的時(shí)代了解 cgroups 技術(shù)是非常必要的!比如我們可以很方便的限制某個(gè)容器可以使用的 CPU、內(nèi)存等資源,這究竟是如何實(shí)現(xiàn)的呢?通過了解 cgroups 技術(shù),我們可以窺探到 linux 系統(tǒng)中整個(gè)資源限制系統(tǒng)的脈絡(luò)。從而幫助我們更好的理解和使用 linux 系統(tǒng)。

cgroups 的主要作用

實(shí)現(xiàn) cgroups 的主要目的是為不同用戶層面的資源管理提供一個(gè)統(tǒng)一化的接口。從單個(gè)任務(wù)的資源控制到操作系統(tǒng)層面的虛擬化,cgroups 提供了四大功能:

  • 資源限制:cgroups 可以對任務(wù)是要的資源總額進(jìn)行限制。
  • 比如設(shè)定任務(wù)運(yùn)行時(shí)使用的內(nèi)存上限,一旦超出就發(fā) OOM。
  • 優(yōu)先級分配:通過分配的 CPU 時(shí)間片數(shù)量和磁盤 IO 帶寬,實(shí)際上就等同于控制了任務(wù)運(yùn)行的優(yōu)先級。
  • 資源統(tǒng)計(jì):cgoups 可以統(tǒng)計(jì)系統(tǒng)的資源使用量,比如 CPU 使用時(shí)長、內(nèi)存用量等。這個(gè)功能非常適合當(dāng)前云端產(chǎn)品按使用量計(jì)費(fèi)的方式。
  • 任務(wù)控制:cgroups 可以對任務(wù)執(zhí)行掛起、恢復(fù)等操作。

相關(guān)概念

Task(任務(wù)) 在 linux 系統(tǒng)中,內(nèi)核本身的調(diào)度和管理并不對進(jìn)程和線程進(jìn)行區(qū)分,只是根據(jù) clone 時(shí)傳入的參數(shù)的不同來從概念上區(qū)分進(jìn)程和線程。這里使用 task 來表示系統(tǒng)的一個(gè)進(jìn)程或線程。

Cgroup(控制組) cgroups 中的資源控制以 cgroup 為單位實(shí)現(xiàn)。Cgroup 表示按某種資源控制標(biāo)準(zhǔn)劃分而成的任務(wù)組,包含一個(gè)或多個(gè)子系統(tǒng)。一個(gè)任務(wù)可以加入某個(gè) cgroup,也可以從某個(gè) cgroup 遷移到另一個(gè) cgroup。

Subsystem(子系統(tǒng)) cgroups 中的子系統(tǒng)就是一個(gè)資源調(diào)度控制器(又叫 controllers)。比如 CPU 子系統(tǒng)可以控制 CPU 的時(shí)間分配,內(nèi)存子系統(tǒng)可以限制內(nèi)存的使用量。以筆者使用的 Ubuntu 16.04.3 為例,其內(nèi)核版本為 4.10.0,支持的 subsystem 如下( cat /proc/cgroups):
blkio 對塊設(shè)備的 IO 進(jìn)行限制。
cpu 限制 CPU 時(shí)間片的分配,與 cpuacct 掛載在同一目錄。
cpuacct 生成 cgroup 中的任務(wù)占用 CPU 資源的報(bào)告,與 cpu 掛載在同一目錄。
cpuset 給 cgroup 中的任務(wù)分配獨(dú)立的 CPU(多處理器系統(tǒng)) 和內(nèi)存節(jié)點(diǎn)。
devices 允許或禁止 cgroup 中的任務(wù)訪問設(shè)備。
freezer 暫停/恢復(fù) cgroup 中的任務(wù)。
hugetlb 限制使用的內(nèi)存頁數(shù)量。
memory 對 cgroup 中的任務(wù)的可用內(nèi)存進(jìn)行限制,并自動(dòng)生成資源占用報(bào)告。
net_cls 使用等級識(shí)別符(classid)標(biāo)記網(wǎng)絡(luò)數(shù)據(jù)包,這讓 Linux 流量控制器(tc 指令)可以識(shí)別來自特定 cgroup 任務(wù)的數(shù)據(jù)包,并進(jìn)行網(wǎng)絡(luò)限制。
net_prio 允許基于 cgroup 設(shè)置網(wǎng)絡(luò)流量(netowork traffic)的優(yōu)先級。
perf_event 允許使用 perf 工具來監(jiān)控 cgroup。
pids 限制任務(wù)的數(shù)量。

Hierarchy(層級) 層級有一系列 cgroup 以一個(gè)樹狀結(jié)構(gòu)排列而成,每個(gè)層級通過綁定對應(yīng)的子系統(tǒng)進(jìn)行資源控制。層級中的 cgroup 節(jié)點(diǎn)可以包含零個(gè)或多個(gè)子節(jié)點(diǎn),子節(jié)點(diǎn)繼承父節(jié)點(diǎn)掛載的子系統(tǒng)。一個(gè)操作系統(tǒng)中可以有多個(gè)層級。

cgroups 的文件系統(tǒng)接口

cgroups 以文件的方式提供應(yīng)用接口,我們可以通過 mount 命令來查看 cgroups 默認(rèn)的掛載點(diǎn):

復(fù)制代碼 代碼如下:
網(wǎng)站名稱:linuxcgroups詳細(xì)介紹-創(chuàng)新互聯(lián)
當(dāng)前URL:http://weahome.cn/article/dopjic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部