近期在研究系统监控预警,包括但不限于:CPU 使用率预警、内存使用率预警、磁盘使用率预警以及 IO 预警。
在测试过程中,需要模拟系统负载来验证预警规则是否有效。故总结几种模拟负载的方式,以供日后查询。
CPU 使用率
方法很多,最简单直接的有:
cat /dev/zero > /dev/null
cat /dev/urandom | gzip -9 > /dev/null
dd if=/dev/zero of=/dev/null
yes > /dev/null
...
以上方法仅能对单核施加压力,多核心可以使用 for 循环 + 命令结尾 &,或使用多个管道连接来实现:
for i in 'seq 1 $(cat /proc/cpuinfo | grep "physical id" | wc -l)'; do cat /dev/zero > /dev/null & done
cat /dev/urandom | gzip -9 | gzip -d | gzip -9 | gzip -d > /dev/null
磁盘使用率
上节我们使用到了 dd 命令,该命令结合 /dev/zero 也可以被用于输出一定大小的文件,从而模拟磁盘使用率。
例如:
dd if=/dev/zero of=loadfile bs=1M count=1024 # 输出 1024M 的 \0 到 loadfile
磁盘 IO
利用刚刚生成的 loadfile,加上 cp 命令可以一定程度地模拟顺序 IO