cpu资源限制之cpu份额限制

@CPU资源控制

CPU资源的控制也有两种策略,

一种是完全公平调度(CFS:Completely Fair Scheduler)策略,提供了限额和按比例分配两种方式进行资源控制;

另一种是实时调度(Real-Time Scheduler)策略,针对实时进程按周期分配固定的运行时间。配置时间都以微秒(s)为单位,文件名中用us表示。

CFS调度策略下的配置

按权重比例设定CPU的分配

docker提供了–cpu-shares参数,在创建容器时指定容器所使用的CPU份额值。例如:

使用命令docker run -tid –-cpu-shares 100 镜像,创建容器,则最终生成的cgroup的cpu份额配置可以下面的文件中找到:

cat /sys/fs/cgroup/cpu/system.slice/docker-<容器的完整长

ID>/cpu.shares

技术分享

cpu-shares的值不能保证可以获得1个vcpu或者多少GHz的CPU资源,仅仅只是一个加权值。

该加权值是一个整数(必须大于等于2)表示相对权重,最后除以权重总和算出相对比例,按比例分配CPU时间。

默认情况下,每个docker容器的cpu份额都是1024。单独一个容器的份额是没有意义的,只有在同时运行多个容器时,容器的cpu加权的效果才能体现出来。例如,两个容器A、B的cpu份额分别为1000和500,在cpu进行时间片分配的时候,容器A比容器B多一倍的机会获得CPU的时间片。如果容器A的进程一直是空闲的,那么容器B是可以获取比容器A更多的CPU时间片的。极端情况下,比如说主机上只运行了一个容器,即使它的cpu份额只有50,它也可以独占整个主机的cpu资源。

cgroups只在容器分配的资源紧缺时,也就是说在需要对容器使用的资源进行限制时,才会生效。因此,无法单纯根据某个容器的cpu份额来确定有多少cpu资源分配给它,资源分配结果取决于同时运行的其他容器的cpu分配和容器中进程运行情况。

CPU占比为1024/(1024+512)=2/3,container2的CPU占比为512/(1024+512)=1/3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值