首页 > 编程知识 正文

openldap docker,docker资源限制

时间:2023-05-03 12:23:07 阅读:155142 作者:3837

文档组资源配置1、 Cgroup相关概念(一)测试centos和stress工具镜像(二)常用容器Cgroup命令1 )限制cpu1)确认容器资源状态2 ) cpu资源权重限制3.cpu周期限制) CPU控制器仪表混合使用限制3 ) bps和iops限制cgroup总结:1.cpu限制2 .内存限制3.blkio限制磁盘权重4 .磁盘读写,io限制

一. Cgroup相关概念

docker通过cgroup控制容器使用的资源配额,包括CPU、内存和磁盘(使用哪个磁盘以及指定磁盘i/o )三个方面,基本上涵盖了一般的资源配额和使用控制

cgroup是Control Groups的缩写,是一种限制、记录和隔离进程组使用的物理资源的机制,如Linux内核提供的CPU、内存和磁盘i/o,以及Lxc、docker等许多项目Cgroup本身是提供对进程进行分组管理的功能和接口的基础结构,I/O和内存的分配控制等具体的资源管理通过该功能来实现。 这些具体的资源管理功能被称为Cgroup子系统,以下几个大子系统实现了:

blkio:设置限制每个块设备的输入和输出控制。 例如:盘、CD、usb等。 cPU:使用调度程序为cgroup任务提供CPU访问。 cpuacct:生成cgroup任务的CPU资源报告。 对于cpuset:多核CPU,此子系统为cgroup任务分配单独的CPU和内存。 devices:允许或拒绝通过cgroup任务访问设备。 freezer:暂停并重新开始cgroup任务。 内存:设置每个cgroup的内存限制并生成内存资源报告。 net_cls:标记每个网络数据包以方便cgroup使用。 ns:―命名空间子系统。 perf_event:添加了对每个组的监视和跟踪功能,以便可以监视属于特定组的所有线程以及在特定CPU上运行的线程。 (一)使用centos和stress工具访问mkdirstresscdstressvimdockerfilefromcentos 33607 runyuminstall-ywgetrunwget-o/etc/镜像yum.repos的测试epel.repo http://mirrors.a liyun.com/repo/epel-7.reporunyum-yinstallstressdockerbuild-t cerbuild-t

cd /sys/fs/cgroup/cpu/dockerls

(二)常用容器cgroup命令1 ) cpu限制1 .查看容器资源状态的文档状态

模拟cpu工件的四项任务docker exec -it 5c86a05589cf /飘逸美女/bash -c 'stress -c 4 '

从容器创建镜像

docker commit -m 'new' -a 'daoke '容器id镜像名称**ps:**默认情况下,每个docker容器的cpu份额为1024。 单个容器的份额是没有意义的,只有同时运行多个容器时,容器的cpu加权效果才会显现出来。 例如,如果两个容器a、b的cpu份额分别为1000和500,则在cpu进行时间分配的期间,容器a有两倍于容器b的机会获得cpu的时间片,但分配的结果取决于它和其他容器的工作状态,实际上例如,如果容器a上的进程一直空闲,则容器b可以获得比容器a更多的cpu时间片。 在极端情况下,例如,主机可以独占整个主机的cpu资源,即使主机只运行一个容器且其cpu份额只有50也是如此

2.cpu资源权重限制格式docker run -itd --name容器名称----CPU-sharesCPU的权重镜像名称docker run-itd-- name CPU 512-- CPU-shares 512 --CPU-shares 1024 centos : stress stress-c 10 docker run-itd-- name CPU 256-- CPU-shares 256 CPU

3.cpu循环限制(基于cpu时间片概念) docker提供两个参数控制容器--cpu周期、- CPU周期、- CPU周期可以被分配到的CPU时钟循环

CPU-period用于指定重新分配容器对CPU使用的时间长度

CPU-quota用于指定在此周期内跑完此容器需要多长时间

cpu-period和cpu-quota单位为微秒,cpu-period的最小值为1000微秒,最大值为1秒,默认值为0.1秒

(100000)
cpu-quota默认值为 -1,表示不做控制,cpu-period和cpu-quota参数一般联合使用

例如:容器进程需要每1秒使用单个CPU的0.2秒时间,可以将cpu-period 设置为100000(即1秒),cpu-quota设置为 20000 (0.2 秒)。

docker run -itd --cpu-period 100000 --cpu-quota 20000 centos:stress#也可以停止容器后修改下面两个文件参数做容器cpu周期做控制cat /sys/fs/cgroup/cpu/docker/容器id/cpu.cfs_quota_uscat /sys/fs/cgroup/cpu/docker/容器id/cpu.cfs_period_us

4.cpu core 控制

对于多核cpu的服务,docker还可以控制容器运行使用哪些cpu内核,及使用–cpuset-cpus参数。这对具有多核cpu的服务尤为有用,可以对需要高性能计算机的容器进行性能最优的配置

docker run -itd --name cpu1 --cpuset-cpus 0-2 centos:stress#表示容器使用cpu0-cpu2(可以使用0,1,2)或者指定使用哪个cpu --cpuset-cpus 1,3 及只用第2个和第4cpu 5.cpu配额控制参数混合使用

对于–cpu-shares来说必须要两个容器使用同一个cpu核心才能体现cpu权重的作用

docker run -itd --name cpu3 --cpuset-cpus 1 --cpu-shares 512 centos:stress stress -c 1docker run -itd --name cpu4 --cpuset-cpus 1 --cpu-shares 1024 centos:stress stress -c 1 2)内存限制

与操作系统类似,容器可使用的内存包括两部分:物理内存和 Swap。

Docker 通过下面两组参数来控制容器内存的使用量。
-m 或–memory:设置内存的使用限额(上限),例如100M、1024M。–memory-swap:设置内存+swap 的使用限额。

#执行如下命令允许该容器最多使用200M的内存和300M 的swapdocker run -itd --name test1 -m 512m centos:stress /飘逸的美女/bash#与CPU的agroups 配置类似,Docker会自动为容器在目录/sys/fs/cgroup/memory/docker/<容器的完整长ID>中创建相应cgroup 配置文件#如果让工作线程分配的内存超过 300M,分配的内存超过限额,stress线程报错,容器退出docker run -it -m 200m --memory-swap=300m progrium/stress --vm 1 --vm-bytes 310m

3)Block IO的限制

默认情况下,所有的容器能平等的读写磁盘,可以通过设置–blkio-weight参数来设置容器的Block IO的优先级。–blkio-weight与 --cpu-shares类似设置的相对权重值,默认值为500

例如设置容器A读写磁盘的带宽是容器B的两倍docker run -itd --name testA --blkio-weight 600 centos:stress /飘逸的美女/bashdocker run -itd --name testB --blkio-weight 300 centos:stress /飘逸的美女/bashcat /sys/fs/cgroup/blkio/docker/容器id/blkio:weight

3)bps和iops的限制

bps是byte per second,每秒读写的数据量。
iops 是io per second,每秒IO的次数。

可通过以下参数控制容器的bps 和iops:
–device-read-bps,限制读某个设备的bps
–device-write-bps,限制写某个设备的bps
–device-read-iops,限制读某个设备的iops
–device-write-iops,限制写某个设备的iops

示例:限制容器写/dev/sda 的速率为5MB/sdocker run -it --device-write-bps /dev/sda:5mb centos:stress#测试dd if=/dev/zero of=test bs=1M count=150 oflag=direct#oflag=direct直接在/dev/sda指定的硬盘测试


cgroup总结: 1.cpu限制 cpu时间片限制 :–cpu-period 100000,–cpu-quota 20000cpu权重限制 :–cpu-shares 1024cpu核心控制(指定使用核心) :–cpuset-cpus 0-1 或者 1,3 2.内存限制 -m 500m–memory-swap 交换内存的限制 3.blkio限制磁盘权重 –blkio-weigth 4.磁盘读写,io限制 –device-read-bps,限制读某个设备的bps (–device-write-bps /dev/sda:5mb)–device-write-bps,限制写某个设备的bps–device-read-iops,限制读某个设备的iops–device-write-iops,限制写某个设备的iops

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。