欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何探索云計(jì)算容器底層中的Cgroup

這篇文章將為大家詳細(xì)講解有關(guān)如何探索云計(jì)算容器底層中的Cgroup,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出烏蘭察布免費(fèi)做網(wǎng)站回饋大家。

一、什么是Cgroup,使用場(chǎng)景?

容器本質(zhì)上是進(jìn)程,既然是進(jìn)程就會(huì)消耗掉系統(tǒng)資源,比如:CPU、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)帶寬等,如果不加以限制,容器在某些情況下就會(huì)無(wú)限制地吃掉宿主機(jī)的系統(tǒng)資源,顯然這不是我們期望發(fā)生的,另外當(dāng)我們的環(huán)境中運(yùn)行了很多容器,且系統(tǒng)資源一定的情況下,我們有優(yōu)先保證主要容器應(yīng)用的需求,如何既能夠解決此問(wèn)題同時(shí)又能夠滿足我們的需求呢?答案就是:Linux Cgroup(全程Linux Control Group),在前面的文章中,介紹了namespace為容器這類進(jìn)程提供了隔離,而Cgroup可以為容器這類進(jìn)程提供資源使用上限,兩者黃金搭檔,共同為容器應(yīng)用保駕護(hù)航。

二、Cgroup的原理和實(shí)踐

CPU的周期控制

Cgroup可以為容器進(jìn)程使用的CPU、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)帶寬資源進(jìn)行限制,具體是如何實(shí)現(xiàn)的呢?接下來(lái)我們一起來(lái)實(shí)操下,在 Linux 中,Cgroups 給用戶暴露出來(lái)的操作接口是文件系統(tǒng),即它以文件和目錄的方式組織在操作系統(tǒng)的 /sys/fs/cgroup 這個(gè)路徑下,我們先去此目錄查看下

[root@k8s-master /]# cd sys/fs/cgroup/ [root@k8s-master cgroup]# ls blkio  cpuacct      cpuset   freezer  memory   net_cls,net_prio  perf_event  rdma cpu    cpu,cpuacct  devices  hugetlb  net_cls  net_prio          pids        systemd

可以看到在cgroup的這個(gè)目錄下存在很多子目錄,這些都是cgroup可以限制地資源種類,我們?cè)谶M(jìn)一步進(jìn)入到CPU的子目錄查看下,里面有限制資源種類的詳細(xì)的限制地指標(biāo),比如

1、cpu.cfs_period_us:指定容器對(duì)CPU的使用多長(zhǎng)時(shí)間重新做一次分配

2、cpu.cfs_quota_us:指在cpu.cfs_period_us周期內(nèi)給分配多少時(shí)間給容器

這兩個(gè)指標(biāo)需要一起配合使用來(lái)實(shí)現(xiàn)CPU的周期控制,我們先手動(dòng)模擬容器創(chuàng)建的時(shí)候,如何完成利用cgroup來(lái)實(shí)現(xiàn)資源限制,以CPU周期控制為例子,先在/sys/fs/cgroup/cpu目錄下創(chuàng)建1個(gè)container_

test的目錄,如下所示我已經(jīng)創(chuàng)建好(紅色字體)。

[![復(fù)制代碼](/upload/otherpic72/copycode.gif)](javascript:void(0); "復(fù)制代碼")

[root@k8s-master cgroup]# cd cpu [root@k8s-master cpu]# ls cgroup.clone_children  cpuacct.usage_all          cpu.cfs_period_us  docker cgroup.procs           cpuacct.usage_percpu       cpu.cfs_quota_us   kubepods cgroup.sane_behavior   cpuacct.usage_percpu_sys   cpu.rt_period_us   notify_on_release container_test         cpuacct.usage_percpu_user  cpu.rt_runtime_us  release_agent cpuacct.stat           cpuacct.usage_sys          cpu.shares         system.slice cpuacct.usage          cpuacct.usage_user         cpu.stat           tasks

[![復(fù)制代碼](/upload/otherpic72/copycode.gif)](javascript:void(0); "復(fù)制代碼")

 然后進(jìn)入到此目錄下,ls查看下,這里出現(xiàn)了一個(gè)神奇的形象,此目錄下自動(dòng)生成了很多CPU子系統(tǒng)控制的指標(biāo),這些指標(biāo)我們并未進(jìn)行新增,也就是說(shuō)在/sys/fs/cgroup/cpu目錄下會(huì)給新建的目默認(rèn)配置CPU子系統(tǒng)資源限制的指標(biāo)

[![復(fù)制代碼](/upload/otherpic72/copycode.gif)](javascript:void(0); "復(fù)制代碼")

[root@k8s-master cpu]# cd container_test/ [root@k8s-master container_test]# ls cgroup.clone_children  cpuacct.usage_percpu       cpu.cfs_period_us  cpu.stat cgroup.procs           cpuacct.usage_percpu_sys   cpu.cfs_quota_us   notify_on_release cpuacct.stat           cpuacct.usage_percpu_user  cpu.rt_period_us   tasks cpuacct.usage          cpuacct.usage_sys          cpu.rt_runtime_us cpuacct.usage_all      cpuacct.usage_user         cpu.shares

[![復(fù)制代碼](/upload/otherpic72/copycode.gif)](javascript:void(0); "復(fù)制代碼")

這些指標(biāo)如何作用呢?為了體現(xiàn)資源的使用情況,我們先寫(xiě)一個(gè)程序來(lái)模擬來(lái)吃掉系統(tǒng)資源的情況,然后再來(lái)查看指標(biāo)

[root@k8s-master sh]# cat while.sh  #!/bin/bash while : ; do : ; done &

[root@k8s-master sh]# sh while.sh

通過(guò)如上程序,寫(xiě)了一個(gè)while無(wú)限循環(huán)的shell腳本,默認(rèn)情況下,這個(gè)程序之后的進(jìn)程會(huì)占據(jù)掉系統(tǒng)所剩集群的所有資源,可通過(guò)top命令查看下

[root@k8s-master sh]# ps -ef |grep while root      14975      1 97 20:29 pts/1    00:02:48 sh while.sh

 如何探索云計(jì)算容器底層中的Cgroup

如上圖所示,while循環(huán)的進(jìn)程占據(jù)掉了96.3%的CPU資源,在實(shí)際的應(yīng)用中若進(jìn)程這樣無(wú)限制的使用資源,將會(huì)給操作系統(tǒng)帶來(lái)很大的負(fù)擔(dān),那么如何控制進(jìn)程資源的使用呢?回到我們之前創(chuàng)建在container_test目錄下

[root@k8s-master container_test]# cat cpu.cfs_quota_us  -1 [root@k8s-master container_test]# cat cpu.cfs_period_us 100000

 默認(rèn)創(chuàng)建的目錄下cfs_quota_us 若為-1,則表示還未啟用quota,即還未實(shí)行資源限制,cfs_period_us默認(rèn)為100000us=100ms=0.1s(秒),接下來(lái)我們向cpu.cfs_quota_us 輸入30ms=30000us,cfs_period_us值維持不變還是為100ms,在前面關(guān)于這2個(gè)概念有介紹,cpu.cfs_quota_us表示的是cfs_period_us的周期內(nèi),分配30/100的時(shí)間,即30%,接下來(lái)驗(yàn)證下

[root@k8s-master container_test]# echo 30000 > /sys/fs/cgroup/cpu/container_test/cpu.cfs_quota_us

[root@k8s-master container_test]# cat cpu.cfs_quota_us

  30000

設(shè)置已完成,但是此時(shí)還不會(huì)立即生效,還需要將進(jìn)程ID輸入到資源限制地task里

[root@k8s-master container_test]# echo 14975 > /sys/fs/cgroup/cpu/container_test/tasks

接下來(lái)我們?cè)谕ㄟ^(guò)top查看下資源使用情況,如下圖所示,可以看到CPU的資源使用上限由原來(lái)的96.3%已經(jīng)降到29.9%了,表明此while進(jìn)程的CPU的資源使用上限已經(jīng)設(shè)置成功。

 以上整個(gè)過(guò)程為手動(dòng)設(shè)置模擬容器創(chuàng)建的過(guò)程中CPU份額控制的過(guò)程,實(shí)際上在容器創(chuàng)建的過(guò)程中,并不需要上面這般步驟,我們只需要在run容器的時(shí)候指定指標(biāo)參數(shù)即可,如下所示

[root@k8s-master container_test]# docker run -it -d --cpu-period=100000 --cpu-quota=30000 nginx /bin/bash

上面的命令是后臺(tái)守護(hù)進(jìn)程的方式運(yùn)行了1個(gè)nginx的容器,且指定CPU的每隔100000us=100ms做一次分配,且每次分配給容器的時(shí)間為30ms,可以看到這個(gè)分配和前面手動(dòng)分配是一致的,值得注意的是這里需要加上-d來(lái)創(chuàng)建容器,若不加上的話會(huì)進(jìn)入到終端交互界面,一旦提出終端交互界面后,容器這個(gè)進(jìn)程也將會(huì)退出,而我們希望容器進(jìn)程保持后臺(tái)運(yùn)行,因此需要加上-d,容器運(yùn)行成功后,將會(huì)在docker目錄下新建一個(gè)以容器ID命名的目錄,這個(gè)目錄和前面手動(dòng)創(chuàng)建的目錄以上,系統(tǒng)會(huì)默認(rèn)配置資源限制的參數(shù),我們可以如下看下:

[root@k8s-master container_test]# docker run -it -d --cpu-period=100000 --cpu-quota=30000 nginx /bin/bash 16f51f6780685be9c83b1684515005f30aed91916fdd6573b28eaf56be201e4a
[root@k8s-master docker]# ls 01a0fd62d2110e54b0c3635b2897e7c18e6b78f026fa57b4214d7662dd3b38ba  cpuacct.usage_sys 16f51f6780685be9c83b1684515005f30aed91916fdd6573b28eaf56be201e4a  cpuacct.usage_user cgroup.clone_children                                             cpu.cfs_period_us cgroup.procs                                                      cpu.cfs_quota_us cpuacct.stat                                                      cpu.rt_period_us cpuacct.usage                                                     cpu.rt_runtime_us cpuacct.usage_all                                                 cpu.shares cpuacct.usage_percpu                                              cpu.stat cpuacct.usage_percpu_sys                                          notify_on_release cpuacct.usage_percpu_user                                         tasks

如上紅色部分為docker目錄下依據(jù)容器的名稱默認(rèn)創(chuàng)建的目錄,我們進(jìn)入到這個(gè)目錄,然后輸出下之前我們?cè)趧?chuàng)建的時(shí)候指定的cpu.cfs_quota_us和cfs_period_us值

[root@k8s-master 16f51f6780685be9c83b1684515005f30aed91916fdd6573b28eaf56be201e4a]# cat cpu.cfs_period_us  100000
[root@k8s-master 16f51f6780685be9c83b1684515005f30aed91916fdd6573b28eaf56be201e4a]# cat cpu.cfs_quota_us 30000

可以看到我們之前設(shè)置的值已經(jīng)生效了,也就是說(shuō)這個(gè)nginx的容器最多可以支持使用到30%左右的CPU帶寬。

相類似的我們可以對(duì)容器獲取CPU的資源的優(yōu)先級(jí)進(jìn)行設(shè)置,通過(guò)--cpu-share這個(gè)參數(shù),其指定的值并非是給容器具體的份額,其實(shí)是個(gè)權(quán)重,在需要對(duì)容器資源進(jìn)行限制時(shí)才會(huì)生效,權(quán)重大的,可以優(yōu)先得到CPU的資源;另外還可以對(duì)使用的核數(shù)進(jìn)行限制,針對(duì)多核的服務(wù)器,可以控制容器運(yùn)行限定使用哪些CPU內(nèi)核和內(nèi)存節(jié)點(diǎn),即使用-cpuset-cpus和-cpuset-mens參數(shù),比如:我們可以指定創(chuàng)建的容器只能用0、1、2三核。

三、總結(jié)

以CPU中周期控制限制某進(jìn)程的CPU資源使用為例子,介紹了其手動(dòng)設(shè)置參數(shù)和容器自動(dòng)設(shè)置參數(shù),每新建1個(gè)容器,在/sys/fs/cgroup/cpu/docker目錄下都會(huì)自動(dòng)以容器的ID為名字創(chuàng)建1個(gè)目錄,且在此目錄下支持對(duì)CPU、內(nèi)存、網(wǎng)絡(luò)帶寬、磁盤(pán)的資源使用進(jìn)行限制,而其限制地處理與CPU的周期控制是類似的,這里就未做過(guò)多介紹。

關(guān)于如何探索云計(jì)算容器底層中的Cgroup就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站標(biāo)題:如何探索云計(jì)算容器底層中的Cgroup
標(biāo)題網(wǎng)址:http://aaarwkj.com/article20/pesgco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、App設(shè)計(jì)、企業(yè)建站、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
国产精品一区二区三区播放| 亚洲一区二区中文字幕av| 国产老熟女高潮精品视频网站免费| 国产精品一区二区三区在线| 亚洲精品国产自在现线| 国产精品欧美久久久久久| 草草影院最新地址在线观看| 国产一区欧美二区日韩三区| 蜜桃视频在线观看91| 清纯唯美亚洲自拍第一页| 亚洲欧洲日本在线天堂 | 精品国产91久久粉嫩懂色| 日本电影在线看一区二区| 日韩一区二区三级电影| 最新国产情侣夫妻激情| 久热伊人精品国产中文| 国产不卡视频观看网站| 免费在线观看做性小视频| 不卡在线视频中文字幕| 日本乱码一区二区三区在线观看| 亚洲精品不卡一二三区| 亚洲精品一区二区三区香蕉| 精品福利视频蜜臀91| 成熟性性生活免费视频| 亚洲精品国产精品乱码不卞| 日韩色图在线观看视频| 天堂av一区二区在线播放| 久久97精品人人做人人爽| 中文字幕一区二区三天| av黄色天堂在线观看| 亚洲欧洲日韩另类在线| 日韩视频精品一区二区| 日本一区二区三区免费不卡视频| 国产精品国产精品无卡区| 亚洲欧美日韩另类在线视频| 亚洲一区在线观看激情| 中文字幕在线精品乱码麻豆| 日韩精品二区在线观看| 自拍日韩亚洲一区在线| 亚洲美女插入av网络导航| 成年人免费国产视频网站|