[轉貼]LTP--linux穩定性測試 linux性能測試 ltp壓力測試 ---IBM 的 linux test project

https://blog.csdn.net/melody157398/article/details/24354415php

 

LTP--linux穩定性測試 linux性能測試 ltp壓力測試 ---IBM 的 linux test projectlinux

 

 

今天考慮如何將這個變態的系統(說它變態,一點都不過,由於是debian和Ubantu 雜交的,設計者都是這麼說的)的功能測試程序化,結果論壇上有人建議考慮 IBM 的 linux test project  下載下來,安裝了十來分鐘,最後運行時報錯,安裝不許確,糟糕的變量名等,奇怪呀,安裝挺順利的結果不能用,這系統,哎,就是特殊呀!ios

無論了,IBM 的 linux test project  也是一個好工具,把參考資料保存在這裏。數組

http://tech110.blog.51cto.com/438717/737865緩存

說明:在寫這篇文章以前,本人也未曾瞭解LTP是幹嗎的,直到參加一次技術沙龍才瞭解到它是用來對linux系統進行穩定性測試的一個開源工具,演講人是世紀佳緣運維部門的技術老總!平時咱們這些作運維朋友們都不多涉及到系統的測試,由於以爲linux本生就很穩定,所以就沒有必要去作測試,可是系統是更新的,一樣linux的內核是也在更新的,那新系統是否就適合咱們的業務,是否就比就係統穩定可靠呢!!我想大部分人憑直覺認爲新系統就比老系統好吧!特別是對那些業務量大,訪問量較高的大型網站來講,穩定的系統是多麼的重要!!!安全

@@@@-本人在網上也找了很久LTP的介紹,大都是雷同的,並且不知道COPY了多少遍,且時間已久,要想找到完整且好的很是的困難,從這點也能夠看出,幾乎不多有人作穩定性測試這方面的工做了!!網絡

本人關於LTP的一些說明大都仍是來自於網上,我想這個應該都是同樣的!數據結構

=============================LTP介紹開始===================================多線程

LTP--Linux Test Project 運維

簡介:

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

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

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

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

壓力測試的設計   

重點: 1測試選擇。

              2評價系統資源利用率。

              3分析內核代碼覆蓋率。

              4評價最終壓力測試

1. 測試選擇--包括達成兩方面目的的測試:

  - 測試應該能夠獲得 CPU(s)、內存、I/O 和網絡等主要內核區域的高水平的資源利用率。

  - 測試應該充分地覆蓋內核代碼,以幫助支持自其結果中生成的穩定性聲明。

2. 評價系統資源利用率

  所選擇的測試的組合必須給系統的資源帶來足夠的壓力Linux 內核的四個主要方面能夠影響系統的 響應和執行時間:

  - CPU:用於在機器的 CPU(s)上處理數據的時間。

  - Memory:用於自真實存儲器中讀寫數據的時間。

  - I/O:用於自磁盤存儲器讀寫數據的時間。

  - Networking:用於自網絡讀寫數據的時間。

    系統資源利用率評價階段一般須要屢次嘗試才能獲得合適的測試組合,並獲得指望水平的利用率。當肯定測試組合時,過分利用老是一個相當重要的問題。例如,若是選擇的組合過於受 I/O 所限,可能會 致使 CPU 的測試結果很差,反之亦然。方法的這一部分主要是大量的試驗和出錯,直到全部資源達到指望水平。

    當選定一個組合後,測試必須長時間運行以準確評價資源的利用率。測試運行的時間長短取決於每一個測試的長度。假如多個測試同時運行,則時間必須足夠長以使得這些測試中最長的那個能夠完成。在這個評價過程當中,sar 工具也應該在運行。在評價運行的結論中,您應該收集並評價全部四種資源的利用率水平。

3. 分析內核代碼覆蓋率

  得到足夠的內核覆蓋率是系統壓力測試的另外一個職責。儘管所選的測試組合充分地利用了四種主要資源,它也有可能只是執行了內核的一小部分。於是,應該對覆蓋率進行分析以確保組合能夠成爲一個系統壓力測試,而不是一個系統負載生成器。

4. 之因此要執行方法中的這最後一步,是爲了對系統壓力測試進行覈實。在一個被認爲是穩定的內核上執行壓力測試 一般,發行版本中的內核能夠知足這一要求,但不老是如此。要長時間地執行壓力測試,同時運行sar 工具,緣由有如下兩點:

  -長時間運行有助於發現組合中的全部問題,不然,在短期的「取樣測試sniff test)」中這些問題可能會被忽略。

  -sar 生成的數據構成之後測試運行中進行比較的基線。

   長時間運行結束後,如今能夠基於收集的全部數據來決定這個測試組合是不是系統壓力測試的合適候選者。

LTP 測試方法

測試方法有兩個階段:

             階段1: 初始測試

             階段2: 壓力測試

初始測試 --- 是開始測試的必要條件。初始測試包括LTP測試套件在硬件和操做系統上成功運轉,這些硬件和操做系統將用於可靠性運轉。LTP測試套件包附帶的驅動程序腳本runalltests.sh用於驗證內核。這個腳本串行地運行一組成包的測試,並報告所有結果。也能夠選擇同時並行地運行幾個實例。在執行runltp腳本的時,能夠指定參數添加須要的測試的項目(在/testscripts內),初始測試的測試腳本是runalltests.sh或runltp(runltp默認執行的內容與runalltests相同),默認地,這個腳本執行:

- 文件系統壓力測試。

- 硬盤 I/O 測試。

- 內存管理壓力測試。

- IPC 壓力測試。

- SCHED 測試。

- 命令功能的驗證測試。

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

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

ltpstress.sh也是LTP測試套件的一部分。這個腳本並行地運行類似的測試用例,串行地運行不一樣的測試用例,這樣作是爲了不因爲同時訪問同一資源或者互相干擾而引發的間歇性故障。測試內容同runltp,不一樣點在於runltp能夠指定測試項進行組合測試,而runalltests.sh則會所有執行。默認地,這個腳本執行:

- NFS 壓力測試。

- 內存管理壓力測試。

- 文件系統壓力測試。

- 數學 (浮點) 測試。

- 多線程壓力測試。

- 硬盤 I/O 測試。

- IPC (pipeio, semaphore) 測試。

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

- 網絡壓力測試。

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

有兩個開放源代碼工具能夠幫助進行 Linux 內核的代碼覆蓋率分析:

  - gcov:一個由 LTP 維護的開放源代碼工具。這個工具分析內核代碼的覆蓋率,並報告哪些行、函數和分支被覆蓋以及它們被訪問了多少次。

  - lcov:另外一個由 IBM 開發,由 LTP 維護的開放源代碼工具。 這個工具由一組構建於基於文本的 gcov 輸出之上的 Perl 腳本構成,以實現基於 HTML 的輸出。輸出包括覆蓋率百分比、圖表以及概述頁,能夠快速瀏覽覆蓋率數據。能夠自LTP主頁找到這兩個工具。

lcov 工具會生成一棵完整的HTML 樹,其中包含有內核中代碼的每一行以及關於每一行執行了 多少次的數據(若是有的話)。這個工具會量化覆蓋率數據並生成關於內核中每一部分和 文件覆蓋率的百分比數字。

內核的代碼覆蓋率分析只是在ltpstress.sh的設計和開發過程當中用到,目的是保證lptsress.sh的可用性,咱們在實際測試的時候就不須要再作內核的代碼覆蓋率分析了。

系統監控

LTP 測試套件附帶的 top 工具是通過修改的,用做系統監控工具。使用 top 能夠實時地觀察處理器的行爲。改進的 top 工具具備附加的功能,能夠將 top 結果的快照保存到文件中,並給出結果文件的平均總結,包括 CPU、內存和交換空間利用率等信息。

在咱們的測試中,sar工具每 10 秒鐘截取一次系統利用率的快照,並保存到結果文件。

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

在測試期間系統不要受到干擾。偶爾訪問一下系統以確認測試仍在進行是能夠接受的。確認的手段包括使用 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

pan工做原理:LTP測試套件有一個專門的測試驅動程序pan,具體的測試用例的執行都是由pan來調用執行,它能夠跟蹤孤兒進程和抓取測試的輸出信息。它的工做方式是這樣的:

從一個測試命令文件中讀取要測試的條目的要執行的命令行,而後等待該項測試的結束,並記錄詳細的測試輸出。默認狀態下pan會隨機的選擇一個命令行來運行,能夠指定在同一時間要執行測試的次數。

pan會記錄測試產生的詳細的格式複雜的輸出,但它不進行數據的整理和統計,數據整理統計的工做由scanner來完成,scanner是一個測試結果分析工具,它會理解pan的輸出格式,並輸出成一個表格的

形式來總結那些測試passed或failed.

LTP測試套件經過執行測試腳本runalltests.sh(或runltp或runltplite.sh)或/testscripts內的測試腳本調用驅動程序pan執行/testcases內的測試項目。

文件列表:

IDcheck.sh :  檢查系統是否缺乏執行LTP測試套件所需的用戶和用戶組,若是缺乏則爲LTP測試套件建立所需的用戶和用戶組。

runltplite.sh :  這個腳本用來測試LTP安裝,也可用來對測試套件的子項目進行測試。

ver_linux :  這個腳本是獲取硬件、軟件、環境信息。

安裝: ltp-full-20110915.bz2

下載地址: http://ltp.sourceforge.net/

1> tar xvjf ltp-XXXXXXXX.bz2

2> cd ltp

3> ./configure

4> make all

5> make install

##不指定安裝路徑的話,將會默認安裝到/opt/ltp目錄

LTP的實際運行

實際運行當中,您還須要配置一些必要的服務才能夠正確的運行LTP的測試套件,以ltprunall.sh爲例,它是不須要配置其餘服務就能夠運行的,可是對於ltpstress.sh,是須要配置一些相關服務以後才能夠正確運行的,須要您配置的服務以下:

配置rsh和rlogin服務,使用戶能以root身份不需密碼驗證直接登陸本機。

測試運行

1. 初始測試

./runltp -p -l /tmp/resultlog.20111207 -d /tmp -o /tmp/ltpscreen.20111207 -t 24h

或者: ./runalltests.sh                   

          -p:人爲指定日誌格式,保證日誌爲可讀格式                      

          -l:記錄測試日誌的文件

          -d:指定臨時存儲目錄,默認爲/tmp

          -o:直接打印測試輸出到/tmp/ltpscreen.20111207

          -t:指定測試的持續時間

          -t 60s = 60 seconds

          -t 45m = 45 minutes

          -t 24h = 24 hours

          -t 2d  = 2 days

2. 壓力測試

在使用testscripts/ltpstress.sh腳本以前須要對系統進行配置

-rsh必須配置完畢並在運行。

-內核支持NFS,而且安裝NFS軟件,經過網絡測試。

-"sar"或"top"工具須要被安裝,執行ltpstress時須要添加"sar"或"top"工具。 # yum install sysstat

./ltpstress.sh -d /tmp/sardata -l /tmp/ltpstress.log -I /tmp/iofile -i 5 -m 128 -t 24 -S

                -d:指定sar或top記錄文件,默認/tmp/ltpstress.data

-l:記錄測試結果到/tmp/ltpstress.log (小寫L)

-I:記錄"iostat"結果到iofile,默認是/tmp/ltpstress.iostat (大寫i)

-i:指定sar或top快照時間間隔,默認爲10秒

-m: 指定最小的內存使用,默認爲: RAM + 1/2 swap

                -n:不對網絡進行壓力測試

                -S :用sar捕捉數據

                -T:利用LTP修改過的top工具捕捉數據

                -t: 指定測試時間   

測試結果分析

默認狀況下,測試結果放在/tmp

ltpstress.log ---- 記錄相關日誌信息,主要是測試是否經過(pass or fail)

ltpstress.data ---- sar工具記錄的日子文件,包括cpu,memory,i/o等

ltpstress.611.output1 ---- 對應stress.part1,測試命令的一些輸出信息  

ltpstress.611.output2 ---- 對應stress.part2,測試命令的一些輸出信息

ltpstress.611.output3 ---- 對應stress.part3,測試命令的一些輸出信息

cpu 平均使用率:#sar -u -f ltpstress.data

memory 平均使用率:#sar -r -f ltpstress.data

分析:

     ltpstress.log 將全部FAIL過濾出來,獲得完整的全部FAIL的testcases。

方法以下:用sort把FAIL的項排序,再用uniq排除重複項輸出到一個文件就能夠了:

     grep FAIL ltpstress.log | sort | uniq >failcase.txt

至此,獲得的failcase.txt爲全部FAIL的testcases名字。要注意分析case失敗的緣由是什麼.

並下結論:是配置的問題,仍是穩定性的問題(有失敗也有成功)。並將結論加註在failcase.txt中,方便查看。

用戶自定義測試:

想要有選擇的自定義測試項目,能夠以下方法操做

建立命令文件,這個命令文件包括兩部分: tag和test case

tag即爲標籤項,起到一個說明的目的,方便咱們知道是幹什麼的.

test case即爲要測試的項目,此部分爲/opt/ltp/testcases/bin/下的命令加上相關的選項

例如:

#Tag       Test case

#------------------------------------

mtest01     mtest01 -p 10

mmstress    mmstress -x 100

fork01      fork01

chdir01     symlink01 -T chdir01

#------------------------------------

假如此文件名定義爲self.sh

則可運行:

./runltp -p -l self.log -f /opt/ltp/self.sh

若是未指定日誌文件存儲路徑將會默認保存到/opt/ltp/results/self.log下

若是-f選項後的文件不指定絕對路徑,將會默認的到目錄/opt/ltp/runtest下去尋找

此例中假如self.sh文件在/opt/ltp/runtest目錄下,只需-f self.sh便可.如不在將會提示在runtest目錄下找不到

文件self.sh  如:

./runltp -p -l self.log -f self.sh

INFO: creating /opt/ltp/results directory

cat: /opt/ltp/runtest/self.sh: 沒有那個文件或目錄

FATAL: unable to create command file

例如要單獨測試runtest目錄裏的項目,以tracing爲例,則可:

./runltp -p -l tracing.log -f tracing

結果以下:

#cat results/tracing.log

Test Start Time: Thu Dec  8 18:26:03 2011

-----------------------------------------

Testcase                       Result     Exit Value

--------                       ------     ----------

ftrace-stress-test             PASS       0    

-----------------------------------------------

Total Tests: 1

Total Failures: 0

Kernel Version: 2.6.18-194.el5

Machine Architecture: i686

Hostname: HA02

一樣能夠對文件進行修改,取消咱們不須要測試的部分,以下:

runtest中stress.part1,stress.part2,stress.part3。

如修改 stress.part1 中有這樣一個測試 mem02,根據閱讀testcases/kernel/mem/mem/mem02.c 源代碼,可將他修改成 mem02 -m 15,意思是測試 15m 內存。一樣的也能夠在 stress.part1,stress.part2,stress.part3 中添加、刪除一些測試,如咱們測試時就把

stress.part3 中關於 swap 交換分區的去掉

#swapoff01 swapoff01

#swapoff02 swapoff02

#swapon01 swapon01

#swapon02 swapon02

有個IBM的LTP測試,不過期間較老爲2004年的,並且說的太簡單,最重要的是它裏面的圖標數據是怎麼來的,本人還不知道是怎麼來的呢,望知道的朋友可以提出您的寶貴意見,本人將很是感謝,或者可以發帖出來與你們分享一下!!!

http://www.ibm.com/developerworks/cn/linux/l-rel/  能夠看看!!!

 

 

此圖挺好,本人就是不知道用什麼工具來實現,期待ING!!!!!!!

能夠參考資料:使用 gnuplot 在網頁中顯示數據

http://www.ibm.com/developerworks/cn/aix/library/au-gnuplot/#4.Installing Gnuplot|outline

下面附上top和sar的使用方法,方便參考!

"top"工具

使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

說明:即時顯示 process 的動態

-d    改變顯示的更新速度,或是在交談式指令列( interactive command)按d

-q    沒有任何延遲的顯示速度,若是使用者是有 superuser 的權限,則 top 將會以最高的優先序執行

-c    切換顯示模式,共有兩種模式,一是隻顯示執行檔的名稱,另外一種是顯示完整的路徑與名稱

-S    累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來

-s    安全模式,將交談式指令取消, 避免潛在的危機。

-i    不顯示任何閒置 (idle) 或無用 (zombie) 的行程

-n    更新的次數,完成後將會退出 top

-b    批次檔模式,搭配 "n" 參數一塊兒使用,能夠用來將 top 的結果輸出到檔案內

 

"sar"工具

sar [options] [-A] [-o file] t [n]

說明:在命令行中,n 和t 兩個參數組合起來定義採樣間隔和次數,t爲採樣間隔,是必須有的參數,n爲採樣次數,是可選的,sar命令的選項不少,下面只列出經常使用選項:

-a    報告文件讀寫使用狀況

-b    報告緩存的使用狀況

-c    報告系統調用的使用狀況

-d    報告磁盤的使用狀況

-h    報告關於buffer使用的統計數據

-m    報告IPC消息隊列和信號量的使用狀況

-q    報告運行隊列和交換隊列的平均長度

-R    報告進程的活動狀況

-r    報告沒有使用的內存頁面和硬盤塊

-u    報告CPU的利用率

-v    報告進程、i節點、文件和鎖表狀態

-w    報告系統交換活動情況

本文出自 「宗軍」 博客,請務必保留此出處http://tech110.blog.51cto.com/438717/737865

另外附:

關於樓主,博文中提到的圖片的生成方法。推薦讀這篇文章:
Data visualization tools for Linux 
http://www.ibm.com/developerworks/linux/library/l-datavistools/

找到了gnuplot的中文事例!
gnuplot 讓您的數據可視化
http://www.ibm.com/developerworks/cn/linux/l-gnuplot/

LTP:

http://ltp.sourceforge.net/documentation/how-to/ltp.php

相關文章
相關標籤/搜索