linux 系統下的壓力測試工具

因爲項目需要,接觸到了兩款壓力測試工具,對其進行總結和學習。

1) LTP

簡介:

    LTP套件是由 Linux Test Project 所開發的一套系統測試套件。它基於系統資源的利用率統計開發了一個測試的組合,爲系統提供足夠的壓力。

    通過壓力測試來判斷系統的穩定性和可靠性。

    壓力測試是一種破壞性的測試,即系統在非正常的、超負荷的條件下的運行情況 。用來評估在超越最大負載的情況下系統將如何運行,是系統在正常的情況下對某種負載強度的承受能力的考驗 。

    使用LTP測試套件對Linux操作系統進行超長時間的測試,重點在於Linux用戶環境相關的工作負荷。而並不是致力於證明缺陷。

下載鏈接

https://github.com/linux-test-project/ltp/releases/tag/20200120

壓力測試

       可以驗證產品在系統高使用率時的健壯性。作爲runalltests.sh的補充,特別設計了一個名爲ltpstress.sh的測試場景,在使用網絡與內存管理的同時並行地運行大範圍的內核組件,並在測試系統上生成高壓力負荷。

       ltpstress.sh也是LTP測試套件的一部分。這個腳本並行地運行相似的測試用例,串行地運行不同的測試用例,這樣做是爲了避免由於同時訪問同一資源或者互相干擾而引起的間歇性故障。

默認地,這個腳本執行:

- NFS 壓力測試。

- 內存管理壓力測試。

- 文件系統壓力測試。

- 數學 (浮點) 測試。

- 多線程壓力測試。

- 硬盤 I/O 測試。

- IPC (pipeio, semaphore) 測試。

- 系統調用功能的驗證測試。

- 網絡壓力測試。

LTP工作組在設計Linux 內核壓力測試腳本 ltpstress.sh 時使用了這一設計方法,爲給系統提供足夠的壓力,LTP工作組對這個組合測試進行了分析,以確定 Linux 內核的哪些部分在測試執行中得到了使用。然後,修改了組合測試,在保持期望的高強度系統壓力的同時提高代碼覆蓋率的百分比。最終得到的壓力測試涵蓋了Linux 內核的足夠多部分,有助於穩定性聲明,並且有系統使用情況和內核代碼覆蓋情況的數據來支持它。

測試當中的注意項

1 測試之前所有選定的測試系統的硬件配置儘可能相同。去掉額外的硬件以減少潛在的硬件故障。在映像安裝過程中選擇最低的安全選項。預留至少 2 GB 的硬盤空間以保存 top 數據文件和 LTP 日誌文件。

比如:不建議插入U盤測試,可能會帶來干擾;(實測在此情況下出現了死機,但是不知道是不是必然聯繫)。

2 在測試期間系統不要受到干擾。偶爾訪問一下系統以確認測試仍在進行是可以接受的。確認的手段包括使用 ps 命令、檢查 top 數據和檢查 LTP 日誌數據。

源安裝包目錄列表

doc: 該目錄是說明文件和幫助文檔的所在地,這個目錄中對LTP的內容和每個工具都有詳細的說明

testscripts: 該目錄中存儲的是可執行的測試腳本,不同方面的測試腳本的集合

testcases: 該目錄存儲了所有LTP測試套件中所使用的測試用例的源碼

runtest: 該目錄中的每個文件都是要執行的測試用例的命令集合,每個文件針對測試的不同方面

(用於鏈接testscripts內的測試腳本和testcases測試項目)

include: LTP測試套件的頭文件目錄,定義了LTP自身的數據結構和函數結構

lib: LTP測試套件運行時自身需要的庫文件,定義了LTP自身的各種函數

bin: 存放LTP測試的一些輔助腳本

results: 測試結果默認存儲目錄

output: 測試日誌默認存儲目錄

share: 腳本使用說明目錄

pan: 該目錄存儲的是LTP測試套件的測試驅動程序pan

操作步驟

1、從上述鏈接中下載ltp的源碼

需要注意的是最新的版本20200120 testscripts目錄下沒有上文提到的ltpstress.sh;可能是版本升級之後的測試方法不同。實測在20180525版本中有腳本ltpstress.sh。

2、解壓、安裝

進入解壓後的腳本目錄,執行./ltpstress.sh,執行壓力測試。(需要添加額外的兩個服務)

也有版本是將此部分服務添加到ltp壓縮包中,通過make install 安裝的。

2)stress 

Stress是一款Posix系統下生成Cpu/Menory/IO/Disk負載的工具。

  1. 測試CPU負荷

    輸入命令:stress -c 4 -t 10

    增加4個cpu進程,處理sqrt()函數函數,以提高系統CPU負荷,測試10s

  2. 內存測試

    輸入命令:stress -i 4 –vm 10 –vm-bytes 1G –vm-hang 100 –timeout 100s

    新增4個io進程,10個內存分配進程,每次分配大小1G,分配後不釋放,測試100S

  3. 磁盤I/O測試

    輸入命令:stress -d 1 –hdd-bytes 3G

    新增1個寫進程,每次寫3G文件塊

  4. 硬盤測試(不刪除)

    輸入命令:stress -i 1 -d 10 –hdd-bytes 3G -hdd-noclean

    新增1個IO進程,10個寫進程,每次寫入3G文件塊,且不清除,會逐步將硬盤耗盡

3)區別

1、ltpstress在做壓力測試的時候,使用默認的腳本ltpstress.sh,CPU和內存會保持100%(滿負荷)的壓力測試;

      可以通過修改指定的內存參數,來降低CPU和內存的使用率,一般情況下也不這麼使用。

      stress可以做滿負荷的CPU測試,如4核,則 -c 4 CPU滿負荷測試。如果要保證CPU佔用率60以上,則可以設置-c 3(默認4核的情況下)。

      因此在做單項CPU壓力測試的時候,可以選擇stress,且容易控制CPU的佔用率。

2、 stress可以做內存、硬盤、CPU的測試(或組合測試);全面系統長時間的壓力測試選擇LTP。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章