当前位置: 首页 > news >正文

母婴网站开发上海做网站内容检查的公司

母婴网站开发,上海做网站内容检查的公司,外贸相关岗位人才招聘启事,怎样改变wordpress的封面目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过Cgroup#xff08;Control Group 控制组#xff09;实现容器对物理资…目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过CgroupControl Group 控制组实现容器对物理资源使用的限制限制的资源包括CPU、内存、磁盘三个方面。基本覆盖了常见的资源配额和使用量控制。 Cgroup 是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制被LXC及Docker等很多项目用于实现进程的资源控制。 Cgroup 是提供将进程进行分组化管理的功能和接口的基础结构Docker中I/O 或内存的分配控制等具体的资源管理功能都是通过Cgroup功能来实现的。这些具体的资源管理功能称为Cgroup子系统以下是对几大子系统的介绍。 blkio限制块设备的输入输出控制。如磁盘、光盘、USB等。cpu限制CPU资源的访问cpuacct产生Cgroup 任务的CPU资源报告。cpuset限制分配单独的cpu 和内存资源。devices允许或拒绝对设备的访问。freezer暂停和恢复Cgroup 任务。memory设置每个Cgroup 的内存限制以及产生内存资源报告。net_cls用于标记每个网络包。ns命名空间子系统。perf_event增加了对每group 的监测跟踪的能力可以监测属于某个特定的group 的所有线程以及运行在特定CPU 上的线程。 使用下面的Dockerfile 来创建一个基于CentOS的stress工具镜像。 [rootlocalhost ~]# cat centos-7-x86_64.tar.gz | docker import - centos:7[rootlocalhost ~]# mkdir stress [rootlocalhost ~]# cd stress [rootlocalhost stress]# vim Dockerfile FROM centos:7 MAINTAINER crushlinux crushlinux163.com RUN yum -y install wget RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo RUN yum -y install stress [rootlocalhost ~]# cd stress/ [rootlocalhost stress]# docker build -t centos:stress .1、CPU使用率 在CentOS7中可以通过修改对应的Cgroup配置文件cpu.cfs_quota_us的值来实现直接执行echo命令将设定值导入到文件中就会立即生效。 例如将容器face0aee201c的CPU使用设置为20000设置CPU的使用率限定为20%。 [rootlocalhost ~]# docker run -itd centos:stress /bin/bash 7faed0c97b48c0ae236473431589b5c55aa94d3a93b5cdc7f6887f62e3ca9d00 [rootlocalhost ~]# docker ps -a CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES 7faed0c97b48        centos              /bin/bash         30 seconds ago      Up 29 seconds                           cranky_mclaren [rootlocalhost ~]# echo 20000 /sys/fs/cgroup/cpu,cpuacct/docker/7faed0c97b48c0ae236473431589b5c55aa94d3a93b5cdc7f6887f62e3ca9d00/cpu.cfs_quota_us 2、CPU共享比例 当多个容器任务运行时很难计算CPU的使用率为了使容器合理使用CPU资源可以通过--cpu-shares选项设置容器按比例共享CPU资源这种方式还可以实现CPU使用率的动态调整。 命令中的--cpu-shares 选项值不能保证可以获得1 个vcpu 或者多少GHz 的CPU 资源仅仅只是一个弹性的加权值。 例如运行3个新建容器A、B、C。占用CPU资源的比例为1:1:2:4 docker run --name A -itd --cpu-shares 1024 centos:stress /bin/bash docker run --name B -itd --cpu-shares 1024 centos:stress /bin/bash docker run --name C -itd --cpu-shares 2048 centos:stress /bin/bash docker run --name D -itd --cpu-shares 4096 centos:stress /bin/bash 如果又一个容器D需要更多CPU资源则可以将其--cpu-shares的值设置为4096那么ABCD的CPU资源比例变为1:1:2:4。 默认情况下每个docker容器的cpu份额都是1024。单独一个容器的份额是没有意义的。只有在同时运行多个容器时容器的CPU加权的效果才能体现出来。例如两个容器A、B的CPU份额分别为1000和500在CPU进行时间片分配的时候容器A比容器B多一倍的机会获得CPU的时间片。但分配的结果取决于当时主机和其他容器的运行状态实际上也无法保证容器A一定能获得CPU时间片。比如容器A的进程一直是空闲的那么容器B 是可以获取比容器A更多的CPU时间片的。极端情况下比如说主机上只运行了一个容器即使它的CPU份额只有50它也可以独占整个主机的CPU资源。 Cgroups 只在容器分配的资源紧缺时也就是说在需要对容器使用的资源进行限制时才会生效。因此无法单纯根据某个容器的CPU份额来确定有多少CPU 资源分配给它资源分配结果取决于同时运行的其他容器的CPU分配和容器中进程运行情况。 换句话说,可以通过cpu shares可以设置容器使用CPU的优先级比如启动了两个容器及运行查看CPU使用百分比。 [rootlocalhost ~]# docker run -tid --name cpu512 --cpu-shares 512 centos:stress stress -c 10 [rootlocalhost ~]# docker run -tid --name cpu1024 --cpu-shares 1024 centos:stress stress -c 10 [rootlocalhost ~]# docker ps -a CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES f68b6a6c4e3c        centos:stress       stress -c 10      13 seconds ago      Up 12 seconds                           cpu1024 487ec0954a8b        centos:stress       stress -c 10      23 seconds ago      Up 22 seconds                           cpu512 [rootlocalhost ~]# docker exec -it f68b6a6c4e3c /bin/bash   [rootlocalhost ~]# docker exec -it 487ec0954a8b /bin/bash   开启了10 个stress 进程目的是充分让系统资源变得紧张。只有这样竞争资源设定的资源比例才可以显现出来。如果只运行一个进行会自动分配到空闲的CPU这样比例就无法看出来。由于案例的环境不一样可能导致上面两张图中占用CPU 百分比会不同但是从cpu share 来看两个容器总比例一定会是1:2。 3、CPU周期限制 docker 提供了--cpu-period、--cpu-quota 两个参数控制容器可以分配到的CPU 时钟周期。 --cpu-period 是用来指定容器对CPU的使用要在多长时间内做一次重新分配。--cpu-quota 是用来指定在这个周期内最多可以有多少时间用来跑这个容器。与--cpu-shares 不同的是这种配置是指定一个绝对值而且没有弹性在里面容器对CPU 资源的使用绝对不会超过配置的值。 cpu-period 和cpu-quota 的单位为微秒μs。cpu-period 的最小值为1000 微秒 最大值为1 秒10^6 μs默认值为0.1 秒100000 μs。cpu-quota 的值默认为-1 表示不做控制。cpu-period、cpu-quota 这两个参数一般联合使用。 举个例子如果容器进程需要每1 秒使用单个CPU 的0.2 秒时间可以将cpu-period 设置为1000000即1 秒cpu-quota 设置为2000000.2 秒。当然在多核情况下如果允许容器进程需要完全占用两个CPU则可以将cpu-period 设置为100000即0.1 秒cpu-quota 设置为2000000.2 秒。 [rootlocalhost ~]# docker run -it --cpu-period 100000 --cpu-quota 200000 centos:stress /bin/bash [root2474ee0f7e62 /]# cat /sys/fs/cgroup/cpu/cpu.cfs_period_us 1000000 [root2474ee0f7e62 /]# cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us 200000 4、CPU核心限制 多核CPU的服务器Docker还可以控制容器运行限定使用哪些CPU内核可以使用--cpuset-cpus选项来使某些程序独享CPU核心以便提高其处理速度对应的Cgroup文件为/sys/fs/cgroup/cpuset/docker/容器ID号/cpuset.cpus。选项后直接跟参数0、1、2……表示第1个内核第2个内核第3个内核与/proc/cpuinfo中的标号相同。 如果服务器有16个核心那么CPU编号为0~15使新建容器绑定第1~4的核心使用 docker run -itd --cpuset-cpus 0,1,2,3 centos:stress /bin/bash 或者 docker run --itd --cpuset-cpus 0-3 centos:stress /bin/bash 那么该容器内的进程只会在0,1,2,3的CPU上运行。 通过下面指令也可以看到容器中进程与CPU 内核的绑定关系可以认为达到了绑定CPU 内核的目的。 [rootlocalhost ~]# docker exec 2474ee0f7e62 taskset -c -p 1 pid 1s current affinity list: 0-3       //容器内部第一个进程编号一般为1 尽量使用绑定内核的方式分配CPU资源给容器进程使用然后在配合--cpu-shares选项动态调整CPU使用资源的比例。 5、CPU 配额控制参数的混合案例 通过--cpuset-cpus 指定容器A 使用CPU 内核0容器B 只是用CPU 内核1。在主机上只有这两个容器使用对应CPU 内核的情况它们各自占用全部的内核资源--cpu-shares 没有明显效果。 --cpuset-cpus、--cpuset-mems 参数只在多核、多内存节点上的服务器上有效并且必须与实际的物理配置匹配否则也无法达到资源控制的目的。 在系统具有多个CPU 内核的情况下需要通过cpuset-cpus 为容器CPU 内核才能比较方便地进行测试。 用下列命令创建测试用的容器 [rootlocalhost ~]# docker run -itd --name cpu3 --cpuset-cpus 3 --cpu-shares 512 centos:stress stress -c 1 [rootlocalhost ~]# docker exec -it容器ID /bin/bash 输入top 命令查看 [rootlocalhost ~]# docker run -itd --name cpu4 --cpuset-cpus 3 --cpu-shares 1024 centos:stress stress -c 1 [rootlocalhost ~]# docker exec -it容器ID /bin/bash 输入top 命令查看 上面的centos:stress 镜像安装了stress 工具用来测试CPU 和内存的负载。通过在两个容器上分别执行stress -c 1 命令将会给系统一个随机负载产生1 个进程。这个进程都反复不停的计算由rand() 产生随机数的平方根直到资源耗尽。 观察到宿主机上的CPU 试用率第三个内核的使用率接近100%并且一批进程的CPU 使用率明显存在2:1 的使用比例的对比。 6、内存限制 与操作系统类似容器可使用的内存包括两部分物理内存和swap。Docker 通过下面两组参数来控制容器内存的使用量。 -m 或--memory设置内存的使用限额例如100M, 1024M。--memory-swap设置内存swap 的使用限额。 当执行如下命令 其含义是允许该容器最多使用200M 的内存和300M 的swap。 [rootlocalhost ~]# docker run -it -m 200M --memory-swap300M progrium/stress --vm 1 --vm-bytes 280M stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: dbug: [1] using backoff sleep of 3000us stress: dbug: [1] -- hogvm worker 1 [6] forked stress: dbug: [6] allocating 293601280 bytes ... stress: dbug: [6] touching bytes in strides of 4096 bytes ... stress: dbug: [6] freed 293601280 bytes stress: dbug: [6] allocating 293601280 bytes ... stress: dbug: [6] touching bytes in strides of 4096 bytes ... --vm 1启动1 个内存工作线程。--vm-bytes 280M每个线程分配280M 内存。 默认情况下容器可以使用主机上的所有空闲内存。与CPU 的cgroups 配置类似docker 会自动为容器在目录/sys/fs/cgroup/memory/docker/容器的完整长ID中创建相应cgroup 配置文件。 因为280M 在可分配的范围300M内所以工作线程能够正常工作其过程是 分配280M 内存。释放280M 内存。再分配280M 内存。再释放280M 内存。一直循环...... 如果让工作线程分配的内存超过300M分配的内存超过限额stress 线程报错容器退出。 [rootlocalhost ~]# docker run -it -m 200M --memory-swap300M progrium/stress --vm 1 --vm-bytes 380M stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: dbug: [1] using backoff sleep of 3000us stress: dbug: [1] -- hogvm worker 1 [7] forked stress: dbug: [7] allocating 398458880 bytes ... stress: dbug: [7] touching bytes in strides of 4096 bytes ... stress: FAIL: [1] (416) -- worker 7 got signal 9 stress: WARN: [1] (418) now reaping child worker processes stress: FAIL: [1] (422) kill error: No such process stress: FAIL: [1] (452) failed run completed in 1s 7、Block IO 的限制 默认情况下所有容器能平等地读写磁盘可以通过设置--blkio-weight 参数来改变容器block IO 的优先级。 --blkio-weight 与--cpu-shares 类似设置的是相对权重值默认为500。在下面的例子中容器A 读写磁盘的带宽是容器B 的两倍。 [rootlocalhost ~]# docker run -it --name container_A --blkio-weight 600 centos:stress /bin/bash [roota4b63e72a03b /]# cat /sys/fs/cgroup/blkio/blkio.weight 600 [rootlocalhost ~]# docker run -it --name container_B --blkio-weight 300 centos:stress /bin/bash [rootee688a3bba2b /]# cat /sys/fs/cgroup/blkio/blkio.weight 300 8、限制bps 和iops 如果在一台服务器上进行容器的混合部署那么会存在同时几个程序写磁盘数据的情况这时可以通过--device-write-iops选项来限制每秒写io次数来限制制定设备的写速度。相应的还有--device-read-iops选项可以限制读取IO的速度但是这种方法只能限制设备而不能限制分区相应的Cgroup写配置文件为/sys/fs/cgroup/blkio/容器ID/ blkio.throttle.write_iops_device。 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 的速率为5 MB/s。 [rootlocalhost ~]# docker run -it --device-write-bps /dev/sda:5MB centos:stress /bin/bash [root7fc31cd1514b /]# dd if/dev/zero oftest bs1M count100 oflagdirect 1000 records in 1000 records out 104857600 bytes (105 MB) copied, 20.0051 s, 5.2 MB/s 通过dd 测试在容器中写磁盘的速度。因为容器的文件系统是在host /dev/sda 上的在容器中写文件相当于对宿主机/dev/sda 进行写操作。另外oflagdirect 指定用direct IO 方式写文件这样--device-write-bps 才能生效。 结果表明bps 5.2 MB/s 在限速5MB/s 左右。作为对比测试如果不限速结果如下 [rootlocalhost ~]# docker run -it centos:stress /bin/bash [root9128099a8947 /]# dd if/dev/zero oftest bs1M count100 1000 records in 1000 records out 104857600 bytes (105 MB) copied, 0.384372 s, 273 MB/s
http://www.zqtcl.cn/news/31427/

相关文章:

  • 四川移动端网站建设网站开发职位
  • 怎么制作网站页面python生成网页
  • 做网站维护有前途吗WordPress443端口免备案
  • 百度怎样建立网站链接wordpress登陆后段后端
  • 网站开发项目答辩主持词灵犀 科技高端网站建设
  • 响应式网站有什么区别网站漂浮广告效果
  • 东莞做网站制作郑州网站优化服务
  • 网站域名禁止续费xampp怎么做网站
  • 深圳网站建设599元全包一个公司只能备案一个网站吗
  • 怎么写代码做网站如何做自己网站的seo
  • icp许可证对网站的要求wordpress怎么做网页
  • 代做网站 猪八戒网没网站怎么做cpa
  • 银行网站建设18款未成年软件入口
  • 做网站前台步骤招投标网站开发公司
  • 网站模板网厦门唯一官方网站
  • 哪个网站做logo好百度推广一条资源多少钱
  • 长丰县住房和城乡建设局网站网站建设报价明细及方案
  • 佛山高端网站网络推广的方式有哪些
  • 游戏网站开发什么意思wordpress更新的文章编辑器不好用
  • 为什么找不到做网站的软件婴幼儿用品销售网站开发报告
  • 中原区网站建设权重高的博客网站
  • 品牌创意型网站建设银川网站网站建设
  • 合肥建设网站公司炫酷网站欣赏
  • 滕州 网站 建设seo网站营销公司
  • 模板网站开发高端公司网站建设
  • 广州网站运营上海的外企公司有哪些
  • 网站模板 带数据库哈尔滨专业建网站哪家好
  • 网站建设后台管理怎么进入根据网站软件做报告
  • 建设银行官方网站首页长宁集团网站建设
  • 个人网站备案幕布广州网站设计费用