目录
一,cpu资源控制
cgroups是一个非常强大的linux内核工具。他不仅可以现在被namespace隔离起来的资源,还可以为资源设置权重,计算使用量,控制进程启停等等,所以cgroups实现了对资源的配额和度量
1.1,cgroups有四大功能
资源限制:可以对任务使用的资源总额进行限制
优先级分配:通过分配cpu时间片数量以及磁盘io带宽大小,实际上相当于控制了任务运行的优先级。
资源统计:可以统计系统得资源使用量,如cpu时长,内存用量等
任务控制:cgroups可以对任务执行挂起,恢复等操作
1.2 设置cpu使用率上限
Linux通过CFS来调度各个进程对cpu的使用
- 我们可以设置每个容器进程的调度周期,以及在这个周期内各个容器最多能使用多少cpu时间
- 使用--cpu-period即可设置调度周期默认100ms,设置范围为:1ms-1s,对应的--cpu-period的数值范围是1000~10000000
- 使用--cpu-qupta即可设置在每个周期内容器能够使用cpu时间,默认无限制,设置的要求不能小于1ms,也就是--cpu-quota的值必须小于等于1000
查看周期限制和CPU配额限制
docker run -itd --name test5 centos:7 /bin/bash
#启动一个centos:7镜像容器
docker ps -a
#查看是否启动成功,并查看pid号
cd /sys/fs/cgroup/cpu/docker/容器PID号
#进入到该容器的限制目录中
cat cpu.cfs_quota_us
#查看每个周期的cpu最大限制时间
cat cpu.cfs_period_us
#查看调度周期是多久
//cpu.cfg_period_us: cpu 分配的周期(微秒,所以文件名中用us表示),默认为100000
//cpu.cfg_quota_us: 表示该cgroups限制占用的时间(微秒),默认为-1,表示为不限制,如果设为50000,表示占用50000/100000=50%的cpu
进行cpu压力测试然后修改每个周期的使用cpu的时间,查看cpu使用率
docker run -itd --name test1 --cpu-quota 50000 centos:7 /bin/bash
#可以直接创建一个容器并设置每个周期cpu执行的时间
或者
docker run -itd --name test1 centos:7 /bin/bash
cd /sys/fs/cgroup/cpu/docker/【容器pid】
echo 50000 > cpu.cfs_quota_us