docker19.03限制容器使用的cpu资源
一,用--cpus限制可用的cpu个数
例子:
[root@localhost liuhongdi]# docker run -idt --name kafka1 --hostname kafka1 --cpus=0.3 --privileged kafka:0.1 /usr/sbin/init
此处限定了可用cpu个数为0.3
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,登录进入后,安装stress
说明:el8的源里面还没有,先用el7的试试
[root@kafka1 source]# wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/s/stress-1.0.4-16.el7.x86_64.rpm [root@kafka1 source]# rpm -ivh stress-1.0.4-16.el7.x86_64.rpm
三,测试--cpus对cpu的限制是否起作用
1,
在容器内执行stress,创建四个消耗 CPU 资源的进程
[root@kafka1 source]# stress -c 4
2,
在宿主机上执行top,查看cpu使用率
[root@localhost liuhongdi]# top
top - 16:18:34 up 2:01, 1 user, load average: 0.02, 0.07, 0.08
Tasks: 297 total, 5 running, 292 sleeping, 0 stopped, 0 zombie
%Cpu0 : 14.6 us, 0.0 sy, 0.0 ni, 84.8 id, 0.0 wa, 0.3 hi, 0.3 si, 0.0 st
%Cpu1 : 13.7 us, 0.3 sy, 0.0 ni, 85.7 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
可以发现stress占用了大约30%的cpu,
每颗cpu上大约15%左右,基本上平均的分布在每颗cpu上面
3,
用docker stats检查:
[root@localhost liuhongdi]# docker stats kafka1 --no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
db7b125a944f kafka1 29.64% 67.75MiB / 3.67GiB 1.80% 20.9MB / 599kB 79MB / 5.57MB 10
CPU %的值29.64%,基本上跑满了,说明容器对cpu的限制起作用
4,cpus的限制,可以从inspect中查看:
[root@localhost liuhongdi]# docker update --cpus=2 kafka2
kafka2
[root@localhost liuhongdi]# docker inspect kafka2 | grep -i NanoCpus
"NanoCpus": 2000000000, [root@localhost liuhongdi]# docker update --cpus=0.5 kafka2
kafka2
[root@localhost liuhongdi]# docker inspect kafka2 | grep -i NanoCpus
"NanoCpus": 500000000,
四,使用--cpuset-cpus参数可以指定使用固定的某一颗或几颗cpu
1,
例子:当我们有2颗cpu时,id分别是:0,1
我们指定容器只使用第0颗cpu
看例子:我们用 --cpuset-cpus指定要使用的cpu是第0颗
[root@localhost liuhongdi]# docker run -idt --name kafka1 --hostname kafka1 --cpuset-cpus="0" --privileged kafka:0.1 /usr/sbin/init
3e3c43759030fd1db5031ef0b9e7b0a34fdb3a0900520d3e3d265056bf49c33d
2,登录进入,用stress测试
[root@localhost liuhongdi]# docker exec -it kafka1 /bin/bash
[root@kafka1 source]# stress -c 4
3,
用docker stats查看:
[root@localhost liuhongdi]# docker stats kafka1 --no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
3e3c43759030 kafka1 97.51% 54.84MiB / 3.67GiB 1.46% 12.6MB / 240kB 19.7MB / 1.04MB 10
可以看到cpu已跑满到接近100%
4,
top中可以看到两颗cpu使用情况的不同:
[root@localhost liuhongdi]# top
top - 16:33:14 up 2:15, 1 user, load average: 2.94, 1.19, 0.50
Tasks: 303 total, 6 running, 297 sleeping, 0 stopped, 0 zombie
%Cpu0 : 96.3 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 3.3 hi, 0.3 si, 0.0 st
%Cpu1 : 6.7 us, 1.3 sy, 0.0 ni, 91.6 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
5,
如何查看当前的配置:
[root@localhost liuhongdi]# docker inspect kafka1 | grep CpusetCpus
"CpusetCpus": "0",
6,
如果指定多颗cpu,格式如下:
docker run -it --rm --cpuset-cpus="1,3" u-stress:latest /bin/bash
五,查看docker的版本:
[root@localhost liuhongdi]# docker --version
Docker version 19.03.8, build afacb8b
docker19.03限制容器使用的cpu资源的更多相关文章
- docker19.03限制容器使用的内存资源
一,指定内存大小的参数: [root@localhost liuhongdi]# docker run -idt --name kafka2 --hostname kafka2 -m 200M --m ...
- docker容器资源限制:限制容器对内存/CPU的访问
目录 一.系统环境 二.前言 三.docker对于CPU和内存的限制 3.1 限制容器对内存的访问 3.2 限制容器对CPU的访问 一.系统环境 服务器版本 docker软件版本 CPU架构 Cent ...
- docker的memory和cpu资源限制
这里仅针对docker本身,不涉及任何编排工具compose或者k8s等. 按照惯例,官文撸起来. 重要的部分是一些选项,用来限制资源大小. Memory Most of these options ...
- Docker: 限制容器可用的 CPU
默认情况下容器可以使用的主机 CPU 资源是不受限制的.和内存资源的使用一样,如果不对容器可以使用的 CPU 资源进行限制,一旦发生容器内程序异常使用 CPU 的情况,很可能把整个主机的 CPU 资源 ...
- 容器技术之Docker资源限制
上一篇我们聊到了docker容器的单机编排工具docker-compose的简单使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13121678.html: ...
- docker19.03搭建私有容器仓库
一,启动docker后,搜索registry [root@localhost source]# systemctl start docker [root@localhost source]# dock ...
- 理解Docker(4):Docker 容器使用 cgroups 限制资源使用
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- Docker CPU 资源限制——CPU固定核功能测试
Docker使用Linux cgroup来实现资源的限制,对于CPU的限制有两种方法: 1.cpuset CPU Set限定容器使用某个固定的CPU核.使用默认的libcontainer引擎时,可以通 ...
- Docker CPU 资源限制——CPU分片功能测试
之前的一篇随笔——Docker CPU 资源限制 中介绍了针对COU的某个或某几个核的控制,今天介绍下CPU分片功能,即CPU占比. 测试步骤 1.下载CPU测试image.agileek/cpuse ...
随机推荐
- python 3 for嵌套
- C、算法、操作系统杂记《malloc 0大小是什么行为》
linux手册上的说明 If size is 0, then malloc() returns either NULL, or a unique pointer value that can late ...
- Spring使用@Async实现异步
使用场景 在实际项目中,一个接口如果需要处理很多数据,如果是同步执行,通过网络请求接口可能会出现请求超时.这时候就需要使用异步执行处理了. 使用经验 代码 异步服务类 @Service // Spri ...
- Java 异常面试题(2020 最新版)
Java异常架构与异常关键字 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程 ...
- Vant IndexBar 在小程序中的简单使用
这篇文章是老王的朋友超超提供的,上午已经更新到原创微信公众号「软件老王」,链接,欢迎各位朋友关注老王的原创公号! 先看下最终效果图,主要是渲染一个A - Z 的 通讯录.同样的,如果你要做的是城市列表 ...
- 栈帧的内部结构--动态链接 (Dynamic Linking)
每个栈帧中包含: 局部变量表(Local Variables) 操作数栈(Opreand Stack) 或表达式栈 动态链接 (Dynamic Linking) (或指向运行时常量的方法引用) 动态返 ...
- 记一次公司mssql server密码频繁被改的事件
环境描述 近期公司服务器mssql密码频繁被改,导致各种业务系统无法连接,报错.昨天来公司,发现4台数据库3台密码都变了.今天尝试着去查查是否能找到问题根源. 步骤 4台服务器3台连不上,只有64还活 ...
- burp suite之spider(爬虫)
spider (蜘蛛,这里的意思指爬行) 像蜘蛛一样在网站上爬行出网站的个个目录信息,并发送至Target. 1.Control(控制) Spider is paused :停止蜘蛛爬行 Clear ...
- IP地址的获取
//ip地址的获取:非原创,之前在其他地方看到,拿过来备份下: public static String getIPAddress(HttpServletRequest request) { Stri ...
- Java泛型中的类型参数和通配符类型
类型参数 泛型有三种实现方式,分别是泛型接口.泛型类.泛型方法,下面通过泛型方法来介绍什么是类型参数. 泛型方法声明方式:访问修饰符 <T,K,S...> 返回类型 方法名(方法参数){方 ...