docker资源配额

        docker是基于Linux CGroup来控制进程对资源利用的限制及追踪;那什么是CGroup呢?

        CGroup(Contral Group) 是 Linux 中将进程按组进行系统资源分配和控制的机制;主要作用包括限制资源的使用、优先级控制、审计与统计、挂起及恢复进程;CGroup可以对docker限制的资源包括 CPU、内存、磁盘;

1、docker容器限制CPU;

    使用docker run --help 可以看到对CPU资源做限制的命令如下:

命令 说明
--cpu-period int   限制 CPU 完全公平调度周期
--cpu-quota int 限制 CPU 完全公平调度配额(绝对权重)
--cpu-rt-period int 限制 CPU 实时时间段(以微秒为单位)
--cpu-rt-runtime int 限制 CPU 实时运行时间(以微秒为单位)
--cpu-shares int 指定CPU 份额(相对权重)
--cpus decimal 指定CPU核心数
--cpuset-cpus string 指定允许使用的CPU,值可以为 0-3,0,1
--cpuset-mems string 指定允许使用的内存节点,值可以为0-3, 0,1

1.1.cpu-period

        通俗来说,是指定容器对CPU的使用在多长时间内重新做一次分配,单位为微秒(μs),范围在1ms-1s之间,也就是[1000, 1000000],默认为0.1s(100000μs);

docker run -itd --name=nginx3  --cpu-period 200000  chililopp/nginx:v1 

1.2.cpu-quota

        指定在period周期内,有多少时间来运行这个容器,单位为微秒(μs),最小值为1ms(1000μs),默认值为-1,也就是不做任何控制;

docker run -itd --name=nginx4  --cpu-period 200000  --cpu-quota 10000 chililopp/nginx:v1

1.3.cpu-rt-period

        cpu.rt_period_us是实时进程的周期时间,单位为微秒(μs),默认为1s(1000000μs)

docker run -itd --name=nginx5  --cpu-rt-period 200000  chililopp/nginx:v1 

1.4.cpu-rt-runtime

        cpu.rt_runtime_us是在一个周期时间内,实时进程占用的最大时间,单位为微秒(μs),默认是0;

docker exec -it nginx6 cat /sys/fs/cgroup/cpu/cpu.rt_runtime_us

1.5.cpu-shares

        指定容器所使用的 CPU 份额值,它仅仅只是一个弹性的值,并不能保证获得 1 个 vcpu 或者多少 GHz 的 CPU 资源;实际分配的权重受到 是否有其他同时运行的容器、容器中进程运行情况的影响;cpu-shares的值默认为1024;

docker run -itd --name=nginx7  --cpu-shares 512  chililopp/nginx:v1 

1.6.cpus

        指定可以使用的CPU核心数量,但不能指定哪一个核心,最小为0.01

docker run -itd --name=nginx8  --cpus 1  chililopp/nginx:v1

    

1.7.cpuset-cpus

        可以指定容器在哪些 CPU 核上运行;

docker run -itd --name=nginx10  --cpuset-cpus 0  chililopp/nginx:v1 

1.8.cpuset-mems

        指定允许使用的内存节点,对具有 NUMA 拓扑(具有多 CPU、多内存节点)的服务器尤其有 用,可以对需要高性能计算的容器进行性能最优的配置。

        如果服务器只有一个内存节点,则-- cpuset-mems 的配置基本上不会有明显效果。 ;

docker run -itd --name=nginx11  --cpuset-mems 0  chililopp/nginx:v1

 

2、docker容器限制内存;

使用docker run --help可以看到,对内存资源做限制的命令如下:

命令 说明
-m, --memory bytes 限制容器的内存使用量
--memory-reservation bytes 限制内存的软性
--memory-swap bytes 限制内存+交换分区总大小。
memory-swappiness int 用于设置容器的虚拟内存控制行为
--kernel-memory bytes  限制核心内存

 2.1.memory bytes

        对容器能使用的内存做限制,选项的参数最小为 4 M;

docker run -itd --name=nginx4 -m 6m  chililopp/nginx:v1 

    

2.2.memory-reservation

        memory reservation 是一种软性机制,它不保证任何时刻容器使用的内存不会超过--memory-reservation限定的值,它只是确保容器不会长时间占用超过--memory-reservation限制的内存大小。

 docker run -itd --name=nginx5 -m 6m  --memory-reservation 6m  chililopp/nginx:v1 

2.3.memory-swap

        是内存加交换分区的总大小,memory-swap必须比-m,--memory大

docker run -itd --name=nginx6 -m 6m --memory-swap 7m  chililopp/nginx:v1

2.4.memory-swappiness

        用来设置这个交换分区和内存的使用比例的。范围为【0,100】。0 表示不使用swap。100 表示更倾向于使用swap交换。

docker run -itd --name=nginx7 -m 6m --memory-swappiness 7  chililopp/nginx:v1

 2.5.kernel-memory

        核心内存和用户内存不同的地方在于核心内存不能被交换出。不能交换出去的特性使得容器可以通过消耗太多内存来堵塞一些系统服务

docker run -itd --name=nginx8 -m 6m --memory-swappiness 7 --kernel-memory 4m  chililopp/nginx:v1

 

3、docker限制磁盘IO读写;

命令 说明
--device-read-bps list 限制容器读速度,单位可以是 kb、mb 或者 gb
--device-read-iops list   限制容器每秒读取IO次数
--device-write-bps list         限制容器写速度,单位可以是 kb、mb 或者 gb
--device-write-iops list 限制容器每秒写入IO次数

3.1.实例:限制容器实例对硬盘的最高写入速度:

docker run -it --name=tomcat_3 -v /docker/data_volume:/data_Tomcat --device /dev/nvme0n1p3:/dev/sma --device-write-bps /dev/sma:2mb --device-read-bps /dev/sma:4mb  chililopp/tomcat:v1 /bin/bash 
time dd if=/dev/sma  of=/data_Tomcat/etl_tomcat.zip  bs=2M count=50 oflag=direct,nonblock

相关推荐

  1. Docker资源

    2024-07-22 04:44:04       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 04:44:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 04:44:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 04:44:04       45 阅读
  4. Python语言-面向对象

    2024-07-22 04:44:04       55 阅读

热门阅读

  1. linux搭建redis cluster集群

    2024-07-22 04:44:04       15 阅读
  2. centos/rocky容器中安装xfce、xrdp记录

    2024-07-22 04:44:04       16 阅读
  3. 【Python】 深入理解 Python 的 repr 方法

    2024-07-22 04:44:04       17 阅读
  4. 【2024德国签证】留学面签问题汇总

    2024-07-22 04:44:04       25 阅读
  5. 为了zoom

    2024-07-22 04:44:04       24 阅读
  6. vue中hash和history的区别 ?

    2024-07-22 04:44:04       16 阅读
  7. 使用 KerasNLP 从头开始生成 GPT 文本

    2024-07-22 04:44:04       15 阅读
  8. 2024-7-20 IT领域最新资讯概览

    2024-07-22 04:44:04       14 阅读
  9. 墨烯的C语言技术栈-C语言基础-017

    2024-07-22 04:44:04       17 阅读
  10. 对Spring、SpringMVC、MyBatis框架的介绍与解释

    2024-07-22 04:44:04       9 阅读
  11. Linux下编译boost1.85

    2024-07-22 04:44:04       10 阅读