• Docker资源控制管理


    一.CPU 资源控制

    1.定义

    cgroups,是一个非常强大的linux内核工具,他不仅可以限制被 namespace 隔离起来的资源, 还可以为资源设置权重、计算使用量、操控进程启停等等。 所以 cgroups(Control groups)实现了对资源的配额和度量。

    2.cgroups四大功能

    (1)资源限制:可以对任务使用的资源总额进行限制

    (2)优先级分配:通过分配的cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级

    (3)资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等

    (4)任务控制:cgroup可以对任务执行挂起、恢复等操作

    二.对CPU使用率限制

    1.使用stress工具测试CPU 和内存使用情况

    1. mkdir /opt/stress
    2. vim /opt/stress/Dockerfile
    3. ——————————————————————————————————————————————————————————————————————————————
    4. FROM centos:7
    5. RUN yum -y install wget
    6. RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #epel源,可以使用扩展软件包(stress)
    7. RUN yum -y install stress #可以指定产生线程,使用循环语句,测试用'
    8. ——————————————————————————————————————————————————————————————————————————————
    9. cd /opt/stress/
    10. systemctl restart docker.service #建议重启docker,不然下面的操作可能会失败,卡在wget
    11. docker build -t crntos:stress . #生成镜像
    12. ...
    13. ...
    14. Successfully built 7e69cc4d1b07
    15. Successfully tagged crntos:stress
    16. docker images
    17. #以下可以使用该镜像为基础产生的容器进行测试:'

    2.设置CPU资源占用比(设置多个容器时生效)

    1. docker run -itd --name cpu512 --cpu-shares 512 crntos:stress stress -c 10
    2. #-c 10表示产生10个子线程,测试用
    3. docker run -itd --name cpu1024 --cpu-shares 1024 crntos:stress stress -c 10
    4. #查看容器的资源使用状态(动态更新)
    5. docker stats
    6. 资源是用cadvisor收集的

    3.限制CPU使用周期速率

    1. cat /sys/fs/cgroup/cpu/docker/[容器ID]/cpu.cfs_quota_us
    2. #-1,表示不做控制
    3. #例如:容器进程需要每Ⅰ秒使用单个cPU的 0.2秒时间,可以将 --cpu-period 设置为1000000(即1秒),cpu-quota 设置为200000 0.2秒)。
    4. #当然,在多核情况下,如果允许容器进程完全占用两个CPU,则可以将cpu-period 设置为 100000(即 0.1秒),cpu-quota 设置为2000000.2秒)。
    5. docker run -itd --name test01 --cpu-period 100000 --cpu-quota 200000 crntos:stress
    6. #也可以直接去修改文件vim /sys/fs/cgroup/cpu/docker/[容器ID]/cpu.cfs_quota_us
    7. #法一:进入指定容器查看
    8. docker exec -it test01 bash
    9. cd /sys/fs/cgroup/cpu
    10. cat cpu.cfs_period_us
    11. cat cpu.cfs_quota_us
    12. #法二:docker inspect 容器ID
    13. docker inspect 6ccc4ddcb6ad

    4.限制CPU内核使用

    1. docker run -itd --name cpu1 --cpuset-cpus 0-1 crntos:stress
    2. #执行以上命令需要宿主机为双核,表示创建的容器只能用01两个内核。最终生成的 cgroup的 CPU内核配置如下
    3. cat /sys/fs/cgroup/cpuset/docker/[容器ID]/cpuset.cpus
    4. docker exec -it cpu1 /bin/bash -c "stress -c 10"


     

  • 相关阅读:
    找到分析问题的起点:7 步追问法
    Linux shell编程基础
    MQ---第一篇
    静态文件快速建站
    复习单片机:8*8点阵--->点亮第一个点(内含:1LED 点阵介绍+2 硬件设计+3 软件设计+4.原始代码+5 实验现象)
    TCP的重传机制和滑动窗口介绍(详细讲解版)
    【毕设绝技】基于 SpringCloud 的在线交易平台商城的设计与实现(一)
    全国职业技能大赛云计算--高职组赛题卷①(容器云)
    超分辨率重建——SESR网络训练并推理测试(详细图文教程)
    咖啡机、电热水壶、豆浆机上架亚马逊美国站UL1082认证标准
  • 原文地址:https://blog.csdn.net/Kiryu7/article/details/138204335