Docker cpu memory quota使用说明
1.Docker内存限制
1.0 测试工具
stress
1.1 内存限制选项
-m
,--memory=""
- Memory limit (format:
<number>[<unit>]
). Number is a positive integer. Unit can be one ofb
,k
,m
, org
. Minimum is 4M.
- Memory limit (format:
--memory-swap=""
- Total memory limit (memory + swap, format:
<number>[<unit>]
). Number is a positive integer. Unit can be one ofb
,k
,m
, org
.
- Total memory limit (memory + swap, format:
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使用说明相关推荐
- docker CPU限制参数
docker CPU限制参数 Option Description --cpus=<value> Specify how much of the available CPU resourc ...
- linux:关于Linux系统中 CPU Memory IO Network的性能监测
我们知道:系统优化是一项复杂.繁琐.长期的工作.通常监测的子系统有以下这些: CPU Memory IO Network 下面是常用的监测工具 Linux 系统包括很多子系统(包括刚刚介绍的CPU,M ...
- 老李分享:shell 监控cpu,memory,load average 1
老李分享:shell 监控cpu,memory,load average poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课 ...
- Docker CPU 资源限制——CPU分片功能测试
之前的一篇随笔--Docker CPU 资源限制 中介绍了针对COU的某个或某几个核的控制,今天介绍下CPU分片功能,即CPU占比. 测试步骤 1.下载CPU测试image.agileek/cpuse ...
- 关于nginx性能优化CPU参数worker_cpu_affinity使用说明
Nginx性能优化CPU参数worker_cpu_affinity使用说明 官方说明:http://wiki.nginx.org/NginxHttpMainModule#worker_cpu_affi ...
- 实战入门 faiss 搜索bert 最邻近句子:docker CPU镜像开箱即用,无需额外安装下载...
每天给你送来NLP技术干货! 来自:MyEncyclopedia 在这一期中,我们延续上一期 Bert 中文短句相似度计算 Docker CPU镜像,继续使用 huggingface transfo ...
- docker容器 cpu memory 资源限制
目录 背景 cgroup简介 内存限制 内存限制相关的参数 用户内存限制 Memory reservation OOM killer 核心内存 Swappiness CPU 限制 概述 CPU 限制相 ...
- Linux/Android的cpu/memory/磁盘占用情况
一.查看内存使用率 <1>.free命令 freetotal used free shared buffers cached Mem: 246788 41004 205784 160 64 ...
- 排查docker cpu占用过高问题
查看docker的cpu占用率:docker stats 进入cpu占用高的docker容器:docker exec -it 容器编号 /bin/bash 查看容器中具体进程cpu占用率,执行top, ...
最新文章
- 5分钟教程,手把手带你安装使用抓包神器:Whistle ,内含精选爬虫资料
- 编程名言(有些趣味性)
- se30分析程序运行时间实例
- boost::detail::spinlock_pool相关的测试程序
- mysql中 !40000 DROP DATABASE IF EXISTS `top_server` 这中注释有什么作用?
- Leetcode题库203.移除链表元素(尾指针填充 / 虚头指针定义 c实现)
- 【quickhybrid】JSBridge的实现
- and or not 优先级_快速划分测试用例优先级
- VirtualBox 安装 Ubuntu 14.10 花屏 解决方案
- Golang实践录:命令行cobra库实例
- android 上下文菜单详解
- linux 网络编程connection refused,《UNIX网络编程》第一个例子出现“connect error: Connection refused”错误提示信息?...
- 天语手机android 4.4.4,天语 touch 2 4.4.4 ROM刷机包 FIUI
- 华为服务器开虚拟化,华为服务器虚拟化的随笔
- 大数据「杀熟」:冤枉,也不冤枉
- Linux 远程工具
- python_17(sql)
- 【时空序列预测第十五篇】HPRNN: A HIERARCHICAL SEQUENCE PREDICTION MODEL FOR LONG-TERM WEATHER RADAR ECHO EXTRAPO
- Systemverilog中时间单位以及相关系统函数
- 自媒体运营之【流量的价值】
热门文章
- JVM篇2:[-加载器ClassLoader-]
- Druid 1.1.14 发布,阿里开源连接池
- 华为服务器通过mgmt口挂载光盘装系统及Linux系统rescue模式下修复内核
- 前端:CheckBox事件函数js
- DELL T410服务器U盘安装Centos7
- vue - 使用vue实现自定义多选与单选的答题功能
- 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)
- linux下启动某个进程
- Spring Validation
- Windows7,网络连接错误: 依赖服务或组无法启动