目录

一、资源控制

1.1 cgroups工具

1.1.1 概述

1.1.2 功能

1.2 设置CPU使用率上限

1.2.1 cpu-period与cpu-quota

1.2.2 查看两个配额数值

1.2.3 进行CPU压力测试

1.2.4 设置50%的比例分配CPU使用时间上限

1.3 设置CPU资源占用比(设置多个容器时才有效)

1.3.1 设置命令格式

1.3.2 分别进入容器,进行压力测试

1.3.3 查看容器运行状态(动态更新)

1.4 设置容器绑定指定的CPU

1.4.1 分配虚拟机4个CPU核数并指定核创建容器

1.4.2 进入容器,进行压力测试

1.4.3 执行top命令再按1查看CPU使用情况

1.5 对内存使用的限制

1.5.1 创建指定物理内存的容器

1.5.2 创建指定物理内存和swap的容器

1.6 对磁盘IO配额控制(blkio)的限制

1.6.1 设置限制项

1.6.2 创建容器,并限制写速度

1.6.3 通过dd来验证写速度

1.7 清理docker占用的磁盘空间


一、资源控制

1.1 cgroups工具

1.1.1 概述

cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace 隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等等,所以cgroups (Control groups)实现了对资源的配额和度量

1.1.2 功能

1.资源限制:可以对任务使用的资源总额进行限制
2.优先级分配:通过分配的cpu时间片数量以及磁盘To带宽大小,实际上相当于控制了任务运行优级
3.资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等
4.任务控制:cgroup可以对任务执行挂起、恢复等操作

1.2 设置CPU使用率上限

1.2.1 cpu-period与cpu-quota

1.Linux 通过 CFS(Completely Fair Scheduler,完全公平调度器)来调度各个进程对 CPU 的使用。CFS 默认的调度周期是 100ms,我们可以设置每个容器进程的调度周期,以及在这个周期内各个容器最多能使用多少 CPU 时间2. --cpu-period 即可设置调度周期,使用 --cpu-quota 即可设置在每个周期内容器能使用的 CPU 时间。两者可以配合使用。CFS周期的有效范围是 1ms~1s,对应的 --cpu-period 的数值范围是 1000~100000(微秒)3.容器的CPU配额必须不小于1ms,即--cpu-quota 的值必须 >= 1000

1.2.2 查看两个配额数值

docker run -itd --name gxd1 centos:7 /bin/bash   #创建一个容器docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS        PORTS     NAMES
a8116f7815a3   centos:7   "/bin/bash"   2 seconds ago   Up 1 second             gxd1cd /sys/fs/cgroup/cpu/docker/a8116f7815a35d43af77b661fe5846e1e550029c0034d3f84f9fdabd49996bc5/cat cpu.cfs_quota_us
-1cat cpu.cfs_period_us
100000
----------------------------------------------
#cpu.cfs_period_us:cpu分配的周期(微秒,所以文件名中用 us 表示),默认为100000。
#cpu.cfs_quota_us:表示该control group限制占用的时间(微秒),默认为-1,表示不限制
-----------------------------------------------

1.2.3 进行CPU压力测试

1.docker exec -it a8116f7815a3  /bin/bash  #进入容器2.写一个死循环脚本
vi cpu.sh
#!/bin/bash
i=0
while true
do
let i++
donechmod +x cpu.sh
./cpu.sh3.另开一个终端用top命令查看cpu占比                   #可以看到这个脚本占了很多的cpu资源

1.2.4 设置50%的比例分配CPU使用时间上限

第一种方法:
1.docker run -itd --name gxd2 --cpu-quota 50000 centos:7 /bin/bash  #可以重新创建一个容器并设置限额
2.docker exec -it 818afc81d6fd  /bin/bash  #进入容器
3.写一个死循环脚本来测试
vi cpu.sh
#!/bin/bash
i=0
while true
do
let i++
donechmod +x cpu.sh
./cpu.sh
4.另开一个终端用top命令查看cpu占比
第二种方法:
1.cd /sys/fs/cgroup/cpu/docker/a8116f7815a35d43af77b661fe5846e1e550029c0034d3f84f9fdabd49996bc5/
2.echo 50000 > cpu.cfs_quota_us
3.docker exec -it a8116f7815a3 /bin/bash
4../cpu.sh
5.另开一个终端用top命令查看cpu占比   

1.3 设置CPU资源占用比(设置多个容器时才有效)

1.3.1 设置命令格式

Docker 通过--cpu-shares 指定 CPU 份额,默认值为1024,值为1024的倍数。
#创建两个容器为 c1 和 c2,若只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比为1/3和2/3。
docker run -itd --name gxd3 --cpu-shares 1024 centos:7 bash
docker run -itd --name gxd4 --cpu-shares 3072 centos:7 bash

1.3.2 分别进入容器,进行压力测试

yum install -y epel-release
yum install stress -y
stress -c 4             #产生四个进程,每个进程都反复不停的计算随机数的平方根

1.3.3 查看容器运行状态(动态更新)

docker stats

1.4 设置容器绑定指定的CPU

1.4.1 分配虚拟机4个CPU核数并指定核创建容器

docker run -itd --name gxd5 --cpuset-cpus 0,2 centos:7 /bin/bash

1.4.2 进入容器,进行压力测试

docker exec -it dd677309dac9 bashyum install -y epel-release
yum install stress -y
stress -c 4

1.4.3 执行top命令再按1查看CPU使用情况

1.5 对内存使用的限制

1.5.1 创建指定物理内存的容器

-m(--memory=)选项用于限制容器可以使用的最大内存
docker run -itd --name gxd6 -m 512m centos:7 /bin/bashdocker stats

1.5.2 创建指定物理内存和swap的容器

docker run -itd --name gxd7 -m 512m --memory-swap 1g centos:7 /bin/bash强调一下,--memory-swap是必须要与--memory一起使用的正常情况下,--memory-swap的值包含容器可用内存和可用swap
所以-m 300m --memory-swap=1g 的含义为:容器可以使用300M 的物理内存,并且可以使用700M (1G - 300M)的swap如果--memory-swap设置为0或者不设置,则容器可以使用的swap大小为-m值的两倍
如果--memory-swap的值和-m值相同,则容器不能使用swap
如果--memory-Swap值为-1,它表示容器程序使用的内存受限,而可以使用的swap空间使用不受限制(宿主机有多少,swap容器就可以使用多少)

1.6 对磁盘IO配额控制(blkio)的限制

1.6.1 设置限制项

--device-read-bps:限制某个设备上的读速度bps(数据量),单位可以是kb、mb(M)或者gb。
例:docker run -itd --name gxd8 --device-read-bps /dev/sda:1M  centos:7 /bin/bash--device-write-bps : 限制某个设备上的写速度bps(数据量),单位可以是kb、mb(M)或者gb。
例:docker run -itd --name gxd9 --device-write-bps /dev/sda:1mb centos:7 /bin/bash--device-read-iops :限制读某个设备的iops(次数)--device-write-iops :限制写入某个设备的iops(次数)

1.6.2 创建容器,并限制写速度

docker run -itd --name gxd8 --device-write-bps /dev/sda:5mb centos:7 /bin/bash

1.6.3 通过dd来验证写速度

docker exec -it cfa60bfee91c bash  #进入容器
dd if=/dev/zero of=test.out bs=1M count=50 oflag=direct
#添加oflag参数以规避掉文件系统cache

1.7 清理docker占用的磁盘空间

docker system prune -a  #可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络

docker(三)——cpu/内存/磁盘资源控制相关推荐

  1. Linux下CGroup进行CPU内存等资源控制

    留存 from: http://www.cnblogs.com/kevingrace/p/5685433.html  and  http://www.cnblogs.com/wang_yb/p/394 ...

  2. Linux下CGroup进行CPU、内存等资源控制

    留存 from: http://www.cnblogs.com/kevingrace/p/5685433.html  and  http://www.cnblogs.com/wang_yb/p/394 ...

  3. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1, #cat /proc/stat/  信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2, #vmstat –s   或者 #vmstat    虚拟内存统 ...

  4. kvm性能优化方案---cpu/内存/磁盘/网络

    kvm性能优化方案 kvm性能优化,主要集中在cpu.内存.磁盘.网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节. cpu 在介 ...

  5. Linux系统监控命令整理汇总-掌握CPU,内存,磁盘IO等找出性能瓶颈

    的性能有问题,总之,每到晚上挖站否的主机就出现了不稳定的情况,系统负载忽高忽低.利用服务器日志分析利器:ngxtop和GoAccess也能查出有一些IP一直在不断地扫描服务器端口还有WP后台. 但是, ...

  6. Linux查看硬件配置-cpu内存磁盘网卡

    Linux查看硬件配置 资产管理命令dmidecode 查看服务器型号 查看主板的序列号 查看系统序列号 查看cpu 查看占用cpu最多的几个进程 查看内存 查看内存信息 查看内存数量和内存大小 查询 ...

  7. linux系统cpu内存等资源查看top命令详解

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断 ...

  8. AIX和LINUX主机 CPU 内存 磁盘使用率监控

    AIX监控 磁盘使用率监控 df -g|grep -v Filesystem|grep -v proc|awk ' gsub(/%/,"",$4) {print $7 " ...

  9. 脚本监控windows的cpu 内存 磁盘 使用率

    监控cpu使用率的vbs脚本, cpu.vbs(注意cpu0代表第一个cpu) On Error Resume Next Set objProc = GetObject("winmgmts: ...

最新文章

  1. 2019.07.16
  2. wxWidgets:wxGLCanvas 演示程序
  3. word vba 点击任意域代码,刷新整个文档的域代码值
  4. ExComboBoxColor 控件
  5. poj1036-dp
  6. Halcon软件安装教程
  7. Android,App 常用图标尺寸规范
  8. 飞机精确定位模型matlab,一种精确定位飞机位置的方法与流程
  9. python将字母全部变为小写_将一个Python列表全部转换为小写或大写
  10. C语言经典算法实例5:验证哥德巴赫猜想
  11. Lua-面试考题附答案解析(一)
  12. Notes Sixth day-渗透攻击-红队-打入内网
  13. Python | 人脸识别系统 — 人脸比对 代码部分
  14. Mac上的“任务管理器”在哪里?
  15. oracle load 用法,Oracle中SQL*LOADER使用方法总结
  16. Android程序员面试必备的知识点,Android程序员
  17. (转)我所经历的大数据平台发展史(四):互联网时代 • 下篇
  18. 计算机网络如何计算有效ip地址个数,如何计算到底有多少个IP地址及IP地址的种类及取值范围...
  19. WiFi路由器SRRC认证需要准备什么资料?
  20. 企业定制crm客户管理系统需要做哪些准备?

热门文章

  1. PostgreSQL分区表(partitioning)应用实例
  2. HIEE300024R4 UAA326A04什么是反馈和前馈控制系统?
  3. ZYNQ | 学习路线
  4. 【幻灯片动画制作软件】Focusky教程 | Focusky各种输出方式的异同
  5. EXSI自定义第三方驱动生成镜像——筑梦之路
  6. Springboot发送Email
  7. symbol DS3578条码扫描器设置回车
  8. 2021-07-29 Ubantu18.04下Cura编译
  9. 一键生成 ’倒计时‘
  10. java家电售后管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署