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容器资源配额的更多相关文章

  1. docker容器资源配额控制_转

    转自:docker容器资源配额控制 ■ 文/ 天云软件 容器技术团队 docker通过cgroup来控制容器使用的资源配额,包括CPU.内存.磁盘三大方面,基本覆盖了常见的资源配额和使用量控制. cg ...

  2. docker容器资源配额控制

    转自:http://blog.csdn.net/horsefoot/article/details/51731543 文/ 天云软件 容器技术团队 Docker通过cgroup来控制容器使用的资源配额 ...

  3. Docker 容器资源限制

    Docker 容器资源限制 默认情况下,一个容器并没有资源限制,并且该容器可以使用内核调度的所有资源.Docke提供了在启动容器时设置一些参数来控制该容器使用的内存.CPU和IO. 内存 OOME:在 ...

  4. docker容器资源限制:限制容器对内存/CPU的访问

    目录 一.系统环境 二.前言 三.docker对于CPU和内存的限制 3.1 限制容器对内存的访问 3.2 限制容器对CPU的访问 一.系统环境 服务器版本 docker软件版本 CPU架构 Cent ...

  5. Docker 容器资源隔离 namespace(十)

    目录 一.简介 Linux Namespace的6大类型 二.Mount Namespace 三.IPC Namespace 四.Network Namespace 五.UTS Namespace 六 ...

  6. docker容器安装及使用技巧

    关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...

  7. tasksetCPU亲和力&docke容器资源限制

    [taskset详解] taskset设置cpu亲和力,taskset能够将一个或者多个进程绑定到一个或者多个处理器上运行 参数: 选项: -a, --all-tasks 在给定 pid 的所有任务( ...

  8. Docker容器(四)——常用命令

    (1).基本使用方法 查看所有镜像.docker images [root@youxi1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ...

  9. [转帖]Docker容器CPU、memory资源限制

    Docker容器CPU.memory资源限制 https://www.cnblogs.com/zhuochong/p/9728383.html 处理事项内容等 这一块内容感觉 不清楚.. 背景 在使用 ...

  10. Docker(二十)-Docker容器CPU、memory资源限制

    背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不 ...

随机推荐

  1. KDE算法解析

    核密度估计(Kernel Density Estimation, KDE)算法通过样本估计这些样本所属的概率密度函数,是non-parametric方法,也就是在进行估计时无需假设分布的具体形式.本文 ...

  2. KingbaseES 复制冲突之锁类型冲突

    背景 昨天遇到客户现场的一个有关复制冲突的问题 备库报错:ERROR: canceling statement due to conflict with recovery,user was holdi ...

  3. KingbaseES V8R6 集群运维系列--sys_monitor.sh stop关闭集群分析

    案例说明: 对于KingbaseES V8R6集群关闭整个集群通过执行'sys_monitor.sh stop'命令完成,本案例解析了在执行'sys_monitor.sh stop'后,数据库的关闭方 ...

  4. WPF如何封装一个可扩展的Window

    前言 WPF中Window相信大家都很熟悉,有时我们有一些自定义需求默认Window是无法满足的,比如在标题栏上放一些自己东西,这个时候我们就需要写一个自己的Window,实现起来也很简单,只要给Wi ...

  5. Scala 传名参数和传值参数

    1 package com.atguigu.chapter04 2 3 object ControlAbstraction { 4 def main(args: Array[String]): Uni ...

  6. #期望dp#CF1810G The Maximum Prefix

    洛谷题面 CF1810G 分析 考虑最大前缀和满足两个条件,就是所有前缀和都不超过,以及一定有一个等于. 那么就要保证它能达到最大值且一直不能高于它 设 \(dp[i][j][0/1]\) 表示前 \ ...

  7. 「Cnoi2020」Cirno's Easy Round

    目录 前言 A 光图 分析 代码 B 向量 分析 C 高维 分析 D 四角链 分析 代码 E 领域极限 分析 代码 F 明天后的幻想乡 题目 前言 200分果断自闭,F是原题,所以就用原题算了 A,B ...

  8. C语言简易万年历带注释

    同学问的课后作业,顺便加了写注释. #include<stdio.h> /* * 注意 每周的第一天是星期天 */ int main() { int day_per_mo[12] = { ...

  9. 干货分享|身为顶尖的Hr,这个Excel插件你不能不知道,用上它事业开挂!

    第一季度,老板看了历年不同地区各销售业绩数据表的总结,说想知道新人进来多久才能成为成熟的销售,成长周期有多长? 我们人事被老板这个灵光一现的想法吓到了,大家伙上上下下为这件事情忙了4个日夜. 整整五年 ...

  10. HarmonyOS数据管理与应用数据持久化(一)

      一. 数据管理概述 功能介绍 数据管理为开发者提供数据存储.数据管理能力,比如联系人应用数据可以保存到数据库中,提供数据库的安全.可靠等管理机制. ● 数据存储:提供通用数据持久化能力,根据数据特 ...