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. 如何在uniapp中优雅地使用WebView

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 从webview页面传值到uniapp中 官方文档已经很详细了,这里给大家上我的实战代码,首先在webview页面中引入相关依赖: < ...

  2. Saltstack 最大打开文件数问题之奇怪的 8192

    哈喽大家好,我是咸鱼. 今天分享一个在压测过程中遇到的问题,当时排查这个问题费了我们好大的劲,所以我觉得有必要写一篇文章来记录一下. 问题出现 周末在进行压测的时候,测试和开发的同事反映压测有问题,请 ...

  3. KingbaseES V8R6 创建索引create index concurrently被阻塞

    前言 CREATE INDEX CONCURRENTLY(CIC)是DBA们最常用的语句之一,它的好处是不阻塞DML语句. 但在大事务.长事务较多的系统,它可能被阻塞得很久. 本篇就从这个阻塞的案例开 ...

  4. KingbaseES V8R3集群运维案例之---流复制异步同步及全同步模式配置

    案例说明: 通过案例描述KingbaseES V8R3集群异步.同步及全同步强一致性配置,本案例为一主二备的架构. 适用版本: KingbaseES V8R3 集群架构: 集群复制配置参数说明: 1) ...

  5. KingabseES 构造常量数据表的方式 union, values, array

    背景 通用报表系统中,如果过滤条件是多选数据项,需要动态构造虚拟数据表,这里也会成为查询性能的痛点. 构造方式与执行计划 构造1000行数据的虚拟表. SQL UNION 组合多个查询的结果,需要解析 ...

  6. vim-plus install

    1.输入:git clone https://github.com/chxuan/vimplus.git ~/.vimplus 2.输入:cd ~/.vimplus 3.输入:./install.sh ...

  7. MarkDown常用语法Typora

    一级标题:左右分别 # 二级标题:左右分别 ## 三级标题 四级标题 五级标题 六级标题 加粗:左右分别 ** 斜体:左右分别 * 斜体加粗:左右分别 *** 删除:左右分别 ~~ "> ...

  8. OpenHarmony中的HDF单链表及其迭代器

    概念 为了性能考虑,嵌入式系统一般使用C语言进行开发,由于C语言标准库没有封装链表,所以嵌入式系统一般自己设计和实现链表这种数据结构.单链表是链表中的一种,本文描述OpenAtom OpenHarmo ...

  9. C++ 面试必备:常见 C++ 面试题汇总及详细解析

    C++作为一门重要的编程语言,其在面试中常常是热门的考察对象.本文将会介绍一些常见的C++面试题,帮助C++面试者避免很多不必要的困惑和迷惑.每个问题都有相对应的答案,以便各位同学快速查阅. C++和 ...

  10. 踩坑指南:入门OpenTenBase之监控篇

    本次监控将采用Prometheus.Grafana可视化工具以及postgres_exporter对OpenTenBase进行全面监控和优化. 安装监控 Docker安装 1.Docker要求 Cen ...