docker的创建 指定CPU 内存 网络 硬盘_docker容器资源配额控制之cpu

docker容器资源配额控制之cpu

未做cpu资源配额控制前

1、使用docker.io/centos(官方镜像)启动并进入一个容器

docker run -ti 1e1148e4cc2c /bin/bash

2、在该容器中编译安装stress硬件性能压力测试工具

下载stress

yum install -y wget

wget http://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz

编译安装该软件

tar zxvf stress-1.0.4.tar.gz

rm -fr stress-1.0.4.tar.gz

cd stress-1.0.4/

./configure

报错:

[root@4602a294419b stress-1.0.4]# ./configure

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

checking for a thread-safe mkdir -p... /usr/bin/mkdir -p

checking for gawk... gawk

checking whether make sets $(MAKE)... no

checking for gcc... no

checking for cc... no

checking for cl.exe... no

configure: error: in `/stress-1.0.4':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details.

533218bea75fe919a00233b4ee2d87d0.png

解决办法:

安装gcc依赖

yum install gcc -y

3ea7f8256d4f87244810b566fd844c44.png

make -j 4

报错:

bash: make: command not found

解决办法:

安装make

yum install -y make

870cc1e0a58f6ddc809a9f851098f4ab.png

make install

c43374a3075045f893d540bafc33fb1e.png

stress参数解释

-? 显示帮助信息

-v 显示版本号

-q 不显示运行信息

-n 显示已完成的指令情况

-t --timeout N 指定运行N秒后停止

--backoff N 等待N微妙后开始运行

-c 产生n个进程 每个进程都反复不停的计算随机数的平方根,测试cpu

-i 产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上,测试io

-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数 ,测试内存

--vm-bytes B 指定malloc时内存的字节数 (默认256MB)

--vm-hang N 指定在free栈的秒数

-d --hadd n 产生n个执行write和unlink函数的进程

--hadd-bytes B 指定写的字节数

--hadd-noclean 不unlink

3、压力测试

因为docker的物理机有4颗cpu,所以使用stress压力测试工具同时测试4颗cpu

stress -c 4 -i 4 -t 1m

323b435db6b00ce48cbd1a69453fb37b.png

这时候发现4颗cpu资源几乎全部耗尽!(如下图)

e146c0d4bcc34a99df7c65a9bec7e37b.png

开启cpu资源配额控制

cpuset-cpus命令单独使用

1、查看docker物理机的cpu信息

cat /proc/cpuinfo | grep processor

2e660d3a40a44695b7dd786c44469110.png

cat /proc/cpuinfo | grep processor | wc -l

2be286022ee1f4c4455f7366d9bee560.png

2、使用docker.io/centos镜像启动一个名称为centos-1的容器,并限制该容器之使用0和1这两颗cpu

docker run -it --name centos-1 --cpuset-cpus 0-1 docker.io/centos /bin/bash

3、安装stress

该步骤和上一章"未做cpu资源配额控制前"的第二小节一致,这里就不在累述了!

4、压力测试

stress -c 2 -i 2 -t 2m

6b5a3b2837383e7350b22022bb3e6bcb.png

stress -c 4 -i 4 -t 2m

daf4348bf80270097cba7f8b60c20662.png

测试结果:

物理机上只有0和1这两颗cpu资源被占用,2和3的cpu资源没有使用,说明限制成功!

01850fae959748b110625d4ee4a0c3db.png

cpuset-cpus和cpu-shares混合使用

1、分别使用docker.io/centos镜像启动centos-2和centos-3两个容器,其中centos-2的cpu-shares为512,centos-3的cpu-shares为1024

docker run -it --name centos-2 --cpuset-cpus 0-1 --cpu-shares 512 docker.io/centos /bin/bash

docker run -it --name centos-3 --cpuset-cpus 0-1 --cpu-shares 1024 docker.io/centos /bin/bash

2、在centos-2和centos-3上分别安装stress

步骤略

3、分别在centos-2和centos-3上运行stress命令

stress -c 2 -v -t 2m

727a31c50249f54e53ed6817f8df13fb.png

4、测试结果

这时候可以发现cpu0和1全部被跑满,但是cpu2和3则未受影响;同样两个stress进程的比值也为1:2,说明cpu-shares设置也生效了!

5cacc370325e3391ec3b17db763edc69.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值