之前的一篇随笔——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. checkbox的完美用户体验(转)

    如需查看效果-->自行建个html文件,或者-->原文:http://bbs.blueidea.com/thread-2711834-1-7.html 最常见的checkbox的使用: & ...

  2. PythonDay01

    >注释 >>当行注视:# 被注释内容 >>多行注释:""" 被注释内容 """ >执行脚本传入参数 &g ...

  3. static单利模式

    // //  main.m //  01-文件管理器 // //  Created by apple on 14-3-21. //  Copyright (c) 2014年 apple. All ri ...

  4. NSTimer 线程操作

    http://www.jianshu.com/p/0c050af6c5ee 2.NSTimer的创建与撤销必须在同一个线程操作.performSelector的创建与撤销必须在同一个线程操作.

  5. javascript中数组的concat()方法 - 数组连接

    <html> <head> <title>数组的concat()方法</title> <script> /* 数组的concat()方法: ...

  6. apache allow和deny

    转自 http://www.cnblogs.com/top5/archive/2009/09/22/1571709.html 影响最终判断结果的只有两点: 1. order语句中allow.deny的 ...

  7. OPW-00001: Unable to open password-file

    >set oracle_sid=orcl >orapwd file= OPW-: Unable to open password-file 修改方法: 去掉引号 >orapwd fi ...

  8. linux_x86_64 blat安装

    blatSrc35.zip下载地址:http://users.soe.ucsc.edu/~kent/src/ 对于下载好的源代码安装包blatSrc35.zip,需进行编译,安装过程如下: 1.用un ...

  9. 从gitlab下载好cocoapods中遇到的问题

    如果遇到 [!] Unable to satisfy the following requirements: - `Mantle (~> 2.0.3)` required by `Podfile ...

  10. How about xlogs are missing and xlogs are deleted

    [postgres@minion1 bin]$ pwd /usr/local/pgtest/bin [postgres@minion1 bin]$ ./pg_ctl -D ../data/ start ...