深入理解Docker的硬体资源管理与验证
深入理解Docker的硬件设施资源掌控与验证
一、docker管理资源机制——Control group
Control group 是Linux内核提供的一种限制条件所使用物理资源的机制,这些资源主要是CPU、缓存、blkio等。
二、对CPU的掌控
对CPU的掌控有下面几种方式:
限制条件CPU的使用率;
多任务按比例分配CPU;
限制条件CPU内核(关键数)使用;
2.1基于使用率限制条件CPU
我们可以在材料中查看默认的限制条件设置,我们先运行一个容器(两种方式,我们使用run的命令来迅速运行一个容器):
#体检本地是否有镜像或容器存在
#运行一个容器
我们进入docker目录下的容器编号目录中,查看cpu.cfs_quota_us材料,其中的内容默认为-1(我们可以对此更改)
果然,默认的配额值为-1,这就表示默认情况下是不对CPU资源进行掌控的,显然这样在使用容器的过程中非常易于出现问题,例如一台真切主机运行着各种各样的数量非常多的容器,而其中一台容器占据了接近90%的CPU使用率,那么剩下来的如此多的容器只能在剩余的10%中获取使用,这很易于引发业务错误,因此我们需要对CPU包括随后的缓存及材料IO流进行改善处理的配置。
首先,本小节是对CPU的使用率进行的掌控,那么下面就来看看怎么配置的吧。
我们可以直接进入这个材料进行设置,那么怎么设置呢?
这就需要说明一下了,CPU的百分比是以1000位部门的,因此总额为100000,即10万,那么我们写入20000,则使用率为20%。除了直接改(echo也行)也可以在命令行中进行设置:
那么我们怎么验证或者说试验这个使用率占比最高是在20%呢?
我们可以进入这个容器中实施操作过程,使得CPU满载,另外开一个terminal使用top命令查看CPU使用情况即可。
为了演示整个效果我在另外一个终端使用top命令查看,可以找到整个CPU使用率在20%左右,会有所上浮但是不会过分离谱,计算过程完成后将会释放资源的。截取两张图作为验证成果:
2.2基于CPU内核使用限制条件
在docker中可以使用--cpuset-cpus选项来使某些脚本独享CPU的内核,以便提高其处理运行速度。如果我们的CPU关键数为4那么对应的编号为0,1,2,3,可以通过top命令来查看,按下数量1后就可以查看CPU编号以及对应情报了。
具体的掌控设置如下:
[root@docker ~]# docker run -itd --name test2 --cpuset-cpus 1,3 centos:7
/bin/bash
116606ef1e11b0afa09da67b2782c1cc0d042eb026cbfe113d7dac11ae818dcc#即基于cpuset-cpus进行设置
使用第二种方式的试验手段,基于top命令查看验证,成果如下图所示:
三、对缓存的掌控
缓存使用相对于CPU而言比较单纯了,通过-m参数进行设置。
实例演示:
在另一个终端上进行查看:docker stats
成果如下图: