博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker 内存占用测试
阅读量:6040 次
发布时间:2019-06-20

本文共 3140 字,大约阅读时间需要 10 分钟。

Docker 内存占用测试

测试目的:合理设置内存、交换分区、内存预留

测试程序:

JDK环境直接复制粘贴即可
cat >OutOfMemeber.java<<EOF
package com.ptmind.datadeck;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
public class OutOfMemeber {
public static void main(String[] args) {
List<Object> list=new ArrayList<>();
DecimalFormat df = new DecimalFormat("######0.00");
while (true) {

byte b[] = new byte[1024*1024*100];                 list.add(b);                 double total = (Runtime.getRuntime().totalMemory()) / (1024.0 * 1024);                 System.out.println("total:"+total+"M");                 double max = (Runtime.getRuntime().maxMemory()) / (1024.0 * 1024);                 System.out.println("max:"+max+"M");                 double free = (Runtime.getRuntime().freeMemory()) / (1024.0 * 1024);                 System.out.println("free:"+df.format(free)+"M");                 double mayuse=(max - total + free);                 System.out.println("mayuse:"+df.format(mayuse)+"M");                 System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");             }         }

}

EOF
javac OutOfMemeber.java -Xlint:unchecked
java -Xmx20g OutOfMemeber #内存设置要大于内存限制才能申请到所有内存,否则jvm会预留内存无法占用全部

测试:

1、
命令如下:
-m 4G:内存限制为4G
--memory-swap=-1 :swap值为-1
--memory-reservation=4G:预留内存为4G

docker run --rm -m 4G --memory-swap=-1 --memory-reservation=4G -it java:testmem sh

内存:
"Memory": 4294967296,
"CpusetMems": "",
"KernelMemory": 0,
"MemoryReservation": 4294967296,
"MemorySwap": -1,
"MemorySwappiness": -1,
运行结果:
total:4037.0M
max:5461.5M
free:35.76M
mayuse:1460.26M

结论:最大占用4G 内存

2、

docker run --rm -m 4G --memory-swap=0 --memory-reservation=4G -it java:testmem sh
内存:
"Memory": 4294967296,
"CpusetMems": "",
"KernelMemory": 0,
"MemoryReservation": 4294967296,
"MemorySwap": 8589934592,
"MemorySwappiness": -1,
结果:
total:8157.5M
max:18204.5M
free:56.26M
mayuse:10103.26M

最大使用8G的时候被杀死(被系统杀死)

3、

docker run --rm -m 4G --memory-swap=4G --memory-reservation=4G -it java:testmem sh
结果:
total:4037.0M
max:18204.5M
free:35.76M
mayuse:14203.26M

最大使用4G内存被杀死

4、

docker run --rm -m 4G --memory-swap=6G --memory-reservation=4G -it java:testmem sh
结果:
total:6147.5M
max:18204.5M
free:46.26M
mayuse:12103.26M
最大使用6G内存被杀死,且容器占用的swap是系统的swap
5、
docker run --rm -m 4G --memory-swap=8G --memory-reservation=4G -it java:testmem sh
结果:
total:8157.5M
max:14563.5M
free:56.26M
mayuse:6462.26M
最大使用8G内存= 内存+swap

Rancher平台

1、

内存限制4G
内存预留4G
Swap 不填

内存:

"Memory": 4294967296,
"CpusetMems": "",
"KernelMemory": 0,
"MemoryReservation": 4294967296,
"MemorySwap": 8589934592,
"MemorySwappiness": -1,
结果:
total:4455.0M
max:14563.5M
free:1650.27M
mayuse:11758.77M

2、

内存限制4G
内存预留4G
Swap 0
内存:
"Memory": 4294967296,
"CpusetMems": "",
"KernelMemory": 0,
"MemoryReservation": 4294967296,
"MemorySwap": 4296015872,
"MemorySwappiness": -1,
结果:
total:4448.5M
max:14563.5M
free:1643.77M
mayuse:11758.77M

3、

内存限制4G
内存预留4G
Swap 4G
内存:
"Memory": 4294967296,
"CpusetMems": "",
"KernelMemory": 0,
"MemoryReservation": 4294967296,
"MemorySwap": 8589934592,
"MemorySwappiness": -1,
结果:
total:4441.5M
max:14563.5M
free:1636.77M
mayuse:11758.77M

转载于:https://blog.51cto.com/2183087/2309024

你可能感兴趣的文章
css3中变形与动画(一)
查看>>
正则与sed,grep,awk三剑客
查看>>
诊断一句SQL不走索引的原因
查看>>
Linux pipe函数
查看>>
(原創) 如何設計一個數位相框? (SOC) (Quartus II) (SOPC Builder) (Nios II) (TRDB-LTM) (DE2-70)...
查看>>
/etc/profile文件内容
查看>>
一页纸IT项目管理:大道至简的实用管理沟通工具
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
浏览器的回流和重绘及其优化方式
查看>>
2.4 salt grains与pillar jinja的模板
查看>>
VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
查看>>
移动互联网,入口生死战
查看>>
JAVA多线程深度解析
查看>>
Kafka High Level Consumer 会丢失消息
查看>>
时间轴
查看>>
java 获取系统当前时间的方法
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
第一周博客作业
查看>>
thinkpython2
查看>>