【转载】 Docker-关于docker cpu的限制后,实际效果的研究
原文地址:
https://zhuanlan.zhihu.com/p/46275332
==================================================
思考:我们使用docker时,肯定会配置cpu和内存的限定,那么问题来了,限定后的docker使用宿主机的多核cpu时是什么策略呢(cpu分工是随机分到某个几个核上,还是固定某个核)?如果我docker内的构造资源占用超过限定的cpu占用,是否会出现cpu占用溢出?
1、配置docker容器的资源限制(宿主机为8cpu,8个核):如cpu2个、内存2G
2、资源占用前cpu情况
宿主机监控:可以看到配置生效
Top监控-查看宿主机各核占用情况:处于空闲状态
3、在docker容器中,跑消耗cpu脚本。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#! /bin/sh # filename killcpu.sh if [ $# != 1 ] ; then echo "USAGE: $0 <CPUs>" exit 1; fi for i in `seq $1` do echo -ne " i=0; while true do i=i+1; done" | /bin/sh & pid_array[$i]=$! ; done for i in "${pid_array[@]}"; do echo 'kill ' $i ';'; done
使用方法很简单,参数2表示消耗2颗CPU的资源,运行后,会有一堆 kill 命令,方便 kill 进程:
[root@centos20181008-58bd6cb49-cvcph /]# sh killcpu.sh 2
kill 44 ;
kill 46 ;
4、查看cpu消耗:cpu占用200%左右(2C占满)--合理情况
top监控:独占某两个核
5、再加一个运行脚本:死循环,运行单个可以消耗100%的cpu (如果是3c的话,将会占用300%的cpu)
#!/bin/bash
set i=0
set j=0
for((i=0;i<10;))
do
let "j=j+1"
done
6、查看cpu消耗:宿主机针对docker cpu监控正常200%左右(2C的占用),但针对8C的监控,发现压力分到4核上了,合计还是200%左右
总结(我又验证了其他几组数据):
容器限定 脚本构造cpu占用 宿主机cpu核占用 限定是否生效
2核(200%) 200% 2核(各100%) 生效(监控容器205%占用)
3核(300%) 300% 3核(各100%) 生效(监控容器303%占用)
2核(200%) 300% 4核(26/68/64/49%,共207%) 生效(监控容器205%占用)
3核(300%) 400% 6核(42/53/28/42/75/75%,共315%)生效(监控容器310%占用)
A、通过压测可以看到,cpu限制设定可以生效(构造cpu溢出占用时,也生效);
B、限制cpu的机制,从实验数据可以发现,如果实际cpu使用率<=限制设置,那么使用宿主机的cpu占用核数=设定的核数(优先满核占用);但如果使用cpu的使用率>限制设置,虽然限制设置还是保持生效,但占用cpu会随机分摊到不同的核上,占用合计=限定值。
======================================
相关文章
- ubuntu 一键安装 docker
- Docker开启远程安全访问
- docker小结
- Docker - 构建镜像:使用docker commit命令
- Docker 在 openSUSE 下的安装、使用
- docker镜像操作
- [Docker] Allow Containers to Communicate through Docker Networks
- 【收藏】使用Docker搭建MySQL服务
- 一步步把一个SpringBoot应用打包成Docker镜像并运行
- Docker 设置镜像源
- Jenkinsfile构建docker镜像
- Docker与iptables 只允许特定ip访问Docker的服务 通过iptables限制docker容器端口
- y22.第二章 Docker从入门到精通 -- Cgroups和docker 的资源限制(四)
- 【云原生之Docker实战】在docker环境下部署DooTask任务管理工具
- 【云原生之Docker实战】安装docker镜像分析工具Dive
- 【云原生之Docker实战】使用docker部署o2oa企业OA平台
- Centos7上安装docker
- 如何控制docker的CPU和内存份额
- 【云原生 • Docker】docker 私有仓库的搭建、配置与镜像上传
- Docker----如何更改docker镜像的存储路径
- 使用Docker快速搭建生产环境
- Docker安装(安装docker)
- Docker-资产侦察灯塔系统(ARL)的配置使用
- Docker学习笔记19:docker使用之命令大全
- Docker学习笔记08:docker使用之镜像使用
- Docker 安装 Redis
- a15.ansible 生产实战案例 -- docker基于二进制安装harbor roles
- k8s学习之路 | Day14 有关 k8s 弃用 Docker
- docker 使用 GPU 安装Nvidia Docker