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系统中有多 ...
随机推荐
- 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了
引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中? 本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...
- Android --ListView分页
参考博客:Android ListView分页加载(服务端+android端)Demo 监听OnScrollListener事件 class OnListScrollListener implemen ...
- 单臂路由+DHCP+VLAN
使用思科模拟软件Cisco Packet Tracer Student,软件功能有限,只能架设简单的网络架构,适合初学者使用.
- HTML 5 Web 存储-localStorage
在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...
- nexenta systemcallerror
最近在试nexenta做iscsi,设置ip出现上面的错误 解决办法,先讲mtu设置为不周与原来的值,比如原来为1500,先设置成1501,就可以了,然后可以再改回来,也是没有问题的!
- Synchronized及其实现原理
并发编程中synchronized一直是元老级角色,我们称之为重量级锁.主要用在三个地方: 1.修饰普通方法,锁是当前实例对象. 2.修饰类方法,锁是当前类的Class对象. 3.修饰代码块,锁是sy ...
- leetcode23 多个拍好序的链表进行归并排序 (java版本)
题目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...
- SQL语句执行时间测试
select getdate()--开始执行时间 要执行的SQL语句 select getdate() --结束时间
- TTabControl、TMemo组件(制作一个简单的多文本编辑框)
TTabControl包含一列字符串标签的tabs 每个标签控制一个对象 首先创建一个TForm;接下来添加TTabControl组件和一个文件对话框TOpenDialog(用于添加文件),然后在TT ...
- Python学习总结8:文件模式及操作方法汇总
文件操作之前需要文件保证文件存在,并且将文件open os.mknod("test.txt") 创建空文件 fp = open("test.txt" ...