本文接上篇烧脑神器cpuburn,继续介绍监控告警的资源场景构造。php
如何构造内存使用率过多的场景?html
有两个方法:ubuntu
1. 本身写代码弄个小工具,不断地去allocate_memory。ide
2. 用现成的工具:好比立刻要介绍这款内存测试工具:memtester。工具
简介:A userspace utility for testing the memory subsystem for faults. It's portable and should compile and work on any 32- or 64-bit Unix-like system. (Yes, even weird, proprietary Unices, and even Mac OS X.) For hardware developers, memtester can be told to test memory starting at a particular physical address as of memtester version 4.1.0.oop
翻译:一款在用户空间下,用于测试内存正确性的实用工具,适用于大多数平台。能够在32位或64位的类Unix操做系统编译和运行(固然也包括MacOs)。这款工具主要面向硬件开发人员,从4.1.0版本开始,memtester能够指定起始物理内存地址进行测试。测试
经过这段介绍,能够看出这是一款测试内存正确性的工具,虽然说的是面向于硬件工程师,可是咱们也能够拿过来构造内存占用的场景。spa
项目地址:http://pyropus.ca/software/memtester/操作系统
#.下载源码,当前最新版本4.3.0 wget http:#. 解压缩 tar xzvf memtester-..tar.gz #3. 进入目录 cd memtester-4.3.0 #4. 编译 sudo make #5. 安装 sudo make install
memtester能够再各Linux系统的软件安装包列表里面找到,能够使用对应软件管理命令查找并安装memtester,以下是相关Linux系统的memtester的package信息:.net
Solaris/SunOS (sunfreeware.com)
好比,Ubuntu下安装memtester
sudo apt install -y memtester
Usage: memtester [-p physaddrbase [-d device]] <mem>[B|K|M|G] [loops]
参数解释
-p PHYSADDR: 用于指定起始物理内存地址开始测试(16进制的地址格式),通常是硬件工程师用来测试内存映射的设备IO等场景。指定内存地址会覆盖对应地址的内存数据(这部份内存多是系统或者其余应用在用的),从而致使crash。
-d 默认使用/dev/mem,咱们不用指定
mem: 默认使用M(MB),能够指定B, K, M, or G(分别表明 bytes, kilobytes, megabytes, or gigabytes)
loops:测试次数,默认无限次数执行下去
1)首先查看本机内存
free -g,能够看到有16G
2)分配10g内存用于memtest,循环十次
memtester 10g 10
文中打印了不少测试信息,能够看出来memtester对内存的逻辑操做进行了正确性验证。
3) 查看实际内存使用状况
输入: top ,而后按下m字母键。
10/16≈62.5%,系统总体的内存使用率达到了70%,memtester使用了约64%左右。
0:正常退出
x01:内存分配或者锁定失败
x02:stuck Address测试失败
x04:其余测试失败
在32位系统上运行memtester的话,memtester最多只能申请使用4GB内存。
不要指定memtester测试内存大于系统的可用内存,若是超额申请过多内存,会明显影响其余进程,最终可能会被系统杀掉(OOM killer)(其实这么作根本没法启动memtester)
尽可能在root权限下执行memtester,以便让memtester能申请到指定的内存大小。
博主:测试生财
座右铭:专一测试与自动化,致力提升研发效能;经过测试精进完成原始积累,经过读书理财奔向财务自由。
csdn:https://blog.csdn.net/ccgshigao