日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Docker Cgroups

發(fā)布時(shí)間:2025/6/17 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker Cgroups 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Docker中利用namespace來(lái)做權(quán)限控制,用cgroups來(lái)做資源控制,這兩個(gè)都是非常重要的,下面是整理了一些關(guān)于cgroups相關(guān)的。

cgroups全稱(chēng)control groups ,是Linux內(nèi)核提供的一種機(jī)制,用來(lái)限制、控制與分離一個(gè)進(jìn)程組的資源(如CPU、內(nèi)存、磁盤(pán)輸入輸出等)。

cgroups最初的目標(biāo)是為資源管理提供的一個(gè)統(tǒng)一的框架,即整合現(xiàn)有的cpuset等子系統(tǒng),也為未來(lái)開(kāi)發(fā)新的子系統(tǒng)提供接口。現(xiàn)在的cgroups適用于多種應(yīng)用場(chǎng)景,從單個(gè)進(jìn)程的資源控制,到實(shí)現(xiàn)操作系統(tǒng)層次的虛擬化,cgroups提供了以下功能:

  • 限制進(jìn)程組可以使用的資源數(shù)量(Resource limiting)。
  • 進(jìn)程組的優(yōu)先級(jí)控制(Prioritization)。
  • 記錄進(jìn)程組使用的資源數(shù)量(Accounting)。
  • 進(jìn)程組隔離(lsolation)。
  • 進(jìn)程控制組(control)。
  • cgroup的API以一個(gè)偽文件系統(tǒng)的方式實(shí)現(xiàn),即用戶可以通過(guò)文件操作實(shí)現(xiàn)cgroup的組織管理。

    cgroup 的組織管理操作單元可以細(xì)粒度到線程級(jí)別,用戶態(tài)代碼也可以針對(duì)系統(tǒng)分配的資源創(chuàng)建和銷(xiāo)毀cgroup,從而實(shí)現(xiàn)資源再分配和管理。

    所有資源管理的功能都以subsystem(子系統(tǒng))的方式實(shí)現(xiàn)。

    子進(jìn)程創(chuàng)建之初與其父進(jìn)程處于同一個(gè)cgroups的控制組。

    術(shù)語(yǔ):

    task(任務(wù))

    系統(tǒng)中的進(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中的subsystem就是一個(gè)資源調(diào)度控制器(Resource Controller)。比如CPU子系統(tǒng)可以控制CPU時(shí)間分配,內(nèi)存子系統(tǒng)可以限制cgroup內(nèi)存使用量。

    ?

    hierarchy(層級(jí)樹(shù))

    hierarchy由一系列cgroup以一個(gè)樹(shù)狀結(jié)構(gòu)排列而成,每個(gè)hierarchy通過(guò)綁定對(duì)應(yīng)的subsystem進(jìn)行資源調(diào)度。hierarchy中的cgroup節(jié)點(diǎn)可以包含0或者多個(gè)子節(jié)點(diǎn),子節(jié)點(diǎn)繼承父節(jié)點(diǎn)屬性。整個(gè)系統(tǒng)可以有多個(gè)hierarchy。

    ?

    cgroup是分層管理的,類(lèi)似進(jìn)程,且子cgroup會(huì)繼承上級(jí)cgroup的一些屬性。

    ?

    下面簡(jiǎn)單做一個(gè)對(duì)指定進(jìn)程cpu使用率限制的例子感受下。

    先用mount命令查看掛載目錄

    mount -t cgroup

    ?

    cd 過(guò)去創(chuàng)建一個(gè)測(cè)試的節(jié)點(diǎn)(文件夾)

    cd /sys/fs/cgroup/cpu

    sudo mkdir cpu_limit_demo

    ?

    創(chuàng)建好cpu_limit_demo目錄后cd過(guò)去會(huì)發(fā)現(xiàn)系統(tǒng)會(huì)自動(dòng)創(chuàng)建很多文件。

    ?

    跟上一層路徑下面的文件很像,可以理解成是樹(shù)的更深一個(gè)層的節(jié)點(diǎn)。

    ?

    cfs_period 和 cfs_quota兩個(gè)文件,這兩個(gè)參數(shù)需要組合使用,可以用來(lái)限制進(jìn)程在長(zhǎng)度為cfs_period 的一段時(shí)間內(nèi),只能被分配到總量為cfs_quota 的 CPU 時(shí)間

    看下默認(rèn)值:

    ?

    -1表示不啟用,假如現(xiàn)在想控制某個(gè)進(jìn)程cpu上限是50%,就在quota里面直接插入一個(gè)50000(period的一半)。

    ?

    先跑一個(gè)whlie1 把 cpu 打滿

    while : ; do : ; done &

    ?

    然后執(zhí)行 echo 50000 > cpu.cfs_quota_us?限制50% 使用率,然后再把需要限制的pid卸載tasks里面 echo 30880 > tasks

    ?

    還有很多其他限制例子,可以看下這個(gè)

    https://www.cnblogs.com/wdliu/p/10509045.html

    ?

    ?

    ?

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Docker Cgroups的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。