本文主要是介绍linux系统模拟资源消耗的简单手段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当我们在做系统性能,稳定性,高可用等特殊场景的测试时,往往要对计算机的硬件资源做出比较苛刻的限制,因此需要最简便的办法增加CPU,内存,磁盘,网络等硬件环境的资源压力。下面介绍实现这些操作的最简便手段。
最好的办法是不借助外部第三方工具,有系统本身的命令或功能实现效果,linux上有一个非常简单高效的工具 stress:
从帮助文件可知,这个工具可以执行CPU负载,IO负载,内存负载,磁盘负载。
一 使用方法
-v -q -n -t 这些常规的简单参数,用户可以自己尝试使用,我们主要讲解4个负载压力相关的使用方法。
1 CPU压力
stress 消耗 CPU 资源是通过调用 sqrt 函数计算由 rand 函数产生的随机数的平方根实现。
执行:stress -v -c 6
详细显示,给CPU的6个核心增加压力。
给几个核心加压,可以根据实际硬件情况和加压力度灵活判断。
2 IO压力
消耗 IO 资源 ,每个进程都反复调用 sync 函数将内存上的内容写到硬盘上。
执行:stress -i 4
会生成4个线程,反复执行内存到硬盘的写入操作。
随着IO压力的产生,sy和wa会不断升高。
3 内存压力
内存压力有几个参数:
--vm N 生成N个进程,在malloc()/free()上交替。
--vm-bytes B 每个vm工作进程的malloc B字节(默认值为256MB)
--vm-stride B 每B字节触摸一个字节(默认值4096)不断的给部分内存赋值
--vm-hang N 空闲前睡眠N秒(默认为none,0为inf)
--vm-keep 重新分配内存,而不是释放后重新分配
执行:stress --vm 4 --vm-bytes 500M --vm-keep
创建4个进程,每个进程分配500M内存, --vm-keep使这4个进程持续占用内存,如果用 –vm-hang 则表示每个消耗内存的进程在分配到内存后转入睡眠状态 N 秒,然后释放内存,一直重复执行这个过程。
–vm-keep 和 --vm-hang 在运行时,CPU状态有区别:
–vm-keep,一直在进行默认的 stride 操作,user 非常高(cpu 在用户态忙碌)。
--vm-hang,两种状态不断切换,但整体上看 CPU 的负载并不高。
执行:stress --vm 4 --vm-bytes 500M --vm-hang 2
4 磁盘压力
执行:stress -d 2 --hdd-bytes 10M
创建两个进程,向磁盘反复写入10M数据量的数据,但此处有一个未知,就是多磁盘环境时,写在哪个设备上。
这篇关于linux系统模拟资源消耗的简单手段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!