深入理解Docker的硬件資源控制與驗(yàn)證
一、docker管理資源機(jī)制——Control group
Control group 是Linux內(nèi)核提供的一種限制所使用物理資源的機(jī)制,這些資源主要是CPU、內(nèi)存、blkio等。
二、對(duì)CPU的控制
對(duì)CPU的控制有下面幾種方式:
限制CPU的使用率;
多任務(wù)按比例分配CPU;
限制CPU內(nèi)核(核心數(shù))使用;
2.1基于使用率限制CPU
我們可以在文件中查看默認(rèn)的限制設(shè)置,我們先運(yùn)行一個(gè)容器(兩種方式,我們使用run的命令來(lái)快速運(yùn)行一個(gè)容器):
#檢查本地是否有鏡像或容器存在
#運(yùn)行一個(gè)容器
我們進(jìn)入docker目錄下的容器編號(hào)目錄中,查看cpu.cfs_quota_us文件,其中的內(nèi)容默認(rèn)為-1(我們可以對(duì)此更改)
果然,默認(rèn)的配額值為-1,這就表示默認(rèn)情況下是不對(duì)CPU資源進(jìn)行控制的,顯然這樣在使用容器的過(guò)程中非常容易出現(xiàn)問(wèn)題,例如一臺(tái)真實(shí)服務(wù)器運(yùn)行著各種各樣的數(shù)量非常多的容器,而其中一臺(tái)容器占據(jù)了接近90%的CPU使用率,那么剩下來(lái)的如此多的容器只能在剩余的10%中獲取使用,這很容易引發(fā)業(yè)務(wù)故障,因此我們需要對(duì)CPU包括隨后的內(nèi)存及文件IO流進(jìn)行優(yōu)化處理的配置。
首先,本小節(jié)是對(duì)CPU的使用率進(jìn)行的控制,那么下面就來(lái)看看怎么配置的吧。
我們可以直接進(jìn)入這個(gè)文件進(jìn)行設(shè)置,那么怎么設(shè)置呢?
這就需要說(shuō)明一下了,CPU的百分比是以1000位單位的,因此總額為100000,即10萬(wàn),那么我們寫入20000,則使用率為20%。除了直接改(echo也行)也可以在命令行中進(jìn)行設(shè)置:
那么我們?cè)趺打?yàn)證或者說(shuō)測(cè)試這個(gè)使用率占比最高是在20%呢?
我們可以進(jìn)入這個(gè)容器中執(zhí)行操作,使得CPU滿載,另外開一個(gè)terminal使用top命令查看CPU使用情況即可。
為了演示整個(gè)效果我在另外一個(gè)終端使用top命令查看,可以發(fā)現(xiàn)整個(gè)CPU使用率在20%左右,會(huì)有所上浮但是不會(huì)過(guò)分離譜,計(jì)算完成后將會(huì)釋放資源的。截取兩張圖作為驗(yàn)證結(jié)果:
2.2基于CPU內(nèi)核使用限制
在docker中可以使用--cpuset-cpus選項(xiàng)來(lái)使某些程序獨(dú)享CPU的內(nèi)核,以便提高其處理速度。如果我們的CPU核心數(shù)為4那么對(duì)應(yīng)的編號(hào)為0,1,2,3,可以通過(guò)top命令來(lái)查看,按下數(shù)字1后就可以查看CPU編號(hào)以及對(duì)應(yīng)信息了。
具體的控制設(shè)置如下:
[root@docker ~]# docker run -itd --name test2 --cpuset-cpus 1,3 centos:7 /bin/bash 116606ef1e11b0afa09da67b2782c1cc0d042eb026cbfe113d7dac11ae818dcc#即基于cpuset-cpus進(jìn)行設(shè)置
使用第二種方式的測(cè)試方法,基于top命令查看驗(yàn)證,結(jié)果如下圖所示:
三、對(duì)內(nèi)存的控制
內(nèi)存使用相對(duì)于CPU而言比較簡(jiǎn)單了,通過(guò)-m參數(shù)進(jìn)行設(shè)置。
實(shí)例演示:
在另一個(gè)終端上進(jìn)行查看:docker stats
結(jié)果如下圖:
版權(quán)保護(hù): 本文「深入理解Docker的硬件資源控制與驗(yàn)證」由 云主機(jī)配置專家 原創(chuàng),轉(zhuǎn)載請(qǐng)保留鏈接: http://www.iqcg.cn/docs/system/1325.html