关注分享主机优惠活动
国内外VPS云服务器

论码头工人群体的资源限制

1.cpu资源控制cgroups是一个非常强大的linux内核工具。它不仅可以限制按名称空间隔离的资源,还可以设置资源的权重、计算使用量、控制进程的启动和停止等。所以cgroups(控制组)实现了资源的定额和计量。

Cgroups有四个功能。

资源限制:可以对一个任务使用的总资源进行限制和优先级划分:通过分配cpu时间片的数量和磁盘IO带宽的大小,实际上相当于控制了任务的运行优先级。资源统计:可以统计系统的资源使用情况,比如cpu持续时间,内存使用情况等。任务控制:cgroups可以暂停和恢复任务。

1.设置cpu利用率限制。linux使用CFS(完全公平调度器)来调度每个进程的cpu利用率。

我们可以设置每个容器进程的调度周期,以及每个容器在这个周期内可以使用的最大cpu时间。您可以使用--cpu-period设置调度周期。默认值为100ms,设置范围为1ms-1s。--CPU -周期对应的取值范围是1000~1000000。使用--cpu -配额来设置内部容器在每个周期中可以使用的CPU时间。默认没有限制,设置要求不能低于1ms,也就是& ndashCPU -配额的值必须>:=1000。检查周期限制和cpu配额限制。

docker run -itd --name test 5 centos:7/bin/bash #启动a centos: 7镜像容器docker ps -a#查看启动是否成功,查看pid号CD/sys/fs/cgroup/cpu/docker/container PID号#进入容器cat cpu.cfs_quota_us#的受限目录查看每个周期的最大CPU受限时间cat cpu.cfs_period_us#查看调度周期多长// CPU.cfg _ period _ us:周期默认值为100000//cpu.cfg_quota_us:表示cgroups限制所用的时间(微秒),默认值为-1,表示没有限制。如果设置为50000,则表示50000/1000。

进行cpu压力测试,然后修改每个周期的cpu使用时间,检查cpu利用率。

docker run -itd --name test 6 --cpu -配额50000 centos: 7/bin/bash #可以直接创建一个容器并设置每个周期的CPU执行时间或者docker run -itd --name test 7 centos:7/bin/bash CD/sys/fs/cgroup/。Cpu.cfs_quota_us#你也可以先创建一个容器,然后进入文件直接修改Cpu执行的实际文件名。docker exec -it[容器ID]/bin/bash #进入容器vim /cpu.sh#!bin/Bashi = 0 while true olet i++ done #创建一个无限循环脚本,chmod +x /cpu.sh./cpu.sh#执行脚本top#检查脚本在这个容器中占用了多少cpu资源论码头工人群体的资源限制-主机频道

论码头工人群体的资源限制-主机频道

论码头工人群体的资源限制-主机频道

论码头工人群体的资源限制-主机频道

2.设置cpu资源占用率(仅在设置多个容器时有效)。码头工人通行证& ndashCpu-shares指定Cpu份额,默认为1024,值是1024的倍数。

当有多个容器争夺CPU时,我们可以设置每个容器可以使用的CPU时间比例,这就是所谓的共享权重。共享的CPU资源按比例划分。Docker默认每个集装箱的重量为1024。如果不指定它或将其设置为0,将使用默认值。传-cpu-share不是cpu资源的绝对数量,而是一个相对权重值。容器最终可以分配的cpu资源取决于其cpu份额占所有容器CPU份额的比例。换句话说,cpu share可以设置容器使用cpu的优先级。例如,目前,系统中有两个容器。第一个容器的重量是1024,第二个容器的重量是512。在第二个容器启动后,没有进程运行,并且它的512没有用完。但是,第一个容器中有许多进程。此时可以完全占用第二个容器的CPU闲置资源,也就是共享的CPU资源。如果容器2也运行进程,它会把自己的512还回去,按照正常的1024:512的权重划分,为自己的进程提供CPU资源。如果容器2不使用CPU资源,容器1可以占用容器2的CPU资源。如果容器2也需要CPU资源,就按比例划分。那么第一个容器会从原来的使用整个主机的CPU变成使用整个主机的CPU的2/3;这就是CPU共享,也证明了CPU是可压缩的资源。

设置两个容器的比例,然后按test。

docker run -itd --name c1--CPU -shares 512 centos:7 docker run -itd --name c2-CPU -shares 1024 centos:7 #创建两个容器C1和c2。如果只有这两个容器,设置容器的权重,使c1和c2的cpu资源占比例。

分别进入c1和c2容器,进行压力测量。

docker exec -it[container ID]/bin/bash # Enter container yum -y Install epel -release # Install epel source yum -y insyall stress # Install CPU压力测试工具stress -c 4#生成四个进程,每个进程重复计算随机数的平方根论码头工人群体的资源限制-主机频道

查看容器磁盘百分比

DockStats #检查容器的运行状态(动态更新)论码头工人群体的资源限制-主机频道

3.设置容器绑定指定的& ndashcpu uset -CPU限制容器在指定的CPU内核上运行。

运行容器运行在哪个cpu核上?比如主机4核,CPU核标识为0-3。一旦我们启动容器,我们只希望这个容器运行在两个标识为0和3的CPU核心上,这可以通过使用cpuset来指定。docker run -itd --name c3--CPU use -CPU 1,3centos: 7/bin/bash #启动一个容器,让它只使用内核1和内核3的资源docker exec -it[container ID]/bin/bash #进入容器yum -y install epel -release yum -y install stress stress -c 4 #下载压力测试工具并测试4核论码头工人群体的资源限制-主机频道

cpu使用率俯视图

论码头工人群体的资源限制-主机频道

第三,内存资源控制类似于操作系统。容器可以使用的内存包括两部分:物理内存和交换内存。

Docker通过以下两组参数控制容器内存的使用

-m或--内存:设置内存使用限制,例如:100MB、2GB & ndash内存+交换:设置内存+交换的使用限制(这个必须和& ndash内存)正常情况下,& ndashmemory-swap的值包括容器的可用内存和可用交换空间。所以-m 300M --memory-swap=1g的意思是容器可以使用300M的物理内存和700M(1G-300)的swap。

如果& ndash如果memory-swap设置为0或者不设置,容器可以使用的swap的大小是-m的值的两倍,如果--memory-swap的值与-m的值相同,那么如果--memory-swap的值为-1,容器就不能使用swap。这意味着容器程序使用的内存是有限的,但是可用的交换空间是无限的(容器可以使用与主机一样多的交换空间)。docker run -itd --name m1-m20m --memory -swap = 300 mcentos:7/bin/bash #允许容器使用200M的物理内存,交换空间为1000。

四。磁盘IO配额控制块IO是另一种可以限制容器使用的资源。块IO指的是磁盘的读写。docker可以通过设置权重和限制bps和iops来控制容器读写磁盘的带宽。

1.限制块IO默认情况下,所有容器都可以平等地读写磁盘。您可以通过设置--blkio-weight参数来更改容器b锁IO的优先级。& ndashblk io -权重类似于--cpu-share,设置了相对权重值,默认为500。

Docker run -it--name b1--blk io -weight 600/bin/bash Docker run -it--name b2--blk io -weight 300/bin/bash #以上两者中,b1容器读写磁盘的带宽是b2容器的两倍。

2.限制bps和iops。bps是每秒字节数,表示每秒读取和写入的数据量。

是每秒iops,表示每秒的输入和输出(或读写次数)。

容器的bps和iops可以由以下参数控制

& ndashDevice-read-bps,限制某个设备的bps(数据量)& ndash设备-写入-bps,限制写入设备的bps(数据量)& ndash-读取-iops,限制读取设备的iops(次数)& ndashDevice-write-iops,限制写入某个设备的iops(次数),限制写入的bps。

docker run -it--name b1--device -write -bps/dev/sda:1mb contos:7/bin/bash #创建一个容器,将要写入的数据数量限制为1mb/sddif =/dec/zero of = test . outbs = 1m count = 10 flag = direct。

清理docker占用的磁盘空间

Docker系统prune -a#可以用来清理磁盘,删除关闭的容器,无用的数据卷和网络。就是这样。这里介绍了这篇关于docker cgroups资源限制的文章。关于docker资源限制的更多信息,请搜索主机频道zhujipindao之前的文章。或者继续浏览下面的相关文章。希望大家支持主机频道zhujipindao。以后多来com!

未经允许不得转载:主机频道 » 论码头工人群体的资源限制

评论 抢沙发

评论前必须登录!