玩坏docker笔记(九):资源限制

Docker 提供了资源限制机制避免某个容器因占用太多资源而影响其他容器性能

内存限额

容器可以使用的内存包括两部分:物理内存和swap。Docker通过下面两组参数来控制容器内存的使用量
1)-m或–memory:设置内存的使用限额,例如100MB,2GB
2)–memory-swap:设置内存+swap的使用限额

docker run -m 200M --memory-swap=300M ubunt
允许容器最多使用200MB的内存和100MB的swap。默认情况下,上面两组参数为-1,即没有限制

下面使用progrium/stress镜像来学习如何为容器分配内存,该镜像可以用来对容器执行压力测试,命令如下

docker run -it -m 200M --memory-swap=300M progrium/stress  --vm 1 --vm-bytes 280M

--vm:启动一个内存工作线程
--vm-bytes 280M:每个线程分配280M内存

如果工作线程分配的内存超过300M,stress线程报错,容器退出。若只指定-m,不指定–memory-swap,那么–memory-swap默认为-m的两倍。

CPU限额

Docker可以通过-c 或–cpu-shares 设置容器使用CPU的权重。

docker run --name container_A -it -c 1024 progrium/stress --cpu 1
 --cpu:用来设置工作线程数量
docker run --name container_B -it  -c 512 progrium/stress --cpu 1 

结果:container_A容器对CPU的使用情况是container_B容器的2倍。	
带宽限制

–blkio-weight参数改变容器block IO的优先级

docker run -it co_A --blkio-weight 600 ubuntu 
docker run -it co_B --blkio-weight 300 tubunt
co_A读写磁盘的带宽是co_B的两倍
限制bps和iops

bps:byte per second,每秒读写的数据量
iops:io per second ,每秒IO的次数

--device-read-bps:限制读某个设备的bps
--device-write-bps:限制写某个设备的bps
--device-read-iops:限制读某个设备的iops
--device-write-iops:限制写某个设备的iops

例子

docker run -it --device-write-bps /dev/sda:30MB ubunt

限制容器写/dev/sda/的速率为30MB/s.
在容器中查看结果:

time dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct

通过dd测试在容器中写磁盘的速度。因为容器文件系统实在host 的dev/sda上的,在容器中写文件相当于对host 的/dev/sda进行写操作。
oflag=direct指定用direct IO的方式写文件。
如果不限速的话:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值