docker的资源控制
docker的资源控制
对容器使用宿主机的资源进行限制。
cpu ?内存 ?磁盘/IO
docker使用linux自带的功能cgroup
control grouos是linux内核系统提供的一种可以限制、记录以及隔离进程组所使用的物理资源的机制
docker借助这个机制,来实现资源的控制
cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,分配控制的机制来实现资源控制
host:容器和宿主机共用一个网络命名空间
container:容器和容器之间共用一个网络命名空间
其他的资源依然是隔离的
cpu资源控制
linux通过CFS(Completely Fair Scheduler完全公平调度器),来调度各个进程对cpu的使用。CFS的调度100ms。我们也可以自定义容器的调度周期,已经在这个周期之内各个能够使用cpu的调度时间
--cpu-period:设置容器调度cpu的周期
--cpu-quota:设置在每个周期内,容器可以使用cpu的时间
可以配置使用
CFS周期的有效范围:1ms-1s ?--cpu-period 1000-1000000
容器使用cpu的配额时间必须,大于1ms,--cpu-quota的值,必须是>=1000
cpu.cfs_quota_us
-1
如果配置是-1,那么容器在使用宿主机cpu的时间不做任何限制
cpu.cfs_period_us
100000
CFS调度周期的长度微妙,在每个周期内,容器可以使用指定比例的cpu时间,默认情况都是100毫秒
CFS调度器,100毫秒就是定义了一个周期,在这个周期内,调度任务(容器)的基本时间单位
100毫秒一次调度容器请求cpu的资源,然后内核把cpu资源分配给容器
cpu.cfs_quota_us:调度请求之后,根据配额,内核分配给容器使用cpu的时间
docker stats test1/id:可以查看容器的运行占用宿主机资源的情况
docker top test1/id:可以查看容器的映射关系
设置容器占用cpu的权重比:需要多个容器才能生效
--cpu-shares:指定容器占用cpu的份额,模式权重1024,设置的值只能是1024的倍数
--cpu-shares是给每个容器使用cpu设置了相对的权重,权重高的,可以使用cpu的资源更多,但是,如果只有一个容器再运行,即使设置了权重,但是没有其他更高的权重的容器来占用资源,权重低的容器依然不受限
设置容器绑定cpu容器只能使用指定的cpu内核
docker run -itd --name test1 --cpuset-cpus 1,3
容器占用cpu的时间
容器占用cpu的权重比(多个容器时,才有效)
容器占用cpu的内核数,绑定指定cpu内核给容器使用
内存:限制容器对内存的使用
限制使用swap:想要限制容器使用swap。必须和限制内存一块使用
如果限制了内存是512,swap是1G,那么容器实际上能够使用swap空间,1g-512m=512M
如果不设置:-m 512m 但是使用swap的空间是-m的两倍
如果设置--memory-swap的值,和内存限制一样,容器就不能使用swap
-m 512m --memory-swap=-1,内存受限还是512M,但是容器使用swap空间不再限制
磁盘I/O配置:
读
写
限制容器在磁盘上的读速度
oflag=direct
在使用dd获取空字符集是从文件系统的缓存当中输入,速度是比较快的,禁用文件系统缓存,直接把数据写入磁盘,可以更真实的测试设备的性能,模拟直接写入物理设备的情况
限制容器读取的次数
docker run -itd --name test1 --device-read-iops /dev/sda:100 centos:7 /bin/bash
限制读取操作,每秒是100
限制容器写入的次数
docker run -itd --name test1
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!