zoukankan      html  css  js  c++  java
  • 浅谈Docker(二)

    Docker使用cgroup实现CPU,内存和磁盘IO等系统资源的限制。

    CPU

    Docker现在有2个与CPU资源相关的参数,-c可以指定CPU的占比,--cpuset可以绑定CPU。例如,指定容器在CPU 0,1运行:

    # docker run -it --rm -c 1024 --cpuset=0,1 dbyin/stress --cpu 2 

    stress: info: [1] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

     NewImage

    然后再启动一个容器,同样绑定在CPU0,1,-c为512:

    # docker run -it --rm -c 512 --cpuset=0,1 dbyin/stress --cpu 2

    stress: info: [1] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

    NewImage

    可以看到container1的CPU占比为1024/(1024+512)=2/3,container2的CPU占比为512/(1024+512)=1/3。

    将container1的cpu.shares改为512,

    #echo “512” > /cgroup/cpu/docker/$CONTAINER_ID/cpu.shares

    NewImage 

    可以看到两个容器的CPU占比趋于平均。

    内存

    Docker提供参数-m, --memory=""限制容器的内存使用量。例如,

    允许容器使用的内存上限为128M:

    # docker run -it --rm -m 128m dbyin/stress --vm 1 --vm-bytes 128M --vm-hang 0

    stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd

    NewImage

    实际上,docker还会允许容器使用-m指定的同样大小的swap内存:

    NewImage

    可以看到,容器可以正常启动。

     NewImage

    可以看到,容器由于out of memory被kill掉。

    IO

    # docker run -it --rm dbyin/tlinux:1.2 /bin/bash

    bash-4.1# time $(dd if=/dev/zero of=f1.txt bs=1024 count=500000 && sync)

    500000+0 records in

    500000+0 records out

    512000000 bytes (512 MB) copied, 1.28334 s, 399 MB/s

     

    real    0m12.091s

    user    0m0.056s

    sys     0m1.237s

    可以看到,写512M数据,共用12s,平均42M/s。

    将IO带宽限制为10M/s:

    # echo "253:1 10485760" > /cgroup/blkio/docker/$CONTAINER_ID/ blkio.throttle.write_bps_device

     

    bash-4.1# time $(dd if=/dev/zero of=f1.txt bs=1024 count=500000 && sync)

    500000+0 records in

    500000+0 records out

    512000000 bytes (512 MB) copied, 1.41813 s, 361 MB/s

     

    real    0m50.348s

    user    0m0.071s

    sys     0m1.473s

     

  • 相关阅读:
    1. 关于GCD的使用(串并行队列和同步异步函数的问题)
    陌院俅颗难炎先当粮澜
    openresty在centos/redhat6.7上部署
    tomcat 日志那点事
    Redhat6.7 切换Centos yum源
    Quartz corn时间表达式(转)
    Jquery控制滚动Div 滚动条事件
    fastjson排序 Map多层嵌套转换自动排序问题终极解决方案
    Spring 外部注入Bean (JAX-WS)
    SSH,如何恢复通过输入密码的方式来登录服务器
  • 原文地址:https://www.cnblogs.com/wipy/p/4269184.html
Copyright © 2011-2022 走看看