上期文章“ChaosBlade混沌测试—模拟CPU负载篇”中,我们介绍了如何使用 ChaosBlade 模拟 CPU 负载的实验。
本期文章我们继续介绍 ChaosBlade 的功能使用方法——如何使用 ChaosBlade 模拟内存压力,以测试系统在高内存负载下的稳定性和性能。想提高性能测试效率的小伙伴,一定要往下看!
1 ChaosBlade模拟内存实验介绍
由于 ChaosBlade 目前计算内存大小是通过 memory.stat 等文件计算,所以和 free 命令计算不一致,同 top 命令一致,验证时需使用 top 命令查看内存使用。
参数说明如下:
参数名 | 说明 | 类型 | 值 |
mem-percent | 内存使用率 | String | 取值是 0 到 100 的整数 |
mode | 内存占用模式 | string | 有 ram 和 cache 两种,例如 --mode ram。ram 采用代码实现,可控制占用速率,优先推荐此模式;cache 是通过挂载tmpfs实现;默认值是 --mode cache |
reserve | 保留内存的大小 | String | 单位是MB,如果 mem-percent 参数存在,则优先使用 mem-percent 参数 |
rate | 内存占用速率 | String | 单位是 MB/S,仅在 --mode ram 时生效 |
timeout | 设定运行时长 | string | 单位是秒,通用参数 |
2 具体实例
使用Chaosblade模拟内存实验前,服务器的总内存大小16G,已使用22%。
实验一: 用ram模式,执行内存占用 60%
执行如下命令:
blade create mem load --mode ram --mem-percent 60
可通过 top指令查看内存情况。
从上图可以看到,内存总量16G,占用9.26G,内存使用率=9.26/16*100%≈60%,实验生效。
接下来销毁实验,相关命令如下:
blade destroy cb285df063476001
实验二: 用ram模式,保留 2G 内存,速度100
执行如下命令:
blade create mem load --mode ram --reserve 2048 --rate 100
返回code200,执行成功
{"code":200,"success":true,"result":"14216f6602f063d6"}
可通过 top指令查看内存情况。
从上图可以看到,内存总量16G,空闲内存2G,实验生效。
接下来销毁实验,相关命令如下:
blade destroy 14216f6602f063d6
返回code200,实验销毁成功:
{"code":200,"success":true,"result":{"target":"mem","action":"load","flags{"mode":"ram","rate":"100","reserve":"2048"},"ActionProcessHang":false}}
3 实现原理
ram 模式采用代码申请内存实现;
cache 模式采用 dd、mount 命令实现,挂载 tmpfs 并且进行文件填充。
4 常见问题
Q:如果执行了内存满载,无法恢复,如何处理?
A:重启机器恢复。针对指定内存占用的场景,如果触发内存占用满载,即使指定了 --timeout 参数,也可能出现通过 blade 工具无法恢复的情况,可通过重启机器解决!!!推荐指定内存百分比!
ChaosBlade 可以模拟系统内存压力,以测试系统在高内存负载下的稳定性和性能。
内存占用模式有2种:ram 模式和 cache 模式。
更多精彩内容,“码”上了解!↓