Docker如何实现Memory资源限制-创新互联

这篇文章主要为大家展示了“Docker如何实现Memory资源限制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Docker如何实现Memory资源限制”这篇文章吧。

成都创新互联公司是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,成都移动机房,海外高防服务器,机柜大带宽、租用·托管,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。

一:简介

docker通过cgroup来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。

cgroup是Control Groups的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 cpu、memory、磁盘IO等等) 的机制,被LXC、docker等很多项目用于实现进程资源控制。cgroup将任意进程进行分组化管理的 Linux 内核功能。cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为cgroup子系统,有以下几大子系统实现:

  1. blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。

  2. cpu:使用调度程序为cgroup任务提供cpu的访问。

  3. cpuacct:产生cgroup任务的cpu资源报告。

  4. cpuset:如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。

  5. devices:允许或拒绝cgroup任务对设备的访问。

  6. freezer:暂停和恢复cgroup任务。

  7. memory:设置每个cgroup的内存限制以及产生内存资源报告。

  8. net_cls:标记每个网络包以供cgroup方便使用。

  9. ns:命名空间子系统。

  10. perf_event:增加了对每group的监测跟踪的能力,即可以监测属于某个特定的group的所有线程以及运行在特定CPU上的线程。

目前docker只是用了其中一部分子系统,实现对资源配额和使用的控制。

二:内存资源控制

和CPU控制一样,docker也提供了若干参数来控制容器的内存使用配额,可以控制容器的swap大小、可用内存大小等各种内存方面的控制。主要有以下参数:

1.--memory: 设置容器使用的大内存上限。默认单位为byte,可以使用K、G、M等带单位的字符串。

2.-- memory-reservation: 启用弹性的内存共享,当宿主机资源充足时,允许容器尽量多地使用内存,当检测到内存竞争或者低内存时,强制将容器的内存降低到memory-reservation所指定的内存大小。按照官方说法,不设置此选项时,有可能出现某些容器长时间占用大量内存,导致性能上的损失。

3.--memory-swap: 等于内存和swap分区大小的总和,设置为-1时,表示swap分区的大小是无限的。默认单位为byte,可以使用K、G、M等带单位的字符串。如果–memory-swap的设置值小于–memory的值,则使用默认值,为–memory-swap值的两倍。

4. --memory-swappiness: 控制进程将物理内存交换到swap分区的倾向,默认系数为60。系数越小,就越倾向于使用物理内存。值范围为0-100。当值为100时,表示尽量使用swap分区;当值为0时,表示禁用容器 swap 功能(这点不同于宿主机,宿主机 swappiness 设置为 0 也不保证 swap 不会被使用)。

默认情况下,容器可以使用主机上的所有空闲内存。

三:举例

docker run -ti --rm --name mytest --memory 128m  centos:latest /bin/bash

Docker stats <容器ID>

Docker如何实现Memory资源限制

四:IO资源控制

相对于CPU和内存的配额控制,docker对磁盘IO的控制相对不成熟,大多数都必须在有宿主机设备的情况下使用。主要包括以下参数:

  • –device-read-bps:限制此设备上的读速度(bytes per     second),单位可以是kb、mb或者gb。

  • –device-read-iops:通过每秒读IO次数来限制指定设备的读速度。

  • –device-write-bps :限制此设备上的写速度(bytes per     second),单位可以是kb、mb或者gb。

  • –device-write-iops:通过每秒写IO次数来限制指定设备的写速度。

  • –blkio-weight:容器默认磁盘IO的加权值,有效值范围为10-100。

  • –blkio-weight-device: 针对特定设备的IO加权控制。其格式为DEVICE_NAME:WEIGHT

以上是“Docker如何实现Memory资源限制”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联-成都网站建设公司行业资讯频道!


本文名称:Docker如何实现Memory资源限制-创新互联
标题路径:http://pwwzsj.com/article/dpihdp.html