龙空技术网

docker资源限制实战

弈秋的美好生活 447

前言:

而今你们对“ubuntu安装stress”大约比较关心,咱们都想要知道一些“ubuntu安装stress”的相关知识。那么小编同时在网上搜集了一些有关“ubuntu安装stress””的相关文章,希望大家能喜欢,各位老铁们快快来学习一下吧!

目录

一、虚拟化技术如何限制资源?

二、为容器运行限定内存

三、为容器运行限定cpu

一、虚拟化技术如何限制资源?

vmvare 安装的虚拟机可以通过界面设定cpu、内存... 的资源限制,如下图。docer 容器也同样可以通过指定参数来达到这个目的。其原理为何?请参见

我的环境是一台阿里云服务器。

二、为容器运行限定内存

通过docker run --help

-m, --memory bytes                   Memory limit      --memory-reservation bytes       Memory soft limit      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap

通过docker run指定memory 限制为20MB,算上swap总共可以申请40MB。--vm-bytes记得要改一下(以我的环境来说修改为10MB),否则默认是256MB,内存如果太小一直会分配直白

stress: dbug: [5] allocating 10485760 bytes ...stress: dbug: [5] touching bytes in strides of 4096 bytes ...stress: dbug: [5] freed 10485760 bytesstress: dbug: [5] allocating 10485760 bytes ...stress: dbug: [5] touching bytes in strides of 4096 bytes ...stress: dbug: [5] freed 10485760 bytesstress: dbug: [5] allocating 10485760 bytes ...stress: dbug: [5] touching bytes in strides of 4096 bytes ...stress: dbug: [5] freed 10485760 bytesstress: dbug: [5] allocating 10485760 bytes ...
三、为容器运行限定cpu
 -c, --cpu-shares int                 CPU shares (relative weight)     

开启三个会话:

会话一: 指定cpu权重为10

~]# docker run --cpu-shares=10 --name=test1 ninesun0318/ubuntu-stress --cpu 1 --verbosestress: info: [1] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hddstress: dbug: [1] using backoff sleep of 3000usstress: dbug: [1] --> hogcpu worker 1 [5] forked

会话二:top查看该container 的cpu信息

会话一: 指定cpu权重为5

~]# docker run --cpu-shares=5 --name=test2 ninesun0318/ubuntu-stress --cpu 1 --verbose

此时再查看top信息,刚开始两个stress 进程所占cpu分别是33% 70%,刚好是按照权重分配 2:1的关系,过一会两个进程所占cpu都是100%,

这是为什么呢?看完这张图片你应该就知道了。

mpstat -P ALL 2 100

代表 查看每颗逻辑cpu的使用状况,每2s输出一次,一共输出100次。

也就是说有两个cpu所以可以并发执行两个stress,docker 运行容器时设定的cpu权重是针对单核cpu,或者说的那个并发任务大于cpu逻辑核心数时,该参数才会生效。

不信你再docker run 一个 strss,cpu权重设定为15%。

两颗cpu都跑慢了,但是cpu权重却生效了,这时也就发生了cpu时钟切换。

标签: #ubuntu安装stress