色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

454398 ? 來源:博客園 ? 作者:遙望那云端 ? 2020-10-15 14:04 ? 次閱讀

一、什么是Cgroup,使用場景?

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

二、Cgroup的原理和實踐

CPU的周期控制

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

[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的這個目錄下存在很多子目錄,這些都是cgroup可以限制地資源種類,我們在進一步進入到CPU的子目錄查看下,里面有限制資源種類的詳細的限制地指標(biāo),比如

1、cpu.cfs_period_us:指定容器對CPU的使用多長時間重新做一次分配

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

這兩個指標(biāo)需要一起配合使用來實現(xiàn)CPU的周期控制,我們先手動模擬容器創(chuàng)建的時候,如何完成利用cgroup來實現(xiàn)資源限制,以CPU周期控制為例子,先在/sys/fs/cgroup/cpu目錄下創(chuàng)建1個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ù)制代碼”)

然后進入到此目錄下,ls查看下,這里出現(xiàn)了一個神奇的形象,此目錄下自動生成了很多CPU子系統(tǒng)控制的指標(biāo),這些指標(biāo)我們并未進行新增,也就是說在/sys/fs/cgroup/cpu目錄下會給新建的目默認配置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)資源的使用情況,我們先寫一個程序來模擬來吃掉系統(tǒng)資源的情況,然后再來查看指標(biāo)

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

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

通過如上程序,寫了一個while無限循環(huán)的shell腳本,默認情況下,這個程序之后的進程會占據(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ù)掉了96.3%的CPU資源,在實際的應(yīng)用中若進程這樣無限制的使用資源,將會給操作系統(tǒng)帶來很大的負擔(dā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

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

[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è)置已完成,但是此時還不會立即生效,還需要將進程ID輸入到資源限制地task里

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

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

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

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

上面的命令是后臺守護進程的方式運行了1個nginx的容器,且指定CPU的每隔100000us=100ms做一次分配,且每次分配給容器的時間為30ms,可以看到這個分配和前面手動分配是一致的,值得注意的是這里需要加上-d來創(chuàng)建容器,若不加上的話會進入到終端交互界面,一旦提出終端交互界面后,容器這個進程也將會退出,而我們希望容器進程保持后臺運行,因此需要加上-d,容器運行成功后,將會在docker目錄下新建一個以容器ID命名的目錄,這個目錄和前面手動創(chuàng)建的目錄以上,系統(tǒng)會默認配置資源限制的參數(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ù)容器的名稱默認創(chuàng)建的目錄,我們進入到這個目錄,然后輸出下之前我們在創(chuàng)建的時候指定的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)生效了,也就是說這個nginx的容器最多可以支持使用到30%左右的CPU帶寬。

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

三、總結(jié)

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

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

    關(guān)注

    68

    文章

    10873

    瀏覽量

    212056
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11313

    瀏覽量

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

    關(guān)注

    0

    文章

    495

    瀏覽量

    22072
收藏 人收藏

    評論

    相關(guān)推薦

    精確溫控技術(shù)在焊接電源的應(yīng)用與實踐探析

    節(jié)能等方面都起到了決定性的作用。以下將對精確溫控技術(shù)在焊接電源的應(yīng)用與實踐進行深入剖析。 首先,精確溫控技術(shù)是現(xiàn)代焊接電源的核心組成部分之一。焊接過程
    的頭像 發(fā)表于 11-19 09:08 ?222次閱讀
    精確溫控<b class='flag-5'>技術(shù)</b>在焊接電源<b class='flag-5'>中</b>的應(yīng)用與<b class='flag-5'>實踐</b>探析

    高頻點焊電源技術(shù)在現(xiàn)代工業(yè)制造的應(yīng)用探索與實踐

    《高頻點焊電源技術(shù)在現(xiàn)代工業(yè)制造的革新應(yīng)用及深度實踐》 隨著科技的飛速發(fā)展和制造業(yè)轉(zhuǎn)型升級的步伐加快,高頻點焊電源技術(shù)作為一項先進的焊接技術(shù)
    的頭像 發(fā)表于 11-15 09:12 ?185次閱讀
    高頻點焊電源<b class='flag-5'>技術(shù)</b>在現(xiàn)代工業(yè)制造<b class='flag-5'>中</b>的應(yīng)用探索與<b class='flag-5'>實踐</b>

    單北斗智能終端:高精度定位技術(shù)在行業(yè)應(yīng)用的革新實踐

    在當(dāng)今快速發(fā)展的科技時代,高精度定位技術(shù)已經(jīng)成為各行各業(yè)不可或缺的一部分。頂堅單北斗智能終端,依托中國自主研發(fā)的北斗衛(wèi)星導(dǎo)航系統(tǒng),以其卓越的定位精度、可靠性和穩(wěn)定性,正在各個行業(yè)掀起一場革新實踐
    的頭像 發(fā)表于 10-17 11:13 ?342次閱讀
    單北斗智能終端:高精度定位<b class='flag-5'>技術(shù)</b>在行業(yè)應(yīng)用<b class='flag-5'>中</b>的革新<b class='flag-5'>實踐</b>

    Linux開發(fā)怎么學(xué)?

    各種開源社區(qū),可以參加這些社區(qū),了解最新的Linux 技術(shù)和趨勢,結(jié)交志同道合的朋友。 9.持續(xù)學(xué)習(xí)和實踐: 學(xué)習(xí) Linux 是一個持
    發(fā)表于 10-10 14:34

    UWB定位系統(tǒng)在智能制造的應(yīng)用實踐

    UWB(Ultra-Wideband,超寬帶)定位系統(tǒng)在智能制造的應(yīng)用實踐已經(jīng)取得了顯著成效。以下是對其應(yīng)用實踐的詳細闡述: 一、高精度定位與實時監(jiān)控 高精度定位:UWB技術(shù)以其厘米
    的頭像 發(fā)表于 09-11 11:46 ?470次閱讀
    UWB定位系統(tǒng)在智能制造<b class='flag-5'>中</b>的應(yīng)用<b class='flag-5'>實踐</b>

    MSP430 FRAM技術(shù)–使用方法和最佳實踐

    電子發(fā)燒友網(wǎng)站提供《MSP430 FRAM技術(shù)–使用方法和最佳實踐.pdf》資料免費下載
    發(fā)表于 08-23 09:23 ?0次下載
    MSP430 FRAM<b class='flag-5'>技術(shù)</b>–使用方法和最佳<b class='flag-5'>實踐</b>

    Linux內(nèi)核測試技術(shù)

    。內(nèi)核測試技術(shù)是實現(xiàn)這一目標(biāo)的關(guān)鍵手段。本文將詳細介紹 Linux 內(nèi)核測試的各種技術(shù),包括單元測試、集成測試、功能測試和性能測試等,并討論不同測試方法的優(yōu)缺點及其適用場景。
    的頭像 發(fā)表于 08-13 13:42 ?515次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核測試<b class='flag-5'>技術(shù)</b>

    Linux內(nèi)核的頁面分配機制

    Linux內(nèi)核是如何分配出頁面的,如果我們站在CPU的角度去看這個問題,CPU能分配出來的頁面是以物理頁面為單位的。也就是我們計算機中常講的分頁機制。本文就看下Linux內(nèi)核是如何管理,釋放和分配這些物理頁面的。
    的頭像 發(fā)表于 08-07 15:51 ?303次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>中</b>的頁面分配機制

    詳解Linux的權(quán)限控制

    本章將和大家分享Linux的權(quán)限控制。廢話不多說,下面我們直接進入主題。
    的頭像 發(fā)表于 08-05 15:32 ?601次閱讀
    詳解<b class='flag-5'>Linux</b><b class='flag-5'>中</b>的權(quán)限控制

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐》2.0

    《大語言模型“原理與工程實踐”》是關(guān)于大語言模型內(nèi)在機理和應(yīng)用實踐的一次深入探索。作者不僅深入討論了理論,還提供了豐富的實踐案例,幫助讀者理解如何將理論知識應(yīng)用于解決實際問題。書中的案例分析有助于
    發(fā)表于 05-07 10:30

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐

    處理預(yù)訓(xùn)練架構(gòu)Transformer,以及這些技術(shù)在現(xiàn)實世界的如何應(yīng)用。通過具體案例的分析,作者展示了大語言模型在解決實際問題中的強大能力,同時也指出了當(dāng)前技術(shù)面臨的挑戰(zhàn)和局限性。
    發(fā)表于 04-30 15:35

    使用 PREEMPT_RT 在 Ubuntu 構(gòu)建實時 Linux 內(nèi)核

    盟通技術(shù)干貨構(gòu)建實時Linux內(nèi)核簡介盟通技術(shù)干貨Motrotech如果需要在Linux實現(xiàn)實時計算性能,進而有效地將
    的頭像 發(fā)表于 04-12 08:36 ?2564次閱讀
    使用 PREEMPT_RT 在 Ubuntu <b class='flag-5'>中</b>構(gòu)建實時 <b class='flag-5'>Linux</b> 內(nèi)核

    Linux的dmesg命令介紹

    命令簡介dmesg 命令用于顯示系統(tǒng)開機信息,可用于診斷系統(tǒng)故障。 內(nèi)核會將系統(tǒng)開機信息存儲在ring buffer,可以使用dmesg命令來查看,開機信息保存在/var/log/dmesg文件
    發(fā)表于 04-08 08:20

    振弦采集儀在橋梁工程監(jiān)測的優(yōu)勢與實踐案例

    明顯的優(yōu)勢,下面將介紹其優(yōu)勢以及一些實踐案例。 振弦采集儀在橋梁工程監(jiān)測的優(yōu)勢與實踐案例 一個,河北穩(wěn)控科技振弦采集儀具有高精度的測量性能。振弦采集儀采用了先進的傳感技術(shù),能夠?qū)蛄?/div>
    的頭像 發(fā)表于 04-01 14:03 ?295次閱讀
    振弦采集儀在橋梁工程監(jiān)測<b class='flag-5'>中</b>的優(yōu)勢與<b class='flag-5'>實踐</b>案例

    如何解決Linux系統(tǒng)的網(wǎng)絡(luò)連接問題?

    如何解決Linux系統(tǒng)的網(wǎng)絡(luò)連接問題? Linux系統(tǒng)的網(wǎng)絡(luò)連接問題是常見的技術(shù)難題之一,通常涉及在
    的頭像 發(fā)表于 01-12 15:17 ?1026次閱讀
    主站蜘蛛池模板: 狂野猛交xxxx吃奶| 老女人与小伙子露脸对白| 123超碰在线视频| 和尚扒开双腿蹂躏| 国产不卡免费| 俄罗斯17vidio| 凹凸精品视频分类视频| 99久久99久久免费精品蜜桃 | YY6080A旧里番在线观看| 97在线精品视频免费| 56prom在线精品国产| 538在线视频一区二区视视频| 在线观看国产精美视频| 伊人久久大香线蕉综合网站| 一起碰一起噜一起草视频| 一个人免费完整在线观看影院| 亚洲综合香蕉在线视频| 野花日本大全免费高清完整版| 夜夜躁日日躁狠狠| 中文文字幕文字幕亚洲色| 18未满不能进的福利社| 99久久爱re热6在线播放| a级毛片黄免费a级毛片| www.青青草| 国产99青草全福视在线 | 欧美最猛12teevideos欧美| 强奷乱码欧妇女中文字幕熟女| 日本十八禁无遮拦啪啪漫画| 色99蜜臀AV无码| 午夜在线观看免费完整直播网| 亚洲VA欧美VA天堂V国产综合| 亚洲日韩中文字幕区| 在线免费观看亚洲视频| 99精品无码AV在线播放| 波多野结衣教师系列6| 国产黄片毛片| 精品极品三大极久久久久| 狂野欧美性猛XXXX乱大交| 热の中文 AV天堂| 午夜在线播放免费人成无| 一本一本之道高清在线观看|