zoukankan      html  css  js  c++  java
  • docker19.03限制容器使用的cpu资源

    一,用--cpus限制可用的cpu个数

    例子:

    [root@localhost liuhongdi]# docker run -idt --name kafka1 --hostname kafka1 --cpus=0.3 --privileged kafka:0.1 /usr/sbin/init

    此处限定了可用cpu个数为0.3

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,登录进入后,安装stress

    说明:el8的源里面还没有,先用el7的试试

    [root@kafka1 source]# wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/s/stress-1.0.4-16.el7.x86_64.rpm
    
    [root@kafka1 source]# rpm -ivh stress-1.0.4-16.el7.x86_64.rpm 

    三,测试--cpus对cpu的限制是否起作用

    1,

    在容器内执行stress,创建四个消耗 CPU 资源的进程

    [root@kafka1 source]# stress -c 4

    2,

    在宿主机上执行top,查看cpu使用率

    [root@localhost liuhongdi]# top
    top - 16:18:34 up  2:01,  1 user,  load average: 0.02, 0.07, 0.08
    Tasks: 297 total,   5 running, 292 sleeping,   0 stopped,   0 zombie
    %Cpu0  : 14.6 us,  0.0 sy,  0.0 ni, 84.8 id,  0.0 wa,  0.3 hi,  0.3 si,  0.0 st
    %Cpu1  : 13.7 us,  0.3 sy,  0.0 ni, 85.7 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st

    可以发现stress占用了大约30%的cpu,

    每颗cpu上大约15%左右,基本上平均的分布在每颗cpu上面

    3,

    用docker stats检查:

    [root@localhost liuhongdi]# docker stats kafka1 --no-stream
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
    db7b125a944f        kafka1              29.64%              67.75MiB / 3.67GiB   1.80%               20.9MB / 599kB      79MB / 5.57MB       10

    CPU %的值29.64%,基本上跑满了,说明容器对cpu的限制起作用

    4,cpus的限制,可以从inspect中查看:

    [root@localhost liuhongdi]# docker update --cpus=2 kafka2
    kafka2
    [root@localhost liuhongdi]# docker inspect kafka2 | grep -i NanoCpus
                "NanoCpus": 2000000000,
    
    [root@localhost liuhongdi]# docker update --cpus=0.5 kafka2
    kafka2
    [root@localhost liuhongdi]# docker inspect kafka2 | grep -i NanoCpus
                "NanoCpus": 500000000,

    四,使用--cpuset-cpus参数可以指定使用固定的某一颗或几颗cpu

    1, 

    例子:当我们有2颗cpu时,id分别是:0,1

              我们指定容器只使用第0颗cpu

    看例子:我们用 --cpuset-cpus指定要使用的cpu是第0颗

    [root@localhost liuhongdi]# docker run -idt --name kafka1 --hostname kafka1 --cpuset-cpus="0" --privileged kafka:0.1 /usr/sbin/init
    3e3c43759030fd1db5031ef0b9e7b0a34fdb3a0900520d3e3d265056bf49c33d

    2,登录进入,用stress测试

    [root@localhost liuhongdi]# docker exec -it kafka1 /bin/bash
    [root@kafka1 source]# stress
    -c 4

    3,

    用docker stats查看:

    [root@localhost liuhongdi]# docker stats kafka1 --no-stream
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
    3e3c43759030        kafka1              97.51%              54.84MiB / 3.67GiB   1.46%               12.6MB / 240kB      19.7MB / 1.04MB     10

    可以看到cpu已跑满到接近100%

    4,

    top中可以看到两颗cpu使用情况的不同:

    [root@localhost liuhongdi]# top
    top - 16:33:14 up  2:15,  1 user,  load average: 2.94, 1.19, 0.50
    Tasks: 303 total,   6 running, 297 sleeping,   0 stopped,   0 zombie
    %Cpu0  : 96.3 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  3.3 hi,  0.3 si,  0.0 st
    %Cpu1  :  6.7 us,  1.3 sy,  0.0 ni, 91.6 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st

    5, 

    如何查看当前的配置:

    [root@localhost liuhongdi]# docker inspect kafka1 | grep CpusetCpus
                "CpusetCpus": "0",

    6,

    如果指定多颗cpu,格式如下:

    docker run -it --rm --cpuset-cpus="1,3" u-stress:latest /bin/bash

     

    五,查看docker的版本:

    [root@localhost liuhongdi]# docker --version
    Docker version 19.03.8, build afacb8b
  • 相关阅读:
    godep使用
    golang导入包的几个说明:import
    X-Frame-Options 响应头
    HTTP Strict Transport Security
    为什么我们要使用HTTP Strict Transport Security?
    IFrame安全问题解决办法(跨框架脚本(XFS)漏洞)
    基于iframe的CFS(Cross Frame Script)和Clickjacking(点击劫持)攻击
    javaWeb防止恶意登陆或防盗链的使用
    关于Cookie 的HttpOnly属性(java/web操作cookie+Tomcat操作jsessionid)
    会话cookie中缺少HttpOnly属性 解决
  • 原文地址:https://www.cnblogs.com/architectforest/p/12586265.html
Copyright © 2011-2022 走看看