一,用--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资源的更多相关文章

  1. docker19.03限制容器使用的内存资源

    一,指定内存大小的参数: [root@localhost liuhongdi]# docker run -idt --name kafka2 --hostname kafka2 -m 200M --m ...

  2. docker容器资源限制:限制容器对内存/CPU的访问

    目录 一.系统环境 二.前言 三.docker对于CPU和内存的限制 3.1 限制容器对内存的访问 3.2 限制容器对CPU的访问 一.系统环境 服务器版本 docker软件版本 CPU架构 Cent ...

  3. docker的memory和cpu资源限制

    这里仅针对docker本身,不涉及任何编排工具compose或者k8s等. 按照惯例,官文撸起来. 重要的部分是一些选项,用来限制资源大小. Memory Most of these options ...

  4. Docker: 限制容器可用的 CPU

    默认情况下容器可以使用的主机 CPU 资源是不受限制的.和内存资源的使用一样,如果不对容器可以使用的 CPU 资源进行限制,一旦发生容器内程序异常使用 CPU 的情况,很可能把整个主机的 CPU 资源 ...

  5. 容器技术之Docker资源限制

    上一篇我们聊到了docker容器的单机编排工具docker-compose的简单使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13121678.html: ...

  6. docker19.03搭建私有容器仓库

    一,启动docker后,搜索registry [root@localhost source]# systemctl start docker [root@localhost source]# dock ...

  7. 理解Docker(4):Docker 容器使用 cgroups 限制资源使用

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  8. Docker CPU 资源限制——CPU固定核功能测试

    Docker使用Linux cgroup来实现资源的限制,对于CPU的限制有两种方法: 1.cpuset CPU Set限定容器使用某个固定的CPU核.使用默认的libcontainer引擎时,可以通 ...

  9. Docker CPU 资源限制——CPU分片功能测试

    之前的一篇随笔——Docker CPU 资源限制 中介绍了针对COU的某个或某几个核的控制,今天介绍下CPU分片功能,即CPU占比. 测试步骤 1.下载CPU测试image.agileek/cpuse ...

随机推荐

  1. 工具-Typora常用语法()+自己总结

    工具-Typora常用语法 Markdown(MD)作为目前互联网写作相当流行的一种文档撰写语言格式,深受互联网编辑者的喜爱,由此周边一些基于MD的编辑工具也随之油然而生. 作为一款免费的MD编辑器: ...

  2. 如何用canvas拍出 jDer's工作照

    背景 在京东,就职满五年的老员工被称作"大佬",如果满了十年,那就要被称之为"超级大佬"了. 从 2016 年 5 月 19 日开始,每一年的这一天都被定为京东 ...

  3. oracle之WHERE子句中常用的运算符

    WHERE子句中常用的运算符 4.1 运算符及优先级: 算数运算符*,/,+,-, 逻辑运算符not, and ,or 比较运算符 单行比较运算 =,>, >=,<,<=, & ...

  4. sql分页存储过程,带求和、排序

    创建存储过程: CREATE PROCEDURE [dbo].[sp_TBTest_Query] ( @PageSize INT, --每页多少条记录 @PageIndex INT = 1, --指定 ...

  5. python实现多分类评价指标

    1.什么是多分类? 参考:https://www.jianshu.com/p/9332fcfbd197 针对多类问题的分类中,具体讲有两种,即multiclass classification和mul ...

  6. FTP服务端 FTP服务端搭建教程

    FTP服务端搭建教程如下:一.需要准备以下工具:1.微型FTP服务端.2.服务器管理工具二.操作步骤:1.下载微型FTP服务端.(站长工具包可下载:http://zzgjb.iis7.com/ )2. ...

  7. 栈的Java实现-分别使用数组和链表

    栈是非常重要的数据结构,栈具有后进先出的特点. 在JVM内部,每个线程维护一个栈,对于每个方法调用,入栈一个元素,成为栈帧,当方法执行完成后,对应的栈帧出栈. 栈帧中,也包含一个栈,称为操作数栈. 一 ...

  8. Laravel Exception结合自定义Log服务的使用

    Laravel Exception结合自定义Log服务的使用 第一部分:laravel关于错误和异常的部分源码 第二部分:自定义异常的使用(结合serviceprovider monolog elas ...

  9. LINQ中的OrderBy实现按照两个字段升序、降序排序操作

    在公司或许有这种需求,先根据第一个某个字段按照升序排序,然后如果相同,在按照第二个某个字降序排序,我们该怎么去实现呢? 现在来教教大家分别使用Labmda和LINQ进行这种操作. 1.先按照第一个字段 ...

  10. java原生程序redis连接(连接池/长连接和短连接)选择问题

    最近遇到的连接问题我准备从重构的几个程序(redis和mysql)长连接和短连接,以及连接池和单连接等问题用几篇博客来总结下. 这个问题的具体发生在java原生程序和redis的交互中.这个问题对我最 ...