Cgroup资源管理

docker资源限制  
容器怎么实现资源的限制?
通过Cgroup资源限制 
docker 通过Cgroup来控制容器使用的资源配额,包括CPU,内存,磁盘三大方面。
Cgroup是linux内核提供的一种可以限制,记录,隔离进程组所使用的物理资源(CPU,内存,磁盘IO)。
Cgroup是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理就是通过该功能实现。
总结:通过Cgroup可以限制Docker容器在CPU,内存,磁盘等方面的最大使用量。


怎么实现对CPU的资源控制?

进程在单位时间周期内是顺序运行的,每一个进程是在单位周期内时间分片中运行。按着循环高频率的运行。
 

控制容器进程对CPU,内存,磁盘IO 使用量的限制

容器怎么实现资源的限制?
通过Cgroup资源限制 
docker 通过Cgroup来控制容器使用的资源配额,包括CPU,内存,磁盘三大方面。
Cgroup是linux内核提供的一种可以限制,记录,隔离进程组所使用的物理资源(CPU,内存,磁盘IO)。
Cgroup是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理就是通过该功能实现。
总结:通过Cgroup可以限制Docker容器在CPU,内存,磁盘等方面的最大使用量。

对CPU的限制

怎么实现对CPU的资源控制?

进程在单位时间周期内是顺序运行的,每一个进程是在单位周期内时间分片中运行。按着循环高频率的运行。

答:设置进程在PCU使用率的上限。
使用 --cpu-period设置容器CPU调度周期,--cpu-quota设置每个走起内容器使用的CPU时间。--cpu-quota/--cpu-period 为一个CPU的占用率。
如果是多核可以设置大于--cpu-quota。
CPU调度周期有效范围:1ms到1s 配置中为1000到1000000
CPU配额必须大于1ms  配置中大于等于1000

怎么查看--cpu-quota和--cpu-period 时间?
cd 进入/sys/fs/cgroup/cpu/docker/
中查看对应容器的id号 进去容器并查看cpu-quota和cpu-period 时间

查看cpu.cfs_quota_us为-1 表示啥?
不限制,时间周期有多少就用多少 值为:CPU数量*cpu.cfs_period_us的值


怎么模拟容器CPU被沾满的情况?
写死循环可以模拟CPU完全使用的极端情况
docker exec -it 容器别名  sh   进入容器中跑死循环程序
vi test.sh        这里跟的命令可以看作是sh后的容器中运行的命令(vim无法使用,需要使用vi)
#!/bin/sh
i=0
while true
do
let i++
done

chmod +x test.sh
./test.sh

怎么限制容器的使用率上限?
查看
修改cpu.cfs_period_us内的数值,使用率上限通过两个值的比率来进行确定。
echo 数值 > /sys/fs/cgroup/cpu/docker/
对应容器的id号/cpu.cfs_period_us
或:docker run -itd --name c2 --cpu-quota 数值 用户名/仓库名:标记  /bin/bash     (docker run 代表创建时后指定cpu使用率)


怎么设置多容器的CPU资源占用比?
若只是通过CPU使用的上限设置CPU占用比,可能会超。若不想繁琐计算来设置cpu份额。
可以使用--cpu-shares指定CPU份额,默认为1024,值为1024的整数倍或一半(512)。多个容器设置完--cpu-shares会自动计算出占用比。
自己的值/总和就是设置的占用比。

容器外无法连接到外网?
先看宿主机是否外网能同 ping www.baidu.com
可能docker的进程出现问题,删除原来的容器重启后重新创建容器就解决了。
docker rm -f $(docker ps -aq)  
systemctl restart docker


怎么做压测?
安装压测stress工具做压测:
在docker中
yum install -y epel-release  (添加一个第三方源)
yum install -t stress  (模拟多进程压测的工具 stress)
stress -c 指定压测CPU数 
docker stats 查看docker容器中CPU占用比

怎么指定容器绑定CPU?
CPU编号从0开始
docker run -itd --name test7 --cpuset-cpus 1,3 镜像  /bin/bash           指定容器使用编号为1,3两个CPU。

怎么查看PCU使用情况?
top 
1


什么情况下使用--cpu-shares ?或 什么时候--cpu-shares有效?
设置多个容器的CPU使用的占用比,只能在多个容器同时运行且资源紧张时有效。

--cpu-period  --cpu-quota这两个参数是做啥的?
设置容器进程能使用CPU使用率的上限。


对内存的限制


iB与B的区别?与关系?
1KB=10^3B     1000B
1KiB=2^10B   1024B  
相同数值 iB大于B

怎么对容器内存进行限制?
docker run 运行的时候用-m指定内存大小。
docker run -itd --name c4 -m 512M(大小) 镜像
这里指定的大小单位是  iM

内存除了可用的物理内存 还有交换内存,
使用--memory-swap设置可用内存和交换内存的总和
-m 300m --memory-swap=1g :容器可以使用300M 的物理内存,使用700M 的交换内存。

--memory-swap=0 为默认(不设置也是) 容器使用的swap大小为-m指定的两倍
--memory-swap=-m指定的值 容器不能使用swap
--memory-swap=-1 内存受限,但宿主机有多少swap容器就可以使用多少

怎么查看容器的运行状态(内存 CPU 网络传输速率)?
docker stats
查看到的内存单位是MiB 

怎么限制磁盘读写?
对指定磁盘的读速度限制
--device-read-bps 设备名:速度

对指定磁盘的写速度限制
--device-write-bps 设备名:速度

对磁盘的读次数做限制
--device-read-iops

对磁盘的写次数做限制
--device-write-iops

怎么模拟磁盘的写入?
dd if=/dev/zero of=./text.txt bs=1M count=10 oflag=direct  


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值