docker资源控制

docker资源控制
1.限制容器对内储存的使用:
[root@localhost~]#dockerrun–help
-m,–memorybytes(内存限制)
–memory-reservationbytes(内存的软限制)
–memory-swapbytes(内存+交换分区)
–memory-swappinessint(优化容器内存交换)
比较之前先下载progrium/stress镜像作为压力测试
比较:(语法):dockerrun-m200M–memory-swap=300Mprogrium/stress
–vm1–vm-bytes290M
-m限制内存–memory-swap限制交换内存+内存progrium/stress压力测试
镜像–vm1几个内存进程–vm-bytes290M测试的大小
[root@localhost~]#dockerrun-m200M–memory-swap=300M
progrium/stress–vm1–vm-bytes290M
stress:info:[1]dispatchinghogs:0cpu,0io,1vm,0hdd
stress:dbug:[1]usingbackoffsleepof3000us
stress:dbug:[6]allocating304087040bytes…
stress:dbug:[6]touchingbytesinstridesof4096bytes…
stress:dbug:[6]freed304087040bytes
stress:dbug:[6]allocating304087040bytes…
stress:dbug:[6]touchingbytesinstridesof4096bytes…
stress:dbug:[6]freed304087040bytes
stress:dbug:[6]allocating304087040bytes…
stress:dbug:[6]touchingbytesinstridesof4096bytes…
可以看到一直在无限的分配290内存然后释放
超出内存限制:
[root@localhost~]#dockerrun-m200M–memory-swap=300M
progrium/stress–vm1–vm-bytes400Mstress:FAIL:1<–worker6got
signal9
stress:WARN:1nowreapingchildworkerprocesses
stress:FAIL:1killerror:Nosuchprocess
stress:FAIL:1failedruncompletedin0s
stress:info:[1]dispatchinghogs:0cpu,0io,1vm,0hdd
stress:dbug:[1]usingbackoffsleepof3000us
stress:dbug:[1]–>hogvmworker1[6]forked
可以看到直接显示stree线程报错
2.限制容器的cpu:
[root@localhost~]#dockerrun–help
-c,–cpu-sharesint权重的设定
–cpusdecimal设定cpu的数量
–cpuset-cpusstring允许执行的cpu
–cpuset-memsstring允许执行的MEMs
比较:
运行2个容器指定一下权重
[root@localhost~]#dockerrun-dit–namecons1–cpu-shares1024
progrium/stress-c4
e634fdd70ef52c5eb68a87239fb8f5f5149e015d8d3829f024425f8b98ff4590
[root@localhost~]#dockerrun-dit–namecons2–cpu-shares512
progrium/stress-c4
31da32cd0b4e12f687bf8520067a84674443dc54bdfd367d051d07f06ffea1b3
–cpu-shares512设置cpu权重它比上面的少一半所以在资源紧缺时他比
上面的少用一半-c4几个cpu线程(我是2个cpu2个线程)
在本地用top命令查看:
[root@localhost~]#top
可以看到是它的2倍
现在暂停cons1查看资源变化:
3.限制容器的blockI/O:
–blkio-weightuint16blockio的权重10-10000为禁止
–blkio-weight-devicelist相对于设备的权重
对设备的限制:
–device-read-bpslist对限定设备的读取速率单位为(byte/s)
–device-read-iopslist对限定设备的读取速率单位为(io/s)
–device-write-bpslist对限定设备的写入速率
–device-write-iopslist对限定设备的写入速率
比较:
[root@localhost~]#dockerrun-it–device-write-bps/dev/sda:30M
centos7:latestbash
/dev/sda:30M设备:限定速率
[root@d275ac084bb9/]#timeddif=/dev/zeroof=test.txtbs=1M
count=1000oflag=direct
1000+0recordsin
1000+0recordsout
1048576000bytes(1.0GB)copied,33.3206s,31.5MB/s
real0m33.323s
user0m0.008s
sys0m2.419s
[root@d275ac084bb9/]#
不限制比较:
[root@localhost~]#dockerrun-itcentos7:latest/bin/bash
[root@fd8044a850c9/]#timeddif=/dev/zeroof=test.txtbs=1M
count=1000oflag=direct
1000+0recordsin
1000+0recordsout
1048576000bytes(1.0GB)copied,0.847471s,1.2GB/s
real0m0.849s
user0m0.000s
sys0m0.655s
[root@fd8044a850c9/]#
oflag=direct不使用缓存直接下载
可以看到不限制的时候是1.2G限制后是30M
容器的底层技术:
Cgroup可以设置cpu,内存,io的限制
位置在:[root@localhost~]#cd/sys/fs/cgroup/
里边有:
[root@localhostcgroup]#ls
blkiocpuacctcpusetfreezermemorynet_cls,net_prioperf_event
systemd
cpucpu,cpuacctdeviceshugetlbnet_clsnet_priopids
都有一个docker进入和cpu一样和下面一样
用cpu来查看里面会有一个docker进入启动一个容器会在这里生成一个id的目
录:
开启一个容器:
[root@localhostdocker]#dockerrun-dit–cpu-shares512
progrium/stress-c4
0b80bc942eecae8214ff96907aa2ab9257534c8c735145d54e11969f1b3b2f5f
[root@localhostdocker]#ls
0b80bc942eecae8214ff96907aa2ab9257534c8c735145d54e11969f1b3b2f5f
cpuacct.usagecpu.rt_runtime_us
cgroup.clone_children
cpuacct.usage_percpucpu.shares
cgroup.event_control
cpu.cfs_period_uscpu.stat
cgroup.procs
cpu.cfs_quota_usnotify_on_release
cpuacct.stat
cpu.rt_period_ustasks
[root@localhostdocker]#
进入
catcpu.shares
512

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值