ltpstress.sh-场景设置

    咱们经常使用用LTP的ltpstress.sh脚本测试Linux的稳定性,如下将探讨一下如何好的进行Linux压力测试。 服务器

一.如何对内核进行压力测试? app

    在进行压力测试以前,咱们先思考一下压力测试要达到那些要求,才能说明Linux的稳定性。既然是压力测试,那么必然是超负荷测试,所以通常咱们会对CPU、内存等使用率要求80%以上;另外一个测试覆盖度。LTP已经为咱们提供了测试用例,所以咱们不用去考虑测试的覆盖度,那么咱们关注的就是如何设置CPU和内存的压力。 测试

二.ltpstress.sh默认测试场景 spa

    一般咱们在进行Linux压力测试时,CPU和内存使用率要求90%以上,那么关键是如何设置ltpstress.sh才能知足这两个要求。若是咱们在不修改ltpstress.sh直接进行压力测试时,CPU使用率通常会是90%左右,内存会是60%左右,但也不是绝对的。不过怎么说,这个可能不能知足咱们的场景要求。咱们首先分析一下ltpstress.sh如何设置cpu和内存压力的。ltpstress.sh是用genload进行压力设置,genload的具体用法能够ltp/testcase/bin/genload --help查看。 操作系统

    假设你的内存大小经过'free -m'看到为memSize=7834M,swapSize=2048,ltpstress.sh默认分配压力内存大小为stress_mem=memSize+1/2swpSize;分配的压力进程数为stress_mem/1024=7834+1024/1024=8(整数),那么ltpstress.sh就会建立8个线程,每一个线程分配1024MB的内存大小给线程,剩下的内存大小用于操做系统运行和测试用例执行,这样就实现了对系统施压。 线程

    上面的测试场景并不能保证所用cpu和内存的利用率达到咱们想要的数值。 进程

    1.好比说,若是一个服务器有48个cpu,但只有8G内存,采用ltpstress.sh默认的测试场景,cpu不必定能达到很好的压力效果; 内存

    2.假设cpu压力值达到90%以上,但内存利用率不必定到80%以上,由于内存利用率还跟系统的swap分区,buffer、cache、系统保留内存、内存调用机制等有联系。 it

    解决上面问题的办法: io

    1. 修改genload运行参数

    2.修改内存访问策略

三.自定义场景

1.首先肯定cpuNum=cpu个数,memSize=内存大小,swpSize=swap分区大小。ltpstress测试用例运行须要2G以上,所以若是swpSize<=4G,那么进行ltpstress.sh压力就会可能形成内存Out of Memory,系统会采用OOM_killer机制杀掉占用内存较大的进程。形成mem利用率大幅下降,此时须要单独指定stress_mem内存大小,stress_mem<memSize + swpSize - 3G。修改方法

     ./ltpstress.sh -m stress_mem

2.genload参数设置,根据需求对cpu进行施压,在

  genload --vm $PROC_NUM --vm-bytes 1073741824 2>&1 1>/dev/null &前面添加

  genload -c cpuNum 2>&1 1>/dev/null &

添加此项的目的就是对全部cpu进行施压

 

3.针对内存使用率低的问题,修改原则:下降内存和swap的交换频率;提升buffer和cache的sync频率。编辑/etc/sysctl.conf,添加

vm.dirty_background_ratio=10

vm.dirty_ratio=10

vm.dirty_expire_centisecs=100

vm.dirty_writeback_centisecs=200

vm.drop_caches=3

vm.cache_pressure=133

vm.swappiness=10 # 表示最大限度的使用内存,而后才是交换分区

4.对于某些操做系统,设定了LowMem,sysctl -a |grep lowmem_reserve_ratio能够看到系统保留的内存大小,这部份内存,在进行ltpstress.sh测试时不必定能用到。假如LowMem=256M,系统内存为2048M,那么系统内存利用率最大在87%(平均值,有可能比这高)

相关文章
相关标签/搜索