chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux技術(shù)中Cgroup的原理和實(shí)踐

454398 ? 來源:博客園 ? 作者:遙望那云端 ? 2020-10-15 14:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

CPU的周期控制

Cgroup可以為容器進(jìn)程使用的CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)帶寬資源進(jìn)行限制,具體是如何實(shí)現(xiàn)的呢?接下來我們一起來實(shí)操下,在 Linux 中,Cgroups 給用戶暴露出來的操作接口是文件系統(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)需要一起配合使用來實(shí)現(xiàn)CPU的周期控制,我們先手動(dòng)模擬容器創(chuàng)建的時(shí)候,如何完成利用cgroup來實(shí)現(xiàn)資源限制,以CPU周期控制為例子,先在/sys/fs/cgroup/cpu目錄下創(chuàng)建1個(gè)container_

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

[![復(fù)制代碼](https://common.cnblogs.com/images/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ù)制代碼](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “復(fù)制代碼”)

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

[![復(fù)制代碼](https://common.cnblogs.com/images/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ù)制代碼](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “復(fù)制代碼”)

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

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

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

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

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

如上圖所示,while循環(huán)的進(jìn)程占據(jù)掉了96.3%的CPU資源,在實(shí)際的應(yīng)用中若進(jìn)程這樣無限制的使用資源,將會(huì)給操作系統(tǒng)帶來很大的負(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(秒),接下來我們向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%,接下來驗(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

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

以上整個(gè)過程為手動(dòng)設(shè)置模擬容器創(chuàng)建的過程中CPU份額控制的過程,實(shí)際上在容器創(chuàng)建的過程中,并不需要上面這般步驟,我們只需要在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來創(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

[?。蹚?fù)制代碼](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “復(fù)制代碼”)

[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

[![復(fù)制代碼](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “復(fù)制代碼”)

如上紅色部分為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)生效了,也就是說這個(gè)nginx的容器最多可以支持使用到30%左右的CPU帶寬。

相類似的我們可以對(duì)容器獲取CPU的資源的優(yōu)先級(jí)進(jìn)行設(shè)置,通過--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ò)帶寬、磁盤的資源使用進(jìn)行限制,而其限制地處理與CPU的周期控制是類似的,這里就未做過多介紹
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11320

    瀏覽量

    225834
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11807

    瀏覽量

    219513
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    535

    瀏覽量

    23024
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何理解Linux內(nèi)核的PCIe驅(qū)動(dòng)

    各異的芯片組,加上各種 PCI 設(shè)備自身獨(dú)特的功能需求,Linux 內(nèi)核的 PCI 支持遠(yuǎn)比我們希望的要復(fù)雜得多。今天這篇文章,我們將從驅(qū)動(dòng)開發(fā)的視角,梳理 Linux PCI 設(shè)備驅(qū)動(dòng)的核心生命周期與關(guān)鍵 API。
    的頭像 發(fā)表于 04-11 17:22 ?1237次閱讀

    一文搞懂Linux權(quán)限體系

    Linux權(quán)限體系是運(yùn)維工作的基礎(chǔ)的基礎(chǔ)。無論你管理的是單機(jī)還是集群,權(quán)限問題導(dǎo)致的故障占總故障量的相當(dāng)比例。本文從一線運(yùn)維視角出發(fā),系統(tǒng)講解Linux權(quán)限模型的核心概念、常見場(chǎng)景、排障方法以及安全最佳
    的頭像 發(fā)表于 04-09 10:04 ?160次閱讀

    Linux內(nèi)核驅(qū)動(dòng)開發(fā)的技術(shù)核心精要

    開發(fā)必須理解的技術(shù)要點(diǎn),供從業(yè)者參考。 一、并發(fā)與同步:多核系統(tǒng)的根基 現(xiàn)代內(nèi)核默認(rèn)支持SMP(對(duì)稱多處理),驅(qū)動(dòng)代碼可能同時(shí)運(yùn)行在多個(gè)CPU核、中斷、軟中斷、搶占路徑上,競(jìng)態(tài)風(fēng)險(xiǎn)無處不在。內(nèi)核提供
    發(fā)表于 03-10 13:56

    利用Last Log(Ramoops)排查系統(tǒng)問題:配置與實(shí)踐指南

    Linux 內(nèi)核的ramoops機(jī)制實(shí)現(xiàn))可在系統(tǒng)異常時(shí)保存核心日志,為事后故障分析提供關(guān)鍵依據(jù)。本文將詳細(xì)介紹其配置方法與問題排查實(shí)踐,并通過具體案例演示實(shí)戰(zhàn)流程。
    的頭像 發(fā)表于 02-05 13:54 ?466次閱讀
    利用Last Log(Ramoops)排查系統(tǒng)問題:配置與<b class='flag-5'>實(shí)踐</b>指南

    實(shí)踐赴熱愛:我在深圳技術(shù)大學(xué)的開源鴻蒙成長(zhǎng)之旅

    從對(duì)開源技術(shù)一知半解的入門者,到能夠獨(dú)立參與開源項(xiàng)目、斬獲競(jìng)賽獎(jiǎng)項(xiàng)的實(shí)踐者,開源鴻蒙不僅打開了技術(shù)探索的大門,更重塑了學(xué)習(xí)方式與職業(yè)認(rèn)知。 在學(xué)校搭建的多梯度開源培養(yǎng)體系,深圳
    的頭像 發(fā)表于 02-04 11:06 ?435次閱讀
    以<b class='flag-5'>實(shí)踐</b>赴熱愛:我在深圳<b class='flag-5'>技術(shù)</b>大學(xué)的開源鴻蒙成長(zhǎng)之旅

    RK?平臺(tái)升級(jí)開發(fā):全場(chǎng)景方案與實(shí)踐指南,覆蓋常規(guī)系統(tǒng)和ab系統(tǒng)

    ? ? ? ? ? ? 在嵌入式 Linux 開發(fā)領(lǐng)域,瑞芯微( Rockchip )平臺(tái)憑借其穩(wěn)定的性能和豐富的生態(tài)支持,被廣泛應(yīng)用于各類智能設(shè)備。而設(shè)備的升級(jí)功能作為保障產(chǎn)品生命周期、優(yōu)化
    的頭像 發(fā)表于 01-13 15:35 ?1442次閱讀
    RK?平臺(tái)升級(jí)開發(fā):全場(chǎng)景方案與<b class='flag-5'>實(shí)踐</b>指南,覆蓋常規(guī)系統(tǒng)和ab系統(tǒng)

    華為構(gòu)網(wǎng)型儲(chǔ)能技術(shù)進(jìn)展與商用實(shí)踐

    11月24日,以“加速構(gòu)網(wǎng)技術(shù)應(yīng)用實(shí)證,支撐新型電力系統(tǒng)高質(zhì)量發(fā)展”為主題的構(gòu)網(wǎng)型儲(chǔ)能應(yīng)用與發(fā)展論壇在長(zhǎng)沙舉辦。華為數(shù)字能源構(gòu)網(wǎng)型儲(chǔ)能領(lǐng)域總裁鄭越發(fā)表題為“華為構(gòu)網(wǎng)型儲(chǔ)能技術(shù)進(jìn)展與商用實(shí)踐”的主旨演講,全面分享了華為在構(gòu)網(wǎng)型儲(chǔ)能
    的頭像 發(fā)表于 12-01 10:54 ?983次閱讀

    軟國(guó)際全場(chǎng)景AI實(shí)踐

    近日,軟國(guó)際與華為云“同舟共濟(jì)”戰(zhàn)略合作8周年慶典暨“云智能行業(yè)賦能,全場(chǎng)景AI正當(dāng)時(shí)”高峰論壇隆重舉行,會(huì)上軟國(guó)際副總裁、AI研究院院長(zhǎng)萬如意博士發(fā)表了題為《軟國(guó)際全場(chǎng)景AI實(shí)踐
    的頭像 發(fā)表于 07-24 16:32 ?1173次閱讀

    一文掌握Linux命令

    作為一名運(yùn)維工程師,熟練掌握Linux命令是基本功的基本功。無論是日常工作的系統(tǒng)維護(hù),還是面試時(shí)的技術(shù)考核,Linux命令都是繞不開的核
    的頭像 發(fā)表于 07-22 15:23 ?711次閱讀

    生產(chǎn)環(huán)境Kubernetes容器安全的最佳實(shí)踐

    隨著容器化技術(shù)的快速發(fā)展,Kubernetes已成為企業(yè)級(jí)容器編排的首選平臺(tái)。然而,在享受Kubernetes帶來的便利性和可擴(kuò)展性的同時(shí),安全問題也日益凸顯。本文將從運(yùn)維工程師的角度,深入探討生產(chǎn)環(huán)境Kubernetes容器安全的最佳
    的頭像 發(fā)表于 07-14 11:09 ?927次閱讀

    Linux網(wǎng)絡(luò)管理的關(guān)鍵技術(shù)和最佳實(shí)踐

    在大型互聯(lián)網(wǎng)企業(yè),Linux網(wǎng)絡(luò)管理是運(yùn)維工程師的核心技能之一。面對(duì)海量服務(wù)器、復(fù)雜網(wǎng)絡(luò)拓?fù)洹⒏卟l(fā)流量,運(yùn)維人員需要掌握從基礎(chǔ)網(wǎng)絡(luò)配置到高級(jí)網(wǎng)絡(luò)優(yōu)化的全套技術(shù)棧。本文將結(jié)合大廠實(shí)際場(chǎng)景,深入解析
    的頭像 發(fā)表于 07-09 09:53 ?1107次閱讀

    怎么結(jié)合嵌入式,Linux,和FPGA三個(gè)方向達(dá)到一個(gè)均衡發(fā)展?

    在嵌入式領(lǐng)域,不少人都懷揣著讓嵌入式、Linux 和 FPGA 三個(gè)方向?qū)崿F(xiàn)均衡發(fā)展的夢(mèng)想,然而實(shí)踐中卻面臨諸多挑戰(zhàn)。就像備受矚目的全棧工程師稚暉君,他從大學(xué)玩單片機(jī)起步,憑借將智能算法融入嵌入式而
    的頭像 發(fā)表于 06-25 10:08 ?1010次閱讀
    怎么結(jié)合嵌入式,<b class='flag-5'>Linux</b>,和FPGA三個(gè)方向達(dá)到一個(gè)均衡發(fā)展?

    手把手教你如何調(diào)優(yōu)Linux網(wǎng)絡(luò)參數(shù)

    在高并發(fā)網(wǎng)絡(luò)服務(wù)場(chǎng)景Linux內(nèi)核的默認(rèn)網(wǎng)絡(luò)參數(shù)往往無法滿足需求,導(dǎo)致性能瓶頸、連接超時(shí)甚至服務(wù)崩潰。本文基于真實(shí)案例分析,從參數(shù)解讀、問題診斷到優(yōu)化實(shí)踐,手把手教你如何調(diào)優(yōu)Linux
    的頭像 發(fā)表于 05-29 09:21 ?1172次閱讀

    詳解Linux系統(tǒng)的服務(wù)管理

    Linux,無論何時(shí)當(dāng)你安裝任何帶有服務(wù)和守護(hù)進(jìn)程的包,系統(tǒng)默認(rèn)會(huì)把這些服務(wù)的初始化及 systemd腳本添加進(jìn)去,不過此時(shí)它們并沒有被啟用。
    的頭像 發(fā)表于 05-23 15:10 ?929次閱讀
    詳解<b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>中</b>的服務(wù)管理

    5G動(dòng)態(tài)IP地域偽裝技術(shù):突破與實(shí)踐中的合規(guī)邊界

    在5G網(wǎng)絡(luò)加速普及的當(dāng)下,智能設(shè)備的指數(shù)級(jí)增長(zhǎng)正催生著IP地址管理的技術(shù)革命??缇畴娚?、輿情監(jiān)控等領(lǐng)域?qū)?dòng)態(tài)住宅IP地域偽裝的需求,已從簡(jiǎn)單的協(xié)議層操作演變?yōu)樯婕熬W(wǎng)絡(luò)架構(gòu)重構(gòu)的系統(tǒng)工程。本文將聚焦技術(shù)演進(jìn)的主線,探討這一領(lǐng)域的技術(shù)
    的頭像 發(fā)表于 04-29 15:47 ?1254次閱讀