這篇文章主要為大家展示了“Docker如何實(shí)現(xiàn)Memory資源限制”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Docker如何實(shí)現(xiàn)Memory資源限制”這篇文章吧。

一:簡介
docker通過cgroup來控制容器使用的資源配額,包括CPU、內(nèi)存、磁盤三大方面,基本覆蓋了常見的資源配額和使用量控制。
cgroup是Control Groups的縮寫,是Linux 內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組所使用的物理資源(如 cpu、memory、磁盤IO等等) 的機(jī)制,被LXC、docker等很多項(xiàng)目用于實(shí)現(xiàn)進(jìn)程資源控制。cgroup將任意進(jìn)程進(jìn)行分組化管理的 Linux 內(nèi)核功能。cgroup本身是提供將進(jìn)程進(jìn)行分組化管理的功能和接口的基礎(chǔ)結(jié)構(gòu),I/O 或內(nèi)存的分配控制等具體的資源管理功能是通過這個(gè)功能來實(shí)現(xiàn)的。這些具體的資源管理功能稱為cgroup子系統(tǒng),有以下幾大子系統(tǒng)實(shí)現(xiàn):
blkio:設(shè)置限制每個(gè)塊設(shè)備的輸入輸出控制。例如:磁盤,光盤以及usb等等。
cpu:使用調(diào)度程序?yàn)閏group任務(wù)提供cpu的訪問。
cpuacct:產(chǎn)生cgroup任務(wù)的cpu資源報(bào)告。
cpuset:如果是多核心的cpu,這個(gè)子系統(tǒng)會(huì)為cgroup任務(wù)分配單獨(dú)的cpu和內(nèi)存。
devices:允許或拒絕cgroup任務(wù)對設(shè)備的訪問。
freezer:暫停和恢復(fù)cgroup任務(wù)。
memory:設(shè)置每個(gè)cgroup的內(nèi)存限制以及產(chǎn)生內(nèi)存資源報(bào)告。
net_cls:標(biāo)記每個(gè)網(wǎng)絡(luò)包以供cgroup方便使用。
ns:命名空間子系統(tǒng)。
perf_event:增加了對每group的監(jiān)測跟蹤的能力,即可以監(jiān)測屬于某個(gè)特定的group的所有線程以及運(yùn)行在特定CPU上的線程。
目前docker只是用了其中一部分子系統(tǒng),實(shí)現(xiàn)對資源配額和使用的控制。
二:內(nèi)存資源控制
和CPU控制一樣,docker也提供了若干參數(shù)來控制容器的內(nèi)存使用配額,可以控制容器的swap大小、可用內(nèi)存大小等各種內(nèi)存方面的控制。主要有以下參數(shù):
1.--memory: 設(shè)置容器使用的大內(nèi)存上限。默認(rèn)單位為byte,可以使用K、G、M等帶單位的字符串。
2.-- memory-reservation: 啟用彈性的內(nèi)存共享,當(dāng)宿主機(jī)資源充足時(shí),允許容器盡量多地使用內(nèi)存,當(dāng)檢測到內(nèi)存競爭或者低內(nèi)存時(shí),強(qiáng)制將容器的內(nèi)存降低到memory-reservation所指定的內(nèi)存大小。按照官方說法,不設(shè)置此選項(xiàng)時(shí),有可能出現(xiàn)某些容器長時(shí)間占用大量內(nèi)存,導(dǎo)致性能上的損失。
3.--memory-swap: 等于內(nèi)存和swap分區(qū)大小的總和,設(shè)置為-1時(shí),表示swap分區(qū)的大小是無限的。默認(rèn)單位為byte,可以使用K、G、M等帶單位的字符串。如果–memory-swap的設(shè)置值小于–memory的值,則使用默認(rèn)值,為–memory-swap值的兩倍。
4. --memory-swappiness: 控制進(jìn)程將物理內(nèi)存交換到swap分區(qū)的傾向,默認(rèn)系數(shù)為60。系數(shù)越小,就越傾向于使用物理內(nèi)存。值范圍為0-100。當(dāng)值為100時(shí),表示盡量使用swap分區(qū);當(dāng)值為0時(shí),表示禁用容器 swap 功能(這點(diǎn)不同于宿主機(jī),宿主機(jī) swappiness 設(shè)置為 0 也不保證 swap 不會(huì)被使用)。
默認(rèn)情況下,容器可以使用主機(jī)上的所有空閑內(nèi)存。
三:舉例
docker run -ti --rm --name mytest --memory 128m centos:latest /bin/bash
Docker stats <容器ID>

四:IO資源控制
相對于CPU和內(nèi)存的配額控制,docker對磁盤IO的控制相對不成熟,大多數(shù)都必須在有宿主機(jī)設(shè)備的情況下使用。主要包括以下參數(shù):
–device-read-bps:限制此設(shè)備上的讀速度(bytes per second),單位可以是kb、mb或者gb。
–device-read-iops:通過每秒讀IO次數(shù)來限制指定設(shè)備的讀速度。
–device-write-bps :限制此設(shè)備上的寫速度(bytes per second),單位可以是kb、mb或者gb。
–device-write-iops:通過每秒寫IO次數(shù)來限制指定設(shè)備的寫速度。
–blkio-weight:容器默認(rèn)磁盤IO的加權(quán)值,有效值范圍為10-100。
–blkio-weight-device: 針對特定設(shè)備的IO加權(quán)控制。其格式為DEVICE_NAME:WEIGHT
以上是“Docker如何實(shí)現(xiàn)Memory資源限制”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
網(wǎng)頁題目:Docker如何實(shí)現(xiàn)Memory資源限制-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://chinadenli.net/article18/dpihdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站營銷、Google、ChatGPT、App設(shè)計(jì)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容