docker容器资源配额
1.docker 容器控制CPU
docker通过cgroup来控制容器使用的资源限制,可以对docker限制的资源包括cpu、内存、磁盘
1.1 指定docker容器可以使用的cpu份额
# 查看配置份额命令:docker run --help | grep cpu-shares -c, --cpu-shares int CPU shares (relative weight) CPU shares在创建容器时指定容器所使用的cpu份额值。cpu-shares的值不能保证可以获得1个vcpu或者多少GHz的cpu资源,仅仅只是一个弹性的加权值
默认每个docker容器的cpu份额值都是1024,在同一个cpu核心上,同时运行多个容器,容器的cpu加权效果才能体现出来
例如:2个容器A、B的cpu份额是1000和500,结果:
1.A和B正常运行,占用同一个CPU,在cpu进行时间片分配的时候,容器A比容器B多一倍机会获得CPU的时间片;
2.如果A的进程一直是空闲的,那么容器B时可以获取比容器A更多的CPU时间片
例:给容器示例分配512权重的cpu使用份额
参数:--cpu-shares 512
命令:docker run -it --cpu-shares 512 centos /bin/bash
查看是否设置成功:进入容器内:cat /sys/fs/cgroup/cpu/cpu.shares
1.2 cpu core核心控制
参数:--cpuset 可以绑定CPU
对多核CPU服务器,docker可以控制容器运行限定使用哪些cpu内核和内存节点,--cpuset-cpus 和 --cpuset-mems 参数设置,对具有NUMA拓扑(有多CPU、多内存)的服务器尤其有用,可以对需要高性能计算的容器进行性能最优的配置 补充扩展:
服务器架构一般分:SMP、NUMA、MPP体系结构
1.对称多处理器结构()SMP),例:x86服务器,双路服务器,主板上有2个物理cpu
2.非一致存储访问结构(NUMA),例:IBM小型机Pseries 690
3.海量并行处理结构(MPP),例:大型机Z14
测试方法:将cpu都绑定到同一个核心上,运行stress,然后使用taskset绑定CPU
Stress:linux系统压力测试软件,可以直接yum install stress -y 安装,epel源里有
例:2个cpu进程,2个io进程,20s后停止运行
stress -c 2 -i 2 --verbose --timeout 20s
实验:
#容器名stress10运行在0和1的cpu上
docker run -itd --name stress10 --cpuset-cpus 0,1 --cpu-shares 512 centos /bin/bash
docker run -itd --name stress20 --cpuset-cpus 0,1 --cpu-shares 1024 centos /bin/bash
容器内安装epel源:yum install epel-release -y和yum install stress -y,然后运行stress命令进行测试,将cpu占满查看top情况
2. docker容器控制内存
参数:-m -m, --memory bytes Memory limit
例1:允许容器使用的内存上限为128M
>docker run -it -m 128m centos
查看:cat /sys/fs/cgroup/memory/memory.limit_in_bytes # 可以使用tress进行测试
例2:创建一个docker,只使用2个cpu核心,使用128M内存
docker run -it --cpuset-cpus 0,1 -m 128m centos
3.docker容器控制IO
[root@node2 ~]# docker run --help| grep write-b
--device-write-bps list Limit write rate (bytes per second) to a device (default [])
# 限制此设备上读速度,单位可以是kb、mb或gb
情景:防止某个docker容器吃光磁盘的I/O资源
例1:限制容器示例对硬盘的最高写入速度为2MB/s
--device参数:将主机设备添加到容器
mkdir -p /var/www/html/
docker run -it -v /var/www/html/:/var/www/html/ --device /dev/sda:/dev/sda --device-write-bps /dev/sda:2mb centos /bin/bash # 测试命令
time dd if=/dev/sda of=/var/www/html/test.out bs=2M count=50 oflag=direct,nonblock 注:dd参数:
direct:读写数据采用IO方式,不走缓存,直接从内存写硬盘
nonblock:读写数据采用非阻塞IO方式,优先写dd命令的数据
4.docker容器运行结束后自动释放资源
--rm Automatically remove the container when it exits
用途:当容器命令运行结束后,自动删除容器,自动释放资源
docker容器资源配额的更多相关文章
- docker容器资源配额控制_转
转自:docker容器资源配额控制 ■ 文/ 天云软件 容器技术团队 docker通过cgroup来控制容器使用的资源配额,包括CPU.内存.磁盘三大方面,基本覆盖了常见的资源配额和使用量控制. cg ...
- docker容器资源配额控制
转自:http://blog.csdn.net/horsefoot/article/details/51731543 文/ 天云软件 容器技术团队 Docker通过cgroup来控制容器使用的资源配额 ...
- Docker 容器资源限制
Docker 容器资源限制 默认情况下,一个容器并没有资源限制,并且该容器可以使用内核调度的所有资源.Docke提供了在启动容器时设置一些参数来控制该容器使用的内存.CPU和IO. 内存 OOME:在 ...
- docker容器资源限制:限制容器对内存/CPU的访问
目录 一.系统环境 二.前言 三.docker对于CPU和内存的限制 3.1 限制容器对内存的访问 3.2 限制容器对CPU的访问 一.系统环境 服务器版本 docker软件版本 CPU架构 Cent ...
- Docker 容器资源隔离 namespace(十)
目录 一.简介 Linux Namespace的6大类型 二.Mount Namespace 三.IPC Namespace 四.Network Namespace 五.UTS Namespace 六 ...
- docker容器安装及使用技巧
关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...
- tasksetCPU亲和力&docke容器资源限制
[taskset详解] taskset设置cpu亲和力,taskset能够将一个或者多个进程绑定到一个或者多个处理器上运行 参数: 选项: -a, --all-tasks 在给定 pid 的所有任务( ...
- Docker容器(四)——常用命令
(1).基本使用方法 查看所有镜像.docker images [root@youxi1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ...
- [转帖]Docker容器CPU、memory资源限制
Docker容器CPU.memory资源限制 https://www.cnblogs.com/zhuochong/p/9728383.html 处理事项内容等 这一块内容感觉 不清楚.. 背景 在使用 ...
- Docker(二十)-Docker容器CPU、memory资源限制
背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不 ...
随机推荐
- 记录--Event Loop事件循环、微任务、宏任务
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 JS是一门单线程语言,单线程就意味着,所有的任务需要排队,前一个任务结束,才会执行下一个任务.这样所导致的问题是:如果JS执行的时间 ...
- dotnet转换webservice返回的dataset
string paras = "p1=test1&p2=test2";//参数 byte[] bytes = Encoding.UTF8.GetBytes(paras); ...
- spring boot @Scheduled 单线程的问题
package com.lxw.lxwDemo; import org.springframework.scheduling.annotation.EnableScheduling; import o ...
- verilog的文件流和项目流
verilog的文件流和项目流 1.写在前面 在学习FPGA时,一般都是从项目流入手的.从一个集成的开发环境创建一个工程.通过一个个组件的编写和设置来实现某个项目.这样的操作固然简单,对于设计者来说只 ...
- KingbaseES V8R3数据库运维案例之---不完整的启动包(incomplete startup packet)复现
案例说明: 在KingbaseES V8R3数据库的sys_log日志中,出现以下故障信息"不完整的启动包(incomplete startup packet)"日志信息.本案例复 ...
- Tarjan 算法——图论学习笔记
Part.1 引入 在图论问题中,我们经常去研究一些连通性问题,比如: 有向图的联通性:传递闭包--Floyd 算法: 有向图连通性的对称性:强联通分量(SCC)--Tarjan 算法缩点: 无向图的 ...
- Scala 模式匹配拓展
1 package chapter08 2 3 object Test03_MatchTupleExtend { 4 def main(args: Array[String]): Unit = { 5 ...
- sql语句TRUNCATE 清空表数据
清空表数据 TRUNCATE TABLE zzsfp_hwmx;
- 使用OHOS SDK构建benchmark
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/google/bench ...
- RabbitMQ 05 直连模式-Spring Boot操作
Spring Boot集成RabbitMQ是现在主流的操作RabbitMQ的方式. 官方文档:https://docs.spring.io/spring-amqp/docs/current/refer ...