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.内存和磁盘资源.如果不 ... 
随机推荐
- KDE算法解析
			核密度估计(Kernel Density Estimation, KDE)算法通过样本估计这些样本所属的概率密度函数,是non-parametric方法,也就是在进行估计时无需假设分布的具体形式.本文 ... 
- KingbaseES 复制冲突之锁类型冲突
			背景 昨天遇到客户现场的一个有关复制冲突的问题 备库报错:ERROR: canceling statement due to conflict with recovery,user was holdi ... 
- KingbaseES V8R6 集群运维系列--sys_monitor.sh stop关闭集群分析
			案例说明: 对于KingbaseES V8R6集群关闭整个集群通过执行'sys_monitor.sh stop'命令完成,本案例解析了在执行'sys_monitor.sh stop'后,数据库的关闭方 ... 
- WPF如何封装一个可扩展的Window
			前言 WPF中Window相信大家都很熟悉,有时我们有一些自定义需求默认Window是无法满足的,比如在标题栏上放一些自己东西,这个时候我们就需要写一个自己的Window,实现起来也很简单,只要给Wi ... 
- Scala 传名参数和传值参数
			1 package com.atguigu.chapter04 2 3 object ControlAbstraction { 4 def main(args: Array[String]): Uni ... 
- #期望dp#CF1810G The Maximum Prefix
			洛谷题面 CF1810G 分析 考虑最大前缀和满足两个条件,就是所有前缀和都不超过,以及一定有一个等于. 那么就要保证它能达到最大值且一直不能高于它 设 \(dp[i][j][0/1]\) 表示前 \ ... 
- 「Cnoi2020」Cirno's Easy Round
			目录 前言 A 光图 分析 代码 B 向量 分析 C 高维 分析 D 四角链 分析 代码 E 领域极限 分析 代码 F 明天后的幻想乡 题目 前言 200分果断自闭,F是原题,所以就用原题算了 A,B ... 
- C语言简易万年历带注释
			同学问的课后作业,顺便加了写注释. #include<stdio.h> /* * 注意 每周的第一天是星期天 */ int main() { int day_per_mo[12] = { ... 
- 干货分享|身为顶尖的Hr,这个Excel插件你不能不知道,用上它事业开挂!
			第一季度,老板看了历年不同地区各销售业绩数据表的总结,说想知道新人进来多久才能成为成熟的销售,成长周期有多长? 我们人事被老板这个灵光一现的想法吓到了,大家伙上上下下为这件事情忙了4个日夜. 整整五年 ... 
- HarmonyOS数据管理与应用数据持久化(一)
			一. 数据管理概述 功能介绍 数据管理为开发者提供数据存储.数据管理能力,比如联系人应用数据可以保存到数据库中,提供数据库的安全.可靠等管理机制. ● 数据存储:提供通用数据持久化能力,根据数据特 ... 
