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%(平均值,有可能比這高)

相關文章
相關標籤/搜索