美文网首页
docker 的资源分配

docker 的资源分配

作者: Stevennnmmm | 来源:发表于2019-07-26 12:48 被阅读0次

    内存分配

    -m 或者--memory :分配内存

    --memory-swap:分配临时内存

    docker run -it -m 200M --memory-swap=400M ubuntu :给ubuntu分配200兆内存和400M临时内存,默认分配可调控内存不能小于内存分配额,如果只给-m的参数,则memory-swap默认是两倍。

    压力测试

    命令:progrium/stress

    docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-byte 280M

    --vm 分配一个线程

    --vm-byte 线程的内存大小

    --cpu 分配cpu数量

    这里解释一下关于压力测试progrium/stress,他不是跑在docker中的,而是跑在host上面。而且这里有个坑,我查阅书籍的时候发现书上对这点都没有细致讲解,仅仅打印一条命令。让我以为他们之间内部是有某种联系将压测是打在了docker上面,其实不是。progrium只是代替docker显示数据跑满的情况下显示数据而已

    cpu资源分配

    默认情况下,所有docker都不会对cpu进行抢占,但是呢如果出现cpu吃紧,每个docker都去抢占资源了,所以这里docker研发者也是考虑到位了的

    -c 或者 --cpu-share : 进行配置权重分配

    docker run --name " a" -c 1024 ubuntu docker run --name "b" -c 512 ubuntu

    这里解释一下:当cpu空闲是,这个分配时不起作用的,因为如果b容器运行资源/访问比较大,就很可能所占的cpu是大于a的,但是当两个访问都大的时候,a就是两倍b的cpu资源。1024只是一个量的比较,不做具体数值。

    测试:

    progrium 很直观的能看见docker运行情况,但是网上都没什么教程。我们这里来测试一下。

    docker run --name "a" -c 1024 -it progrium/stress --cpu 2

    docker run --name "b" -c 512-it progrium/stress --cpu 2

    此时你去细看的话(用top)你就会发现两核的cpu几乎都被跑满,而且a的占用量是b的两倍。但是如果只有a或者b在高压的跑的话,cpu会被a或者b跑满

    Block带宽资源分配

    block io 是一种限制容器使用资源的方式,block io 指的是磁盘的读写,docker可以通过设置权重,限制bps,iops方式控制容器读写磁盘的带宽。

    --blkio-weight :和--share-cpu类似,默认值是500,通过权重来进行比较

    bps:byte per second :每秒读取数据量

    iops :io per second :每秒读取io的次数

    --device-read-bps   /demo/a:20MB

    --device-write-bps  /demo/a:20MB

    --device-read-iops  /demo/a:20MB

    --device-write-iops  /demo/a:20MB

    示例:docker run -it --device-write-bps /demo/a:20MB ubuntu

    表示次容器对容器映射目录 即 host 的/demo/a 目录读写速度限制在20mb/s

    用处:一般是没啥作用的,但是对性能有极致要求的人来说有不一样了,如果一个数据库的docker 和webdocker 放在同一台host上面,那么他们的读写是可以进行按需求配置的

    相关文章

      网友评论

          本文标题:docker 的资源分配

          本文链接:https://www.haomeiwen.com/subject/kilrrctx.html