婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > linux cgroups詳細介紹

linux cgroups詳細介紹

熱門標簽:河南省鄭州市地圖標注 昆明外呼系統 福州呼叫中心外呼系統哪家好 七大洲地圖標注 地圖標注w是什么方向 新鄉人工智能電話機器人加盟 400電話申請找哪家公司 地圖標注需要提交啥資料入駐 臨汾電銷機器人費用

Cgroups是什么?

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

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

為什么要了解 cgroups

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

cgroups 的主要作用

實現 cgroups 的主要目的是為不同用戶層面的資源管理提供一個統一化的接口。從單個任務的資源控制到操作系統層面的虛擬化,cgroups 提供了四大功能:

  • 資源限制:cgroups 可以對任務是要的資源總額進行限制。
  • 比如設定任務運行時使用的內存上限,一旦超出就發 OOM。
  • 優先級分配:通過分配的 CPU 時間片數量和磁盤 IO 帶寬,實際上就等同于控制了任務運行的優先級。
  • 資源統計:cgoups 可以統計系統的資源使用量,比如 CPU 使用時長、內存用量等。這個功能非常適合當前云端產品按使用量計費的方式。
  • 任務控制:cgroups 可以對任務執行掛起、恢復等操作。

相關概念

Task(任務) 在 linux 系統中,內核本身的調度和管理并不對進程和線程進行區分,只是根據 clone 時傳入的參數的不同來從概念上區分進程和線程。這里使用 task 來表示系統的一個進程或線程。

Cgroup(控制組) cgroups 中的資源控制以 cgroup 為單位實現。Cgroup 表示按某種資源控制標準劃分而成的任務組,包含一個或多個子系統。一個任務可以加入某個 cgroup,也可以從某個 cgroup 遷移到另一個 cgroup。

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

Hierarchy(層級) 層級有一系列 cgroup 以一個樹狀結構排列而成,每個層級通過綁定對應的子系統進行資源控制。層級中的 cgroup 節點可以包含零個或多個子節點,子節點繼承父節點掛載的子系統。一個操作系統中可以有多個層級。

cgroups 的文件系統接口

cgroups 以文件的方式提供應用接口,我們可以通過 mount 命令來查看 cgroups 默認的掛載點:

復制代碼 代碼如下:
$ mount | grep cgroup

第一行的 tmpfs 說明 /sys/fs/cgroup 目錄下的文件都是存在于內存中的臨時文件。
第二行的掛載點 /sys/fs/cgroup/systemd 用于 systemd 系統對 cgroups 的支持,相關內容筆者今后會做專門的介紹。
其余的掛載點則是內核支持的各個子系統的根級層級結構。

需要注意的是,在使用 systemd 系統的操作系統中,/sys/fs/cgroup 目錄都是由 systemd 在系統啟動的過程中掛載的,并且掛載為只讀的類型。換句話說,系統是不建議我們在 /sys/fs/cgroup 目錄下創建新的目錄并掛載其它子系統的。這一點與之前的操作系統不太一樣。

下面讓我們來探索一下 /sys/fs/cgroup 目錄及其子目錄下都是些什么:

/sys/fs/cgroup 目錄下是各個子系統的根目錄。我們以 memory 子系統為例,看看 memory 目錄下都有什么?

這些文件就是 cgroups 的 memory 子系統中的根級設置。比如 memory.limit_in_bytes 中的數字用來限制進程的最大可用內存,memory.swappiness 中保存著使用 swap 的權重等等。

既然 cgroups 是以這些文件作為 API 的,那么我就可以通過創建或者是修改這些文件的內容來應用 cgroups。具體該怎么做呢?比如我們怎么才能限制某個進程可以使用的資源呢?接下來我們就通過簡單的 demo 來演示如何使用 cgroups 限制進程可以使用的資源。

查看進程所屬的 cgroups

可以通過 /proc/[pid]/cgroup 來查看指定進程屬于哪些 cgroup:

每一行包含用冒號隔開的三列,他們的含義分別是:

  • cgroup 樹的 ID, 和 /proc/cgroups 文件中的 ID 一一對應。
  • 和 cgroup 樹綁定的所有 subsystem,多個 subsystem 之間用逗號隔開。這里 name=systemd 表示沒有和任何 subsystem 綁定,只是給他起了個名字叫 systemd。
  • 進程在 cgroup 樹中的路徑,即進程所屬的 cgroup,這個路徑是相對于掛載點的相對路徑。

既然 cgroups 是以這些文件作為 API 的,那么我就可以通過創建或者是修改這些文件的內容來應用 cgroups。具體該怎么做呢?比如我們怎么才能限制某個進程可以使用的資源呢?接下來我們就通過簡單的 demo 來演示如何使用 cgroups 限制進程可以使用的資源。

cgroups 工具

在介紹通過 systemd 應用 cgroups 之前,我們先使用 cgroup-bin 工具包中的 cgexec 來演示 demo。Ubuntu 默認沒有安裝 cgroup-bin 工具包,請通過下面的命令安裝:

復制代碼 代碼如下:
$ sudo apt install cgroup-bin

demo:限制進程可用的 CPU

在我們使用 cgroups 時,最好不要直接在各個子系統的根目錄下直接修改其配置文件。推薦的方式是為不同的需求在子系統樹中定義不同的節點。比如我們可以在 /sys/fs/cgroup/cpu 目錄下新建一個名稱為 nick_cpu 的目錄:

$ cd /sys/fs/cgroup/cpu
$ sudo mkdir nick_cpu

然后查看新建的目錄下的內容:

是不是有點吃驚,cgroups 的文件系統會在創建文件目錄的時候自動創建這些配置文件!

讓我們通過下面的設置把 CPU 周期限制為總量的十分之一:

$ sudo su$ echo 100000 > nick_cpu/cpu.cfs_period_us
$ echo 10000 > nick_cpu/cpu.cfs_quota_us

上面的兩個參數眼熟嗎?沒錯,筆者在《Docker: 限制容器可用的 CPU》一文中介紹的 "--cpu-period=100000 --cpu-quota=200000" 就是由它們實現的。

然后創建一個 CPU 密集型的程序:

void main()
{ unsigned int i, end;
 end = 1024 * 1024 * 1024; 
for(i = 0; i < end; 
) { i ++; }}

保存為文件 cputime.c 編譯并通過不同的方式執行:

$ gcc cputime.c -o cputime
$ sudo su$ time ./cputime
$ time cgexec -g cpu:nick_cpu ./cputime

time 命令可以為我們報告程序執行消耗的時間,其中的 real 就是我們真實感受到的時間。使用 cgexec 能夠把我們添加的 cgroup 配置 nick_cpu 應用到運行 cputime 程序的進程上。 上圖顯示,默認的執行只需要 2s 左右。通過 cgroups 限制 CPU 資源后需要運行 23s。

demo:限制進程可用的內存

這次我們來限制進程可用的最大內存,在 /sys/fs/cgroup/memory 下創建目錄nick_memory:

$ cd /sys/fs/cgroup/memory
$ sudo mkdir nick_memory

下面的設置把進程的可用內存限制在最大 300M,并且不使用 swap:

# 物理內存 + SWAP <= 300 MB;1024*1024*300 = 314572800$ sudo su$ echo 314572800 > nick_memory/memory.limit_in_bytes$ echo 0 > nick_memory/memory.swappiness

然后創建一個不斷分配內存的程序,它分五次分配內存,每次申請 100M:

#include<stdio.h>#include<stdlib.h>#include<string.h>#define CHUNK_SIZE 1024 * 1024 * 100void main(){ char *p; int i; for(i = 0; i < 5; i ++) { p = malloc(sizeof(char) * CHUNK_SIZE); if(p == NULL) { printf("fail to malloc!"); return ; } // memset() 函數用來將指定內存的前 n 個字節設置為特定的值 memset(p, 0, CHUNK_SIZE); printf("malloc memory %d MB\n", (i + 1) * 100); }}

把上面的代碼保存為 mem.c 文件,然后編譯:

$ gcc mem.c -o mem

執行生成的 mem 程序:

$ ./mem

此時一切順利,然后加上剛才的約束試試:

$ cgexec -g memory:nick_memory ./mem

由于內存不足且禁止使用 swap,所以被限制資源的進程在申請內存時被強制殺死了。

下面再使用 stress 程序測試一個類似的場景(通過 stress 程序申請 500M 的內存):

$ sudo cgexec -g memory:nick_memory stress --vm 1 --vm-bytes 500000000 --vm-keep --verbose

stress 程序能夠提供比較詳細的信息,進程被殺掉的方式是收到了 SIGKILL(signal 9) 信號。

實際應用中往往要同時限制多種的資源,比如既限制 CPU 資源又限制內存資源。使用 cgexec 實現這樣的用例其實很簡單,直接指定多個 -g 選項就可以了:

$ cgexec -g cpu:nick_cpu -g memory:nick_memory ./cpumem

總結

cgroups 是 linux 內核提供的功能,由于牽涉的概念比較多,所以不太容易理解。本文試圖在介紹概念性內容的同時,用最簡單的 demo 演示 cgroups 的用法。希望直觀的 demo 能夠幫助大家理解 cgroups。

標簽:臨沂 岳陽 海口 股票 鎮江 紅河 烏海 四川

巨人網絡通訊聲明:本文標題《linux cgroups詳細介紹》,本文關鍵詞  linux,cgroups,詳細,介紹,linux,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《linux cgroups詳細介紹》相關的同類信息!
  • 本頁收集關于linux cgroups詳細介紹的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久久久久久精| 在线免费不卡电影| 日韩vs国产vs欧美| 亚洲高清一区二区三区| 偷偷要91色婷婷| 日本aⅴ免费视频一区二区三区| 一区二区三区不卡在线观看| 一区二区三区不卡在线观看| 亚洲地区一二三色| 日韩综合一区二区| 激情成人午夜视频| 国产精品综合视频| 99精品久久99久久久久| 日本乱人伦一区| 欧美另类z0zxhd电影| 精品国产乱子伦一区| 国产色综合久久| 亚洲激情自拍视频| 琪琪久久久久日韩精品| 国产一区二区三区在线观看精品| 国产精品一线二线三线| k8久久久一区二区三区| 在线观看日韩一区| 日韩欧美www| **网站欧美大片在线观看| 亚洲一区二区精品视频| 蜜臀国产一区二区三区在线播放| 国产精选一区二区三区| 在线看国产一区二区| 欧美一区二区三区四区五区| 国产蜜臀av在线一区二区三区| 亚洲欧美日韩国产手机在线| 久久99这里只有精品| 99久久久精品免费观看国产蜜| 欧美欧美午夜aⅴ在线观看| 2021国产精品久久精品| 亚洲精品国产高清久久伦理二区| 视频一区二区不卡| 99热在这里有精品免费| 欧美xxxxxxxxx| 亚洲国产视频一区二区| 国产另类ts人妖一区二区| 91麻豆福利精品推荐| 日韩三级高清在线| 亚洲影视在线观看| 99久久精品国产麻豆演员表| 欧美一区二区三区不卡| 一区二区免费在线| 99久久久久久| 国产精品少妇自拍| 狠狠色丁香久久婷婷综合_中| 在线亚洲+欧美+日本专区| 亚洲国产经典视频| 国产一区二区三区av电影 | av在线播放一区二区三区| 91精品国产综合久久小美女| 亚洲视频免费观看| 不卡电影一区二区三区| 久久综合久久鬼色| 裸体一区二区三区| 欧美久久久久久蜜桃| 亚洲老妇xxxxxx| 99久久精品国产导航| 国产精品日韩精品欧美在线| 国产乱子轮精品视频| 日韩精品中文字幕一区二区三区| 午夜欧美一区二区三区在线播放| 91国产福利在线| 亚洲综合在线视频| 欧美日韩一卡二卡三卡| 一区二区三区毛片| 欧美日本一区二区在线观看| 亚洲一区二区四区蜜桃| 欧美视频一区二区在线观看| 曰韩精品一区二区| 欧美精品少妇一区二区三区 | 精品国产一二三区| 久久99精品久久久久| 精品久久久久久久人人人人传媒| 美女脱光内衣内裤视频久久网站| 日韩一区二区三区三四区视频在线观看 | 美腿丝袜一区二区三区| 欧美一级一区二区| 久久99精品国产.久久久久久| 日韩欧美二区三区| 国产精品原创巨作av| 中文字幕精品一区| 色偷偷久久人人79超碰人人澡| 亚洲欧美色图小说| 欧美日韩久久一区二区| 精品一区二区三区av| 欧美激情一二三区| 色诱视频网站一区| 日本不卡一区二区| 国产偷国产偷亚洲高清人白洁| 99热在这里有精品免费| 亚洲 欧美综合在线网络| 精品三级在线观看| 99久久夜色精品国产网站| 日韩激情视频在线观看| 久久久午夜精品| 91香蕉视频mp4| 免费观看一级欧美片| 国产精品白丝在线| 日韩午夜中文字幕| 成人国产电影网| 免费欧美高清视频| 国产精品不卡在线观看| 欧美电视剧在线观看完整版| 91欧美激情一区二区三区成人| 午夜电影一区二区| 最新国产成人在线观看| 日韩一区二区三区电影在线观看| 本田岬高潮一区二区三区| 免费欧美日韩国产三级电影| 亚洲同性gay激情无套| 精品欧美乱码久久久久久1区2区| 91在线国内视频| 国产成人精品网址| 日韩av电影免费观看高清完整版| 国产精品久久久久久久岛一牛影视 | 国产综合色视频| 午夜欧美大尺度福利影院在线看| 日本一区二区视频在线观看| 91麻豆精品国产无毒不卡在线观看| 成人高清免费在线播放| 久久99精品一区二区三区三区| 一区二区三区 在线观看视频 | 色综合久久中文字幕综合网| 久久国产精品区| 午夜日韩在线观看| 亚洲一区二区四区蜜桃| 亚洲三级在线播放| 国产精品每日更新在线播放网址 | 欧美午夜免费电影| 99久久精品一区| 成人免费看片app下载| 国产专区欧美精品| 美女爽到高潮91| 美女被吸乳得到大胸91| 日韩国产高清在线| 日日夜夜精品视频天天综合网| 曰韩精品一区二区| 亚洲综合色噜噜狠狠| 亚洲人吸女人奶水| 亚洲色大成网站www久久九九| 中文字幕视频一区二区三区久| 国产欧美日韩综合精品一区二区| 欧美成人女星排名| 精品国产乱码久久久久久免费| 欧美第一区第二区| 久久久久一区二区三区四区| 精品久久久久久久久久久久包黑料 | 国内精品伊人久久久久影院对白| 青青草国产成人av片免费 | 国产欧美日韩精品在线| 中文在线一区二区| 亚洲女人的天堂| 亚洲不卡av一区二区三区| 亚洲国产精品一区二区久久恐怖片| 亚洲男人的天堂在线aⅴ视频| 亚洲美女屁股眼交| 五月天中文字幕一区二区| 日日摸夜夜添夜夜添国产精品| 久久激情五月激情| 成人看片黄a免费看在线| 91麻豆.com| 宅男噜噜噜66一区二区66| 精品日韩99亚洲| 亚洲欧美日韩国产成人精品影院| 亚洲国产视频网站| 精品一区二区三区在线播放| 国产aⅴ精品一区二区三区色成熟| 99久久精品国产麻豆演员表| 欧美三级日韩三级国产三级| 精品粉嫩超白一线天av| 亚洲天堂成人网| 蜜臀精品久久久久久蜜臀| av资源网一区| 91精品国产综合久久久久| 国产日韩视频一区二区三区| 亚洲第一精品在线| 成人动漫视频在线| 91精品综合久久久久久| 国产精品激情偷乱一区二区∴| 亚洲永久免费av| 岛国一区二区在线观看| 欧日韩精品视频| 中文av字幕一区| 久久99深爱久久99精品| 欧美日韩一区视频| 国产欧美一区二区三区在线老狼| 亚洲高清久久久| 波多野结衣中文字幕一区二区三区| 欧美老年两性高潮| 亚洲免费观看高清完整版在线观看 | 色丁香久综合在线久综合在线观看| 日韩欧美在线网站| 一区二区三区鲁丝不卡| 99热这里都是精品|