栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker:资源限制

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker:资源限制

前面我们提到过,容器能够得以实现,主要依赖于内核的种的NameSpace,CCgroups
NameSpace(命名空间)

 CCgroups(控制组)控制NameSpace(命名空间)来进行资源的分配

 1、默认情况下一个Docker中的一个Container是没有资源限制的,调度器能够Container调度多少资源,它都能 吃掉

2、Docker provides 提供了控制Memory,CPU,block IO,从这三个维度来进行控制的,其实它正真能控制前两个Memory,CPU,【我们知道Memeory是不可压缩资源,当一个容器内的进程耗尽CPU时候再次申请CPU,有可能会因为OOM而被kill掉;而CPU没关系【可压缩资源】,你耗费的太多,内核使劲压缩,不会分配给你】

3、这些控制都依赖于LInux capabilites

Memory

Linux是如何执行OOME的?

在Linux主机上如果内核探测到当前宿主机,没有足够的内存可用,用于执行重要的功能就会抛出OOME (Out Of Memory Exception)就会去Kill掉这个程序以释放某些资源

  • 一旦发生OOME,任何进程都有可能被杀死,包括docker daemon在内
  • 为此,Docker特地调整了docker daemon 的OOME优选级,以免被内核杀死,但容器的优先级并未被调整
限制Memory资源【一般在启动的时候添加使用】

--menory-swappiness:设置使用容器使用交换分区的倾向性【0-100:0能不用就不用,100:不得不用的时候就用,一般是40-60】

--memory-reservation:预留的空间的

--oom-kill-disable:禁止发生OOM后被kill掉

 --memory-swap设定之前一定要先设置--memory;没有设置物理内存大小,是不能设置交换分区的

--memory-swap和--memory组合起来的表现设定

 CPU

容器如果不加以限制的话,是可以使用宿主机上所有的CPU资源的;我们可以进行不同的设置,不过大多数进程调度的时候是使用CFS scheduler 算法的;Docker 1.13版本后,还支持的realtime scheduler

 --cups=:设置使用的CPU核心数

--cpu-shares:按照比列分配CPU资源【你需要就按照比例进行分配,如果不需要就会全部吃掉】

--cpuset--cpus:设置CPU的在那个核心上面【0-4】

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号