资讯专栏INFORMATION COLUMN

Docker容器对CPU资源隔离的几种方式

AlphaWatch / 2192人阅读

摘要:还有一点要注意的是这种配置是有弹性的,如果容器一直闲着,那容器是可以使用空闲资源的。比如说容器配置的,那么容器就可以最多使用个资源,如果配置的,那就可以使用个资源。

了解Docker的同学应该知道,Docker的一个很大的特性就是可以对各种资源做隔离以及限制,这些资源包括CPU、内存、网络、硬盘,关于内存、网络、硬盘的资源限制都比较好理解,无非就是分多少用多少,比如给这个容器分1G内存,那就最多能用1G的内存,但是对于CPU的限制就不是那么好理解了,而且配置起来相对来说也更复杂一些。

首先要知道的是Docker的资源隔离是基于Cgroups的,前面的文章里提到的coolshell的科普文章《Docker基础技术:Linux CGroup》里有做一些基本的介绍和使用方法,想要深入了解的话可以看下redhat上的文档,因为今天主要是说对CPU资源的隔离,所以可以深入看下关于CPU的这一章。

从Docker的官方文档里可以看到,在通过Docker run这条命令启动一个容器时可以通过--cpu-shares --cpu-period以及--cpu-quota这三个参数来控制容器对CPU的使用,但是并没有做太详细的介绍以及示例,所以理解起来稍微有些困难。比如--cpu-shares和其他两个参数一起用会有什么效果?

我们一个个来看,先看--cpu-shares,默认情况下所有容器的share(简单理解成是权重吧)是相同的,也就是所有容器有相同的权重,在所有容器一起竞争资源时,最终得到的资源是相同的。这个share是一个相对的值,那么这个值的意义就不能单纯的通过一个容器的share值来看,而是多个在一起对比,比如A和B两个容器,A配置的是1024,B配置的是512,那么A最大可以使用的CPU资源是B的两倍。还有一点要注意的是这种配置是有弹性的,如果A容器一直闲着,那B容器是可以使用空闲资源的。

再来看--cpu-period和--cpu-quota,为啥把这两个参数放一起呢?因为这两个参数是相互配合的,在redhat的那篇文档里讲的很清楚,--cpu-period和--cpu-quota的这种配置叫Ceiling Enforcement Tunable Parameters,--cpu-shares的这种配置叫Relative Shares Tunable Parameters。--cpu-period是用来指定容器对CPU的使用要在多长时间内做一次重新分配,而--cpu-quota是用来指定在这个周期内,最多可以有多少时间用来跑这个容器。跟--cpu-shares不同的是这种配置是指定一个绝对值,而且没有弹性在里面,容器对CPU资源的使用绝对不会超过配置的值。

比如说A容器配置的--cpu-period=100000 --cpu-quota=50000,那么A容器就可以最多使用50%个CPU资源,如果配置的--cpu-quota=200000,那就可以使用200%个CPU资源。

如果这两种配置方式一起使用呢?我简单测试了下,应该是取两个配置的交集,目前还没做具体的测试,等做了具体的测试再把相关的数据在这里记录一下,不过配置这么复杂也没太大必要。

那么有什么样的应用场景呢?简单举个例子,加入对外提供A和B两个服务,但是A的优先级比B要高,假如只用--cpu-shares来配置,从实际经验来看,B服务占用资源太高时是会对A有一定的影响的,但是具体原因我还没去深入了解,但是如果通过--cpu-period和--cpu-quota来配置,就能起到绝对的控制,做到无论B怎么样,都不会影响到A。

对了,我这里特意没提到CFS这个概念,因为有点复杂,一上来就说这个东西会让人有点懵,但是理解了上面的那些东西后再看CFS就可以加深对上面那些概念的理解。CFS是Linux内核2.6.23版本开始采用的进程调度器,可以翻译为完全公平调度器,它的基本原理是这样的:设定一个周期,目标是让每个进程在这个周期内至少有机会运行一次,然后根据进程的数量,大家平分这个调度周期内的CPU使用权,如果有配置进程的优先级,在分割调度周期的时候要加权。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26536.html

相关文章

  • 几种 Docker 监控工具

    摘要:在我们列举的几个监控的服务或平台中,这是唯一一款国内产品。也是一款付费监控解决方案,计划收费方案是美分小时。同样也支持监控,还包括对容器级事件的监测停止开始等等和管理容器产生的日志。由于是一个监控方案,相对来说它的安装和部署都比较简单。 轻量级虚拟化容器 Docker,自发布以来便广受业界关注,在开源界和企业界掀起了一阵风。Docker 容器相对于 VM 有以下几个优势:启动速度快;资...

    张春雷 评论0 收藏0
  • 白话 Linux 容器资源隔离限制原理

    摘要:所以,我们希望对进程进行资源利用上的限制或控制。它主要提供了如下功能限制资源使用,比如内存使用上限以及文件系统的缓存限制。的作用资源限制可以对任务使用的资源内存,,磁盘等资源总额进行限制。通过实现了资源隔离,通过实现了资源限制。 作者:烧鸡太子爷来源:恒生LIGHT云社区背景最近在给组内新人讲解一些docker...

    刘明 评论0 收藏0
  • Docker安全

    摘要:返回结果发现禁掉能力后,在容器里就无法改变容器的所有者了。操作系统中访问控制安全的发展早期的操作系统几乎没有考虑安全问题,一个用户可以访问任何文件或资源,但很快出现了访问控制机制来增强安全性,其中主要的访问控制在今天被称为自主访问控制。 整理自《Docker进阶与实战》 Docker的安全性 Docker的安全性主要体现在如下几个方面: Docker容器的安全性这是指容器是否会危害到...

    CoreDump 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<