之前的一篇随笔——Docker CPU 资源限制 中介绍了针对COU的某个或某几个核的控制,今天介绍下CPU分片功能,即CPU占比。

测试步骤

  1、下载CPU测试image。agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将CPU资源用满.

$ docker pull agileek/cpuset-test

  2、观察未开任何应用时的CPU占用情况

[root@elk ~]# mpstat -P ALL
Linux 3.10.-.el7.x86_64 (elk) // _x86_64_ ( CPU) :: AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
:: AM all 0.05 0.00 0.13 0.00 0.00 0.00 0.00 0.00 0.00 99.82
:: AM 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60
:: AM 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.80
:: AM 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60
:: AM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
:: AM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
:: AM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
:: AM 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.80
:: AM 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80
[root@elk ~]# top
top - :: up days, :, users, load average: 2.18, 7.36, 4.61
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: total, used, free, buffers
KiB Swap: total, used, free. cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
logstash S 0.7 2.8 :09.16 java
root S 0.3 0.0 :06.19 xfsaild/dm-
elastic+ S 0.3 1.7 :43.65 java
root S 0.0 0.0 :32.37 systemd
root S 0.0 0.0 :00.45 kthreadd
root S 0.0 0.0 :04.83 ksoftirqd/
root - S 0.0 0.0 :00.00 kworker/:0H
root rt S 0.0 0.0 :00.50 migration/
root S 0.0 0.0 :00.00 rcu_bh
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :09.47 rcu_sched
root S 0.0 0.0 :01.54 rcuos/
root S 0.0 0.0 :53.77 rcuos/
root S 0.0 0.0 :00.50 rcuos/
root S 0.0 0.0 :53.75 rcuos/
root S 0.0 0.0 :55.59 rcuos/
root S 0.0 0.0 :44.15 rcuos/
root S 0.0 0.0 :53.57 rcuos/

  3、开启一个容器,占CPU比重为1000,并观察CPU使用情况

[root@elk ~]# docker run -it --rm -c  agileek/cpuset-test
Burning CPUs/cores

另开终端观察CPU占用情况

[root@elk ~]# top
top - :: up days, :, users, load average: 7.26, 3.04, 1.18
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: total, used, free, buffers
KiB Swap: total, used, free. cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17258 root 20 0 36732 936 564 S 800.0 0.0 19:13.78 cpuburn
root S 0.3 0.0 :00.02 kworker/:
root R 0.3 0.0 :00.01 top
root S 0.0 0.0 :32.35 systemd
root S 0.0 0.0 :00.45 kthreadd
root S 0.0 0.0 :04.83 ksoftirqd/
root - S 0.0 0.0 :00.00 kworker/:0H
root rt S 0.0 0.0 :00.50 migration/
root S 0.0 0.0 :00.00 rcu_bh
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/

此时可以看到,PID17258的进程(也就是我们刚刚开启的docker容器)CPU占到了全部8颗CPU的100%,也就是800%。

  4、再开启一个容器,占CPU比重为3000,并观察CPU使用情况

[root@elk ~]# docker run -it --rm -c  agileek/cpuset-test
Burning CPUs/cores

另开终端观察CPU占用情况

[root@elk ~]# top
top - :: up days, :, users, load average: 11.86, 6.29, 2.72
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: total, used, free, buffers
KiB Swap: total, used, free. cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17494 root 20 0 36732 932 560 S 602.1 0.0 3:54.95 cpuburn
17258 root 20 0 36732 936 564 S 197.9 0.0 39:34.78 cpuburn
root S 0.3 0.0 :04.34 irqbalance
root R 0.3 0.0 :00.01 top
root S 0.0 0.0 :32.36 systemd
root S 0.0 0.0 :00.45 kthreadd
root S 0.0 0.0 :04.83 ksoftirqd/
root - S 0.0 0.0 :00.00 kworker/:0H
root rt S 0.0 0.0 :00.50 migration/
root S 0.0 0.0 :00.00 rcu_bh
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/
root S 0.0 0.0 :00.00 rcuob/

  此时可以看到,PID17258的进程(我们开启的第一个docker容器)CPU占到了全部8颗CPU的1/4,也就是200%。而新开启的,占比3000的docker容器站到了全部8颗CPU的3/4,也就是600%。

Docker CPU 资源限制——CPU分片功能测试的更多相关文章

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

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

  2. docker cgroup技术之cpu和cpuset

    在centos7的/sys/fs/cgroup下面可以看到与cpu相关的有cpu,cpuacct和cpuset 3个subsystem.cpu用于对cpu使用率的划分:cpuset用于设置cpu的亲和 ...

  3. KVM虚拟机cpu资源限制和vcpu亲缘性绑定

    前言 KVM中添加的实例存在资源分布不均的情况,这样如果有消耗资源的实例会影响到其他实例的服务正常运行,所以给kvm做资源限制是很有必要的,下面记录一下在centos7中KVM环境下使用cgroup限 ...

  4. Docker 容器资源限制

    Docker 容器资源限制 默认情况下,一个容器并没有资源限制,并且该容器可以使用内核调度的所有资源.Docke提供了在启动容器时设置一些参数来控制该容器使用的内存.CPU和IO. 内存 OOME:在 ...

  5. docker的memory和cpu资源限制

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

  6. Docker技术入门与实战 第二版-学习笔记-5-容器-命令及限制内存与cpu资源

    1.启动容器 启动容器有两种方式: 基于镜像新建一个容器并启动 将在终止状态(stopped)的容器重新启动 1)新建并启动——docker run 比如在启动ubuntu:14.04容器,并输出“H ...

  7. docker高级应用之cpu与内存资源限制(转)

    时间:2015-06-09 14:01:52      阅读:1581      评论:0      收藏:0      [点我收藏+] 标签:docker资源限制   docker cpu限制    ...

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

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

  9. neutron之neutron_openvswitch_agent占用100%CPU资源问题

    基于kolla-ansible部署的queens版本,基于docker stats查看openstack的资源占用,发现neutron_openvswitch_agent一直占用100%CPU资源,这 ...

随机推荐

  1. Failed to load JavaHL Library解决方法

    进来的看官使用的是win7吧?!是64位的吧!?安装了eclipse的subclipse插件了吧!每次用到SVN插件时都会弹出如下的对话框,虽然不影响使用但是很不爽是不是啊?LZ也是一个有丁点儿强迫症 ...

  2. window.location.href和window.open的几种用法和区别

    使用js的同学一定知道js的location.href的作用是什么,但是在js中关于location.href的用法究竟有哪几种,究竟有哪些区别,估计很多人都不知道了. 一.location.href ...

  3. ArcBruTile 0.2.2

    在ArcGIS中加载OpenStreetMap和Google.Bing的影像是不是很酷?用ArcBruTile 0.2.2可以实现.安装注册步骤如下.

  4. [RGeos]手簿

    1.屏幕坐标以像素为单位,地图坐标通常以米为单位,CAD制图默认以毫米为单位. DPI是“dot per inch”的缩写.顾名思义,就是指在每英寸长度内的点数.通常,我们都使用dpi来作为扫描器和打 ...

  5. iOS 获取快递物流信息(GCD异步加载)

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  6. Synchronized及其实现原理

    并发编程中synchronized一直是元老级角色,我们称之为重量级锁.主要用在三个地方: 1.修饰普通方法,锁是当前实例对象. 2.修饰类方法,锁是当前类的Class对象. 3.修饰代码块,锁是sy ...

  7. display:inline-block; 到底是个啥玩意?

    display:inline; 内联元素,简单来说就是在同一行显示.display:block; 块级元素,简单来说就是就是有换行,会换到第二行.display:inline-block; 就是在同一 ...

  8. 字典:NSDictionary的应用举例

    字典就是关键字及其定义(描述)的集合.Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象).然后你就可以用这个关键字来 ...

  9. java中的断言

     断言:也就是所谓的assertion,是jdk1.4后加入的新功能. 它主要使用在代码开发和测试时期,用于对某些关键数据的判断,如果这个关键数据不是你程序所预期的数据,程序就提出警告或退出. 当软件 ...

  10. CCF真题之ISBN号码

    201312-2 问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上 ...