博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker实践(5)—资源隔离
阅读量:7146 次
发布时间:2019-06-29

本文共 1601 字,大约阅读时间需要 5 分钟。

Docker使用cgroup实现CPU,内存和磁盘IO等系统资源的限制。

CPU

Docker现在有2个与CPU资源相关的参数,-c可以指定CPU的占比,--cpuset可以绑定CPU。例如,指定容器在CPU 0,1运行:

# docker run -it --rm -c 1024 --cpuset=0,1 dbyin/stress --cpu 2 

stress: info: [1] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

 NewImage

 

然后再启动一个容器,同样绑定在CPU0,1,-c为512:

# docker run -it --rm -c 512 --cpuset=0,1 dbyin/stress --cpu 2

stress: info: [1] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

NewImage

可以看到container1的CPU占比为1024/(1024+512)=2/3,container2的CPU占比为512/(1024+512)=1/3。

 

将container1的cpu.shares改为512,

#echo “512” > /cgroup/cpu/docker/$CONTAINER_ID/cpu.shares

NewImage 

可以看到两个容器的CPU占比趋于平均。

 

内存

Docker提供参数-m, --memory=""限制容器的内存使用量。例如,

允许容器使用的内存上限为128M:

# docker run -it --rm -m 128m dbyin/stress --vm 1 --vm-bytes 128M --vm-hang 0

stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd

NewImage

实际上,docker还会允许容器使用-m指定的同样大小的swap内存:

NewImage

可以看到,容器可以正常启动。

 NewImage

可以看到,容器由于out of memory被kill掉。

 

IO

# docker run -it --rm dbyin/tlinux:1.2 /bin/bash

bash-4.1# time $(dd if=/dev/zero of=f1.txt bs=1024 count=500000 && sync)

500000+0 records in

500000+0 records out

512000000 bytes (512 MB) copied, 1.28334 s, 399 MB/s

 

real    0m12.091s

user    0m0.056s

sys     0m1.237s

可以看到,写512M数据,共用12s,平均42M/s。

 

将IO带宽限制为10M/s:

# echo "253:1 10485760" > /cgroup/blkio/docker/$CONTAINER_ID/ blkio.throttle.write_bps_device

 

bash-4.1# time $(dd if=/dev/zero of=f1.txt bs=1024 count=500000 && sync)

500000+0 records in

500000+0 records out

512000000 bytes (512 MB) copied, 1.41813 s, 361 MB/s

 

real    0m50.348s

user    0m0.071s

sys     0m1.473s

 

主要参考

[0]

作者:YY哥 
出处: 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/hustcat/p/3980244.html

你可能感兴趣的文章
.net基本数据类型操作
查看>>
docker 应用-2(Dockerfile 编写以及镜像保存提交)
查看>>
监控 Linux 性能的 18 个命令行工具
查看>>
3000本IT书籍下载地址
查看>>
VS2017 WinFrom打包设置与教程
查看>>
Cannot change version of project facet Dynamic Web Module to 3.0 requires Java 1.6 or newer 解决方案...
查看>>
数据库修改一个表中的字段值等于另一个表字段值
查看>>
mongodb pymongo.errors.CursorNotFound: Cursor not found, cursor id: 82792803897
查看>>
《Spring Security3》第四章第三部分翻译下(密码加salt)
查看>>
用户管理 之 用户(User)和用户组(Group)配置文件详解
查看>>
ubuntu 下安装查看pdf的工具
查看>>
UIApplication深入研究
查看>>
解决Ubuntu 12.04更新后 ”系统的网络服务与此版本的网络管理器不兼容“问题
查看>>
display inline inline-block block区别
查看>>
数据库触发器
查看>>
OpenWrt资料汇总
查看>>
cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)
查看>>
python变量
查看>>
牛顿迭代法
查看>>
mac os 中类似于Linux的yum工具,或ubuntu的apt-get工具Homebrew
查看>>