1.Docker内存限制

1.0 测试工具

 stress

1.1 内存限制选项

  • -m--memory=""

    • Memory limit (format: <number>[<unit>]). Number is a positive integer. Unit can be one of bkm, or g. Minimum is 4M.
  • --memory-swap=""
    • Total memory limit (memory + swap, format: <number>[<unit>]). Number is a positive integer. Unit can be one of bkm, or g.

1.2 示例

docker run -it --rm -m 100M --memory-swap -1 ubuntu-stress:latest /bin/bash

指定限制内存大小并且设置 memory-swap 值为 -1,表示容器程序使用内存受限,而 swap 空间使用不受限制(宿主 swap 支持使用多少则容器即可使用多少。如果 --memory-swap 设置小于 --memory则设置不生效,使用默认设置)。

docker run -it --rm -m 100M ubuntu-stress:latest /bin/bash

如果不添加--memory-swap选项,则表示容器中程序可以使用100M内存和100Mswap内存,默认情况下,--memory-swap 会被设置成 memory 的 2倍。-m 为物理内存上限,而 --memory-swap 则是 memory + swap 之和,当压测值是 --memory-swap 上限时,则容器中的进程会被直接 OOM kill。

例如运行容器

docker run -it -m 100M --memory-swap 400M ubuntu-stress:latest /bin/bash  压测几秒钟后超出内存限制kill掉进程

root@5ed1fd88a1aa:/# stress --vm 1 --vm-bytes 400M # 压测到 400M 程序会被 kill

stress: info: [24] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd

stress: FAIL: [24] (416) <-- worker 25 got signal 9

stress: WARN: [24] (418) now reaping child worker processes

stress: FAIL: [24] (452) failed run completed in 3s

如果在k8s中对容器限制内存,那么在运行时,pod内的容器超出限制后会自动重启。

2 CPU限制参数

目前 Docker 支持 CPU 资源限制选项

  • -c--cpu-shares=0

    • CPU shares (relative weight)
    • -c 选项将会废弃,推荐使用 --cpu-shares
  • --cpu-period=0
    • Limit the CPU CFS (Completely Fair Scheduler) period
  • --cpu-quota=0
    • Limit the CPU CFS (Completely Fair Scheduler) quota

2.1 -c or --cpu-shares参数的使用

默认所有的容器对于 CPU 的利用占比都是一样的,-c 或者 --cpu-shares 可以设置 CPU 利用率权重,默认为 1024,可以设置权重为 2 或者更高(单个 CPU 为 1024,两个为 2048,以此类推)。如果设置选项为 0,则系统会忽略该选项并且使用默认值 1024。通过以上设置,只会在 CPU 密集(繁忙)型运行进程时体现出来。当一个 container 空闲时,其它容器都是可以占用 CPU 的。cpu-shares 值为一个相对值,实际 CPU 利用率则取决于系统上运行容器的数量。

假如一个 1core 的主机运行 3 个 container,其中一个 cpu-shares 设置为 1024,而其它 cpu-shares 被设置成 512。当 3 个容器中的进程尝试使用 100% CPU 的时候「尝试使用 100% CPU 很重要,此时才可以体现设置值」,则设置 1024 的容器会占用 50% 的 CPU 时间。如果又添加一个 cpu-shares 为 1024 的 container,那么两个设置为 1024 的容器 CPU 利用占比为 33%,而另外两个则为 16.5%。简单的算法就是,所有设置的值相加,每个容器的占比就是 CPU 的利用率,如果只有一个容器,那么此时它无论设置 512 或者 1024,CPU 利用率都将是 100%。当然,如果主机是 3core,运行 3 个容器,两个 cpu-shares 设置为 512,一个设置为 1024,则此时每个 container 都能占用其中一个 CPU 为 100%。

2.2 --cpu-period & --cpu-quota

这两个选项是1.7版本出现的。

--cpu-period是用来指定容器对CPU的使用要在多长时间内做一次重新分配,而--cpu-quota是用来指定在这个周期内,最多可以有多少时间用来跑这个容器。跟--cpu-shares不同的是这种配置是指定一个绝对值,而且没有弹性在里面,容器对CPU资源的使用绝对不会超过配置的值。

比如说A容器配置的--cpu-period=100000 --cpu-quota=50000,那么A容器就可以最多使用50%个CPU资源,如果配置的--cpu-quota=200000,那就可以使用200%个CPU资源。

Docker cpu memory quota使用说明相关推荐

  1. docker CPU限制参数

    docker CPU限制参数 Option Description --cpus=<value> Specify how much of the available CPU resourc ...

  2. linux:关于Linux系统中 CPU Memory IO Network的性能监测

    我们知道:系统优化是一项复杂.繁琐.长期的工作.通常监测的子系统有以下这些: CPU Memory IO Network 下面是常用的监测工具 Linux 系统包括很多子系统(包括刚刚介绍的CPU,M ...

  3. 老李分享:shell 监控cpu,memory,load average 1

    老李分享:shell 监控cpu,memory,load average poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课 ...

  4. Docker CPU 资源限制——CPU分片功能测试

    之前的一篇随笔--Docker CPU 资源限制 中介绍了针对COU的某个或某几个核的控制,今天介绍下CPU分片功能,即CPU占比. 测试步骤 1.下载CPU测试image.agileek/cpuse ...

  5. 关于nginx性能优化CPU参数worker_cpu_affinity使用说明

    Nginx性能优化CPU参数worker_cpu_affinity使用说明 官方说明:http://wiki.nginx.org/NginxHttpMainModule#worker_cpu_affi ...

  6. 实战入门 faiss 搜索bert 最邻近句子:docker CPU镜像开箱即用,无需额外安装下载...

    每天给你送来NLP技术干货! 来自:MyEncyclopedia 在这一期中,我们延续上一期  Bert 中文短句相似度计算 Docker CPU镜像,继续使用 huggingface transfo ...

  7. docker容器 cpu memory 资源限制

    目录 背景 cgroup简介 内存限制 内存限制相关的参数 用户内存限制 Memory reservation OOM killer 核心内存 Swappiness CPU 限制 概述 CPU 限制相 ...

  8. Linux/Android的cpu/memory/磁盘占用情况

    一.查看内存使用率 <1>.free命令 freetotal used free shared buffers cached Mem: 246788 41004 205784 160 64 ...

  9. 排查docker cpu占用过高问题

    查看docker的cpu占用率:docker stats 进入cpu占用高的docker容器:docker exec -it 容器编号 /bin/bash 查看容器中具体进程cpu占用率,执行top, ...

最新文章

  1. 5分钟教程,手把手带你安装使用抓包神器:Whistle ,内含精选爬虫资料
  2. 编程名言(有些趣味性)
  3. se30分析程序运行时间实例
  4. boost::detail::spinlock_pool相关的测试程序
  5. mysql中 !40000 DROP DATABASE IF EXISTS `top_server` 这中注释有什么作用?
  6. Leetcode题库203.移除链表元素(尾指针填充 / 虚头指针定义 c实现)
  7. 【quickhybrid】JSBridge的实现
  8. and or not 优先级_快速划分测试用例优先级
  9. VirtualBox 安装 Ubuntu 14.10 花屏 解决方案
  10. Golang实践录:命令行cobra库实例
  11. android 上下文菜单详解
  12. linux 网络编程connection refused,《UNIX网络编程》第一个例子出现“connect error: Connection refused”错误提示信息?...
  13. 天语手机android 4.4.4,天语 touch 2 4.4.4 ROM刷机包 FIUI
  14. 华为服务器开虚拟化,华为服务器虚拟化的随笔
  15. 大数据「杀熟」:冤枉,也不冤枉
  16. Linux 远程工具
  17. python_17(sql)
  18. 【时空序列预测第十五篇】HPRNN: A HIERARCHICAL SEQUENCE PREDICTION MODEL FOR LONG-TERM WEATHER RADAR ECHO EXTRAPO
  19. Systemverilog中时间单位以及相关系统函数
  20. 自媒体运营之【流量的价值】

热门文章

  1. JVM篇2:[-加载器ClassLoader-]
  2. Druid 1.1.14 发布,阿里开源连接池
  3. 华为服务器通过mgmt口挂载光盘装系统及Linux系统rescue模式下修复内核
  4. 前端:CheckBox事件函数js
  5. DELL T410服务器U盘安装Centos7
  6. vue - 使用vue实现自定义多选与单选的答题功能
  7. 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)
  8. linux下启动某个进程
  9. Spring Validation
  10. Windows7,网络连接错误: 依赖服务或组无法启动