Docker CPU 资源限制——CPU固定核功能测试
Docker使用Linux cgroup来实现资源的限制,对于CPU的限制有两种方法:
1.cpuset
CPU Set限定容器使用某个固定的CPU核。使用默认的libcontainer引擎时,可以通过--cpuset来指定进程/docker容器在执行时使用某几个固定的CPU。比如0-3或以逗号分割如0,3,4(0是第一个CPU)。
2.cpu.shares
CPU shares是相对权重, 设置为一个正整数,代表所分配的相对CPU资源比。在Docker中,使用默认的libcontainer引擎时,可以指定在docker run时指定-c或--cpu-shares=0。当DockerDaemon中增加新的容器时,CPU shares的权重相应减小,当删除容器时CPU shares的权重相应增加。
由于第二种方式理解上有些绕,且容器真正分到的CPU资源会随着容器数及其他容器权重而改变,个人建议并不太适合应用到生产场景中。本文主要分析第一种方式,即cpuset。
测试步骤
1、下载CPU测试image。agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将指定的CPU资源用满
$ docker pull agileek/cpuset-test
2、测试容器占用单独CPU
$ docker run -it --rm --cpuset= agileek/cpuset-test
3、另开终端窗口,观察CPU占用情况
[root@zhenyunode ~]# mpstat -P ALL
Linux 3.10.-.el7.x86_64 (zhenyunode) 2015年12月20日 _x86_64_ ( CPU) 21时25分17秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
21时25分22秒 all 12.68 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.00 87.27
21时25分22秒 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.60
21时25分22秒 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.60
21时25分22秒 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60
21时25分22秒 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
21时25分22秒 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时25分22秒 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80
21时25分22秒 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.60
21时25分22秒 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
4、测试容器占用多个CPU
$ docker run -it --rm --cpuset=,,, agileek/cpuset-test /cpus
5、另开终端窗口,观察CPU占用情况
[root@zhenyunode ~]# mpstat -P ALL
Linux 3.10.-.el7.x86_64 (zhenyunode) 2015年12月20日 _x86_64_ ( CPU) 21时26分34秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
21时26分39秒 all 50.24 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.00 49.71
21时26分39秒 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时26分39秒 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
21时26分39秒 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时26分39秒 0.40 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.40
21时26分39秒 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时26分39秒 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时26分39秒 0.60 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.20
21时26分39秒 0.40 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.40
经过以上的测试步骤,可以看到,当为容器配置某个CPU时,该CPU被占满,但其余的CPU并没有受到影响。
Docker CPU 资源限制——CPU固定核功能测试的更多相关文章
- Docker CPU 资源限制——CPU分片功能测试
之前的一篇随笔——Docker CPU 资源限制 中介绍了针对COU的某个或某几个核的控制,今天介绍下CPU分片功能,即CPU占比. 测试步骤 1.下载CPU测试image.agileek/cpuse ...
- docker cgroup技术之cpu和cpuset
在centos7的/sys/fs/cgroup下面可以看到与cpu相关的有cpu,cpuacct和cpuset 3个subsystem.cpu用于对cpu使用率的划分:cpuset用于设置cpu的亲和 ...
- KVM虚拟机cpu资源限制和vcpu亲缘性绑定
前言 KVM中添加的实例存在资源分布不均的情况,这样如果有消耗资源的实例会影响到其他实例的服务正常运行,所以给kvm做资源限制是很有必要的,下面记录一下在centos7中KVM环境下使用cgroup限 ...
- Docker 容器资源限制
Docker 容器资源限制 默认情况下,一个容器并没有资源限制,并且该容器可以使用内核调度的所有资源.Docke提供了在启动容器时设置一些参数来控制该容器使用的内存.CPU和IO. 内存 OOME:在 ...
- docker高级应用之cpu与内存资源限制(转)
时间:2015-06-09 14:01:52 阅读:1581 评论:0 收藏:0 [点我收藏+] 标签:docker资源限制 docker cpu限制 ...
- docker的memory和cpu资源限制
这里仅针对docker本身,不涉及任何编排工具compose或者k8s等. 按照惯例,官文撸起来. 重要的部分是一些选项,用来限制资源大小. Memory Most of these options ...
- Docker技术入门与实战 第二版-学习笔记-5-容器-命令及限制内存与cpu资源
1.启动容器 启动容器有两种方式: 基于镜像新建一个容器并启动 将在终止状态(stopped)的容器重新启动 1)新建并启动——docker run 比如在启动ubuntu:14.04容器,并输出“H ...
- docker容器资源限制:限制容器对内存/CPU的访问
目录 一.系统环境 二.前言 三.docker对于CPU和内存的限制 3.1 限制容器对内存的访问 3.2 限制容器对CPU的访问 一.系统环境 服务器版本 docker软件版本 CPU架构 Cent ...
- Linux资源控制-CPU和内存
主要介绍Linux下, 如果对进程的CPU和内存资源的使用情况进行控制的方法. CPU资源控制 每个进程能够占用CPU多长时间, 什么时候能够占用CPU是和系统的调度密切相关的. Linux系统中有多 ...
随机推荐
- 第一个thinkphp入口文件
ThinkPHP3.1.3_full已下载 网站根目录下编辑一个入口文件index.php <?php define('APP_NAME','Index'); //项目名称 define('AP ...
- RabbitMQ学习总结 第六篇:Topic类型的exchange
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- Java学习——基本数据类型
Java两大数据类型 内置数据类型 引用数据类型 变量就是申请内存存储值,内存管理系统根据变量的类型分配相应的存储空间存储该类型的数据. 内置数据类型 8中基本类型(四个整数型,两个浮点型),一种字符 ...
- CNContact对通讯录的基本使用(增删改查)
/** * 注意:iOS9才有能使用 * 首先在工程里导入ContactsUI.framework和Contacts.framework两个框架 * * * 源代码的链接地址 * 链接: http:/ ...
- iOS 隐藏系统的导航,使用自定义的导航
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- 使用已有PDB克隆PDB
使用已有PDB克隆PDB $ sqlplus '/as sysdba' SQL*Plus: Release Production on Tue Jun :: Copyright (c) , , Ora ...
- Emmet 的使用
Emmet 的介绍 Emmet 的前身叫做:Zen Coding,也许熟知旧名的人不在少数.Emmet 一般前端工程师用得比较多,具体它是做什么的,我们通过下面两张 Gif 演示图来说明: Intel ...
- SpringMVC注解@RequestParam全面解析
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取.这里主要 ...
- hdu1251(字典树)
统计难题(hdu1251) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Tota ...
- 【Origin】 破阵子-未可留 征人调
几朝岁月,悠悠,容颜改,两鬓衰,可恨荣光不留! 一生事,忧心畔,可怜惶惶,不拿年岁当缠头: 只把扑朔往往,人生几回首: 等闲识得料峭处,一腔泪流: 曾记否,三十功名尘与土,不可解忧愁: 青春换得明日花 ...