Docker资源控制

Docker资源控制

1.CPU

  • docker的CPU控制的路径
[root@localhost ~]# cd /sys/fs/cgroup/cpu
[root@localhost cpu]# ls
cgroup.clone_children  cpuacct.stat          cpu.cfs_quota_us   cpu.stat           system.slice
cgroup.event_control   cpuacct.usage         cpu.rt_period_us   docker             tasks
cgroup.procs           cpuacct.usage_percpu  cpu.rt_runtime_us  notify_on_release  user.slice
cgroup.sane_behavior   cpu.cfs_period_us     cpu.shares         release_agent
[root@localhost cpu]# cd docker
[root@localhost docker]# ls
86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294  cpu.cfs_quota_us
cgroup.clone_children                                             cpu.rt_period_us
cgroup.event_control                                              cpu.rt_runtime_us
cgroup.procs                                                      cpu.shares
cpuacct.stat                                                      cpu.stat
cpuacct.usage                                                     notify_on_release
cpuacct.usage_percpu                                              tasks
cpu.cfs_period_us
[root@localhost docker]# docker run -itd --name test2 --net mynetwork --ip=172.18.0.10 centos:7 /bin/bash
285e24863db37565c619d42d98a1681ba4235df1f399489f20861998d5905a58
[root@localhost docker]# ls
285e24863db37565c619d42d98a1681ba4235df1f399489f20861998d5905a58  cpu.cfs_period_us
86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294  cpu.cfs_quota_us
cgroup.clone_children                                             cpu.rt_period_us
cgroup.event_control                                              cpu.rt_runtime_us
cgroup.procs                                                      cpu.shares
cpuacct.stat                                                      cpu.stat
cpuacct.usage                                                     notify_on_release
cpuacct.usage_percpu                                              tasks
[root@localhost docker]# cd 86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294/
[root@localhost 86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294]# ls
cgroup.clone_children  cpuacct.stat          cpu.cfs_period_us  cpu.rt_runtime_us  notify_on_release
cgroup.event_control   cpuacct.usage         cpu.cfs_quota_us   cpu.shares         tasks
cgroup.procs           cpuacct.usage_percpu  cpu.rt_period_us   cpu.stat
[root@localhost 86f87f283a502170b056684d86eadd98b946edffce06e2bba193d4f19d2cb294]# cat cpu.cfs_quota_us 
-1
#-1的意思是你的主机有几个CPU就占用几个CPU
  • 对docker的CPU使用率调整
docker run -itd --name test1 --cpu-quota 20000 centos:7 /bin/bash
#或者
echo 20000 > /sys/fs/cgroup/cpu/docker/(docker的运行id)/cpu.cfs_quota
  • CPU的压力测试
yum -y install bc
echo "scale=5000;4*a(1)" | bc -l -q
  • 按比例分配
docker run -itd --name c1 --cpu-shares 512 centos:7
docker run -itd --name c2 --cpu-shares 1024 centos:7
#创建两个容器为c1和c2,若是只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比33.3%和66.7%
yum -y install epel-release
yum -y install stress
stress -c 4 #产生四个CPU线程
#在每个容器里面执行
docker stats
#验证结果
docker run -itd --name test2 --cpuset-cpus 1,3 centos:7 /bin/bash
#限制容器使用指定的CPU,验证方法是:top按1检查

2.内存

  • 内存的使用限制
docker run -itd --name test3 -m 512m centos:7
stress -m 1204m --vm 2
docker stats
#验证

3.IO资源

  • 对blkio的限制
docker run -d --device-read-bps /dev/sda:30M centos:7
#--device-read-bps:限制读某个设备bps(数据量)
docker run -d --device-write-bps /dev/sda:30M centos:7
#--device-write-bps:限制写入某个设备的bps(数据量)
#--device-read-iops:限制读某个设备的iops(次数)
#--device-write-iops:限制写入某个设备的iops(次数)
发布了140 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/double_happy111/article/details/105670319
今日推荐