国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker資源控制cgroups

這篇具有很好參考價值的文章主要介紹了Docker資源控制cgroups。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


一、docker資源控制

1、資源控制工具

Docker 通過 Cgroup 來控制容器使用的資源配額,包括 CPU、內(nèi)存、磁盤三大方面, 基本覆蓋了常見的資源配額和使用量控制。
Cgroup 是 ControlGroups 的縮寫,是 Linux 內(nèi)核提供的一種可以限制、記錄、隔離進程組所使用的物理資源(如 CPU、內(nèi)存、磁盤 IO 等等) 的機制,被 LXC、docker 等很多項目用于實現(xiàn)進程資源控制。Cgroup 本身是提供將進程進行分組化管理的功能和接口的基礎(chǔ)結(jié)構(gòu),I/O 或內(nèi)存的分配控制等具體的資源管理是通過該功能來實現(xiàn)的。

2、Cgroups四大功能

資源限制:可以對任務(wù)使用的資源總額進行限制

優(yōu)先級分配:通過分配的cpu時間片數(shù)量以及磁盤IO帶寬大小,實際上相當于控制了任務(wù)運行優(yōu)先級

資源統(tǒng)計:可以統(tǒng)計系統(tǒng)的資源使用量,如cpu時長,內(nèi)存用量等

任務(wù)控制:cgroup可以對任務(wù)執(zhí)行掛起、恢復(fù)等操作

二、CPU 資源控制

1、設(shè)置CPU使用率上限

Linux通過CFS(Completely Fair Scheduler,完全公平調(diào)度器)來調(diào)度各個進程對CPU的使用。CFS默認的調(diào)度周期是100ms。

CPU周期:指的是CFS調(diào)度CPU遍歷處理一次容器所有的進程時長,默認是0.1s。設(shè)置范圍為1ms~1s

Cgroups限制時間:使用cpu.cfs_quota_us 即可設(shè)置在每個周期內(nèi)容器能使用的CPU的時長,默認是-1即不限制。

CPU利用率:Cgroups限制時間/CPU周期,默認Cgroups是-1而CPU周期為0.1s表示用滿CPU
查看CPU默認配置:
Docker資源控制cgroups,docker,容器,運維
Docker資源控制cgroups,docker,容器,運維

2、CPU壓力測試

docker run -itd --name c1 centos:7 /bin/bash
docker ps -a 
#查看docker容器id
docker exec -it 容器唯一id/容器名 /bin/bash
#進入容器中
vi cpu.sh
#!/bin/sh
i=0
while true
do
let i++
done
#編輯腳本
chmod +x /test.sh
#添加執(zhí)行權(quán)限
./cpu.sh
#執(zhí)行腳本
新開一個shell腳本
top查看cpu占用率,按1查看使用的那個cpu

[root@localhost opt]# docker run -itd --name c1 centos:7 /bin/bash
078e66e73513524199fc489f49c37631441149bc3c78b61e520e2a98f194a49d
[root@localhost opt]# docker ps -a 
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
078e66e73513   centos:7   "/bin/bash"   7 seconds ago    Up 6 seconds              c1
b4283606c3ca   centos:7   "/bin/bash"   24 minutes ago   Up 24 minutes             test2
b4612ad91dc2   centos:7   "/bin/bash"   59 minutes ago   Up 59 minutes             test1
[root@localhost opt]# docker exec -it 078e66e73513 /bin/bash
[root@078e66e73513 /]# vim /cpu.sh
bash: vim: command not found
[root@078e66e73513 /]# vim cpu.sh
bash: vim: command not found
[root@078e66e73513 /]# chmod +x /cpu.sh
chmod: cannot access '/cpu.sh': No such file or directory
[root@078e66e73513 /]# vi /cpu.sh
[root@078e66e73513 /]# chmod +x cpu.sh 
[root@078e66e73513 /]# chmod +x /cpu.sh 
[root@078e66e73513 /]# ./cpu.sh 

Docker資源控制cgroups,docker,容器,運維

3、Cgroups限制cpu使用率

[root@localhost opt]# docker run -itd --name c2 --cpu-quota 50000 centos:7 /bin/bash
b32af889eec23e57f908d050de615334f68ccdb4bab50c478785917adc4be79e
[root@localhost opt]# docker ps -a 
CONTAINER ID   IMAGE      COMMAND       CREATED             STATUS             PORTS     NAMES
b32af889eec2   centos:7   "/bin/bash"   51 seconds ago      Up 50 seconds                c2
078e66e73513   centos:7   "/bin/bash"   15 minutes ago      Up 15 minutes                c1
b4283606c3ca   centos:7   "/bin/bash"   39 minutes ago      Up 39 minutes                test2
b4612ad91dc2   centos:7   "/bin/bash"   About an hour ago   Up About an hour             test1
[root@localhost opt]# docker exec -it b32af889eec2 /bin/b
ash

[root@b32af889eec2 /]# vi /cpu.sh
#!/bin/bash
i=0
while true
do
let i++
done

[root@b32af889eec2 /]# chmod +x /cpu.sh 
[root@b32af889eec2 /]# ./cpu.sh 

Docker資源控制cgroups,docker,容器,運維

4、設(shè)置CPU資源占用比(設(shè)置多個容器時才有效)

Docker 通過 --cpu-shares 指定 CPU 份額,默認值為1024,值為1024的倍數(shù)。
創(chuàng)建兩個容器為 c1 和 c2,若只有這兩個容器,設(shè)置容器的權(quán)重,使得c1和c2的CPU資源占比為1/3和2/3。

docker run -itd --name c1 --cpu-shares 1024 centos:7
docker run -itd --name c2 --cpu-shares 2048 centos:7

分別進入容器,進行壓力測試

yum install -y epel-release
yum install -y stress
stress -c 4				#產(chǎn)生四個進程,每個進程都反復(fù)不停的計算隨機數(shù)的平方根

[root@localhost opt]# docker run -itd --name test3 --cpu-shares 1024 centos:7
e73ea5e41483580cd5b818b719dd15adbaf1de39cbed98cef176fe2c40dde1db
[root@localhost opt]# docker run -itd --name test4 --cpu-shares 2048 centos:7
bf3224819662e932bfe1eb16de2cf1781c93741201108867e409b1ac52db9d80
[root@localhost opt]# yum install -y epel-release  安裝EPEL軟件倉庫

[root@localhost opt]# yum -y install stress
[root@localhost opt]# docker ps 
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
bf3224819662   centos:7   "/bin/bash"   19 minutes ago   Up 19 minutes             test4
e73ea5e41483   centos:7   "/bin/bash"   19 minutes ago   Up 19 minutes             test3
#進入容器寫一個死循環(huán)腳本,運行起來
[root@localhost opt]# docker exec -it test4 bash
[root@bf3224819662 /]# vi /cpu.sh
#!/bin/bash
i=0
while true
do
let i++
done

[root@bf3224819662 /]# chmod +x /cpu.sh 
[root@bf3224819662 /]# ./cpu.sh

[root@localhost ~]# docker exec -it test3 bash
[root@e73ea5e41483 /]# vi /cpu.sh
#!/bin/bash
i=0
while true
do
let i++
done

[root@e73ea5e41483 /]# chmod +x /cpu.sh
[root@e73ea5e41483 /]# ./cpu.sh 

另外打開一個開端使用top命令查看或者使用docker stats查看cpu占比;

Docker資源控制cgroups,docker,容器,運維
Docker資源控制cgroups,docker,容器,運維

5、設(shè)置容器綁定指定的CPU

#先分配虛擬機4個CPU核數(shù)

[root@localhost opt]# docker run -itd --name test5 --cpuset-cpus 1,3 centos:7 /bin/bash
4a9fe0005c13d89411b87af79daff288953afa91237c8d02855ed8d26f0e15fb

#進入容器,進行壓力測試
[root@localhost opt]# docker exec -it test5 bash
[root@4a9fe0005c13 /]# yum install -y epel-release 
[root@4a9fe0005c13 /]# yum -y install stress
[root@4a9fe0005c13 /]# stress -c 4

另外打開一個終端執(zhí)行 top 命令再按 1 查看CPU使用情況。
Docker資源控制cgroups,docker,容器,運維

三、對內(nèi)存使用的限制

//-m(–memory=) 選項用于限制容器可以使用的最大內(nèi)存

[root@localhost opt]# docker run -itd --name test6 -m 512m centos:7 /bin/bash
docker stats

Docker資源控制cgroups,docker,容器,運維

//限制可用的 swap 大小, --memory-swap
強調(diào)一下,--memory-swap 是必須要與 --memory 一起使用的。

正常情況下,--memory-swap 的值包含容器可用內(nèi)存和可用 swap。
所以 -m 300m --memory-swap=1g 的含義為:容器可以使用 300M 的物理內(nèi)存,并且可以使用 700M(1G - 300)的 swap。

如果 --memory-swap 設(shè)置為 0 或者 不設(shè)置,則容器可以使用的 swap 大小為 -m 值的兩倍。
如果 --memory-swap 的值和 -m 值相同,則容器不能使用 swap。
如果 --memory-swap 值為 -1,它表示容器程序使用的內(nèi)存受限,而可以使用的 swap 空間使用不受限制(宿主機有多少 swap 容器就可以使用多少)。

四、對磁盤IO配額控制(blkio)的限制

--device-read-bps:限制某個設(shè)備上的讀速度bps(數(shù)據(jù)量),單位可以是kb、mb(M)或者gb。
例:docker run -itd --name test7 --device-read-bps /dev/sda:1M centos:7 /bin/bash

--device-write-bps : 限制某個設(shè)備上的寫速度bps(數(shù)據(jù)量),單位可以是kb、mb(M)或者gb。
例:docker run -itd --name test8 --device-write-bps /dev/sda:1mb centos:7 /bin/bassh

--device-read-iops :限制讀某個設(shè)備的iops(次數(shù))
 
--device-write-iops :限制寫入某個設(shè)備的iops(次數(shù))

Docker資源控制cgroups,docker,容器,運維

#創(chuàng)建容器,并限制寫速度
[root@localhost opt]# docker run -itd --name test9 --device-write-bps /dev/sda:1MB centos:7 /bin/bash

#通過dd來驗證寫速度
[root@localhost opt]# docker exec -it test9 bash #進入容器限制容器的寫速度
dd if=/dev/zero of=test.out bs=1M count=10 oflag=direct				#添加oflag參數(shù)以規(guī)避掉文件系統(tǒng)cache
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 10.0025 s, 1.0 MB/s

Docker資源控制cgroups,docker,容器,運維文章來源地址http://www.zghlxwxcb.cn/news/detail-688266.html

1、#清理docker占用的磁盤空間

docker system prune -a			#可以用于清理磁盤,刪除關(guān)閉的容器、無用的數(shù)據(jù)卷和網(wǎng)絡(luò)

到了這里,關(guān)于Docker資源控制cgroups的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • docker cgroup資源占用及docker的鏡像創(chuàng)建

    docker cgroup資源占用及docker的鏡像創(chuàng)建

    基本復(fù)寫了常見的資源配額和使用量控制 cgroup是controlgroup的縮寫 設(shè)置cpu使用率的上限 linux通過cfs(完全公平調(diào)度器)來調(diào)度各個進程對cpu的使用,cfs默認的調(diào)度周期是100ms 我們可以設(shè)置每個容器進程的調(diào)度周期,以及再這個周期內(nèi)各個容器最多能使用cpu時間。 cpu分多少時間

    2024年02月08日
    瀏覽(24)
  • 十七、Docker之Cgroup資源配置

    其實在日常的工作中,我們一般都沒有對docker容器進行資源限制,也就是默認情況下,可以使用宿主機的所有資源。但是如果你運行的服務(wù)有問題,就有可能對宿主機和宿主機上的其他業(yè)務(wù)造成影響,這還是有一定的風險。那么本文會給大家介紹一下如何對容器進行資源配置

    2024年02月16日
    瀏覽(19)
  • 500行代碼手寫docker-實現(xiàn)硬件資源限制cgroups

    本系列教程主要是為了弄清楚容器化的原理,紙上得來終覺淺,絕知此事要躬行,理論始終不及動手實踐來的深刻,所以這個系列會用go語言實現(xiàn)一個類似docker的容器化功能,最終能夠容器化的運行一個進程。 本章的源碼已經(jīng)上傳到github,地址如下: 之前我們對容器的網(wǎng)絡(luò)命

    2024年02月06日
    瀏覽(21)
  • linux 內(nèi)核資源配置--cgroups詳解以及在docker中的應(yīng)用

    linux 內(nèi)核資源配置--cgroups詳解以及在docker中的應(yīng)用

    1.1、cgroups 是什么 Linux cgroup (Control Groups)是 Linux 內(nèi)核提供的一種機制, 用于限制進程組使用的資源(如 CPU、內(nèi)存、磁盤 I/O 等) 。通過將進程組劃分為層次結(jié)構(gòu),并將資源限制應(yīng)用于不同層次的組,可以實現(xiàn)對系統(tǒng)資源的統(tǒng)一管理和限制。 cgroup 提供了一套 API,用于創(chuàng)建

    2024年02月16日
    瀏覽(25)
  • Docker網(wǎng)絡(luò)(網(wǎng)絡(luò)通信),資源控制(CPU優(yōu)化,內(nèi)存優(yōu)化,磁盤優(yōu)化),數(shù)據(jù)管理(數(shù)據(jù)卷,端口映射,容器互聯(lián))

    目錄 docker網(wǎng)絡(luò) 網(wǎng)絡(luò)實現(xiàn)原理 網(wǎng)絡(luò)實現(xiàn)實例 網(wǎng)絡(luò)模式 查看Docker中的網(wǎng)絡(luò)列表: 指定容器網(wǎng)絡(luò)模式 模式詳解 Host模式(主機模式): Container模式(容器模式): None模式(無網(wǎng)絡(luò)模式): Bridge模式(橋接模式): 自定義網(wǎng)絡(luò): cpu優(yōu)化概述 1. 資源限制: 2. CPU 實時調(diào)度策略:

    2024年01月16日
    瀏覽(29)
  • 云原生之深入解析Docker容器的核心Cgroups的相關(guān)概念和使用實現(xiàn)

    云原生之深入解析Docker容器的核心Cgroups的相關(guān)概念和使用實現(xiàn)

    Cgroups 是 Linux 系統(tǒng)內(nèi)核提供的一種機制,這種機制可以根據(jù)需求將一些列系統(tǒng)任務(wù)機器子任務(wù)整合或分離到按資源劃分登記的不同組內(nèi),從而為系統(tǒng)資源管理提供一個的框架。簡單地說,Cgroups 可以限制、記錄任務(wù)組所使用的物理組員(比如 CPU、Memory、IO等),為容器實現(xiàn)虛

    2024年02月12日
    瀏覽(27)
  • 初探 Linux Cgroups:資源控制的奇妙世界

    Cgroups 是 linux 內(nèi)核提供的功能,由于牽涉的概念比較多,所以不太容易理解。本文試圖通過簡單的描述和 Demo 幫助大家理解 Cgroups 。 如果你對云原生技術(shù)充滿好奇,想要深入了解更多相關(guān)的文章和資訊,歡迎關(guān)注微信公眾號。 搜索公眾號【 探索云原生 】即可訂閱 Cgroups 是

    2024年02月03日
    瀏覽(15)
  • Docker實戰(zhàn)07|Docker增加容器資源限制

    Docker實戰(zhàn)07|Docker增加容器資源限制

    上一篇文章中,講解了Docker run的具體流程以及Docker是如何改變PID為1的底層原理。 具體文章可見《Docker就應(yīng)該這么學(xué)-06》 有需要的小伙伴可以回顧一下。 接下來本文會詳細介紹一下Docker 是如何增加容器的資源限制 獲取代碼 上一節(jié)中,已經(jīng)可以通過命令行? docker run -ti 的方

    2024年02月02日
    瀏覽(24)
  • 第七次作業(yè) 運維高級 docker容器進級版

    第七次作業(yè) 運維高級 docker容器進級版

    1、使用mysql:5.6和 owncloud 鏡像,構(gòu)建一個個人網(wǎng)盤。 (1)拉取相應(yīng)鏡像 (2)運行mysql:5.6容器 (3)運行owncloud容器 (4)查看并驗證 之后在瀏覽器中輸入ipaddress:8080 2、安裝搭建私有倉庫 Harbor (1)下載好harbor和docker-compose (2)上傳到Linux服務(wù)器 (3)復(fù)制docker-compose并修改權(quán)限 (4)解壓harbor (

    2024年02月12日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包