10:48:30 all 100.00 0.00 0.00 0.00 0.00
10:48:31 all 100.00 0.00 0.00 0.00 0.00
02:27:31 kbmemfree kbmemused %memused kbswpfree kbswpused %swpused
02:29:31 200948 53228 20.94 530104 0 0.00
02:31:31 199136 55040 21.65 530104 0 0.00
02:33:31 198824 55352 21.78 530104 0 0.00
02:35:31 199200 54976 21.63 530104 0 0.00
02:27:31 IFACE rxpck/s txpck/s rxbyt/s txbyt/s
02:29:31 eth0 738.79 741.66 76025.55 136941.85
02:31:31 eth0 743.30 744.97 76038.82 136907.77
02:33:31 eth0 744.80 745.02 76135.53 136901.38
02:35:31 eth0 742.35 744.34 75947.45 136864.77
分析內核代碼覆蓋率
獲得足夠的內核覆蓋率是系統壓力測試的另一個職責。盡管所選的測試組合充分地利用了四種主要資源,它也有可能只是執行了內核的一小部分。因而,您應該對覆蓋率進行分析以確保組合可以成為一個系統壓力測試,而不是一個系統負載生成器。當前,有兩個開放源代碼工具可以幫助進行 Linux 內核的代碼覆蓋率分析:
gcov:一個由 Linux Test Project 維護的開放源代碼工具。這個工具分析內核代碼的覆蓋率,并報告哪些行、函數和分支被覆蓋以及它們被訪問了多少次。
lcov:另一個由 IBM 開發,由 Linux Test Project 維護的開放源代碼工具。這個工具由一組構建于基于文本的 gcov 輸出之上的 Perl 腳本構成,以實現基于 HTML 的輸出。輸出包括覆蓋率百分比、圖表以及概述頁,可以快速瀏覽覆蓋率數據。您可以自 Linux Test Project(LTP)主頁找到這兩個工具(參閱 參考資料以獲得鏈接)。
gcov 模塊加載以后,所有運行于系統壓力測試組合中的測試都必須執行。盡管原來的系統壓力測試可以同時執行,也應該同時執行,但是這次運行應該是循環進行的。每個測試都應該運行一次直到結束,一個接一個地運行,不能重復運行任何測試。單個地、循環地運行,是為了減少在同時運行多個系統壓力測試時,內核嘗試去平衡它們的負載而導致的不可預知的和無目的的內核代碼執行。您應該在最后一個測試運行結束后再進行 gcov 分析。由于最終是要格式化數據以進行分析,所以運行 lcov 工具并缷載 gcov 模塊。
lcov 工具會生成一棵完整的 HTML 樹,其中包含有內核中代碼的每一行以及關于每一行執行了多少次的數據(如果有的話)。這個工具會量化覆蓋率數據并生成關于內核中每一部分和文件覆蓋率的百分比數字。下面的例子展示了一個示例性的代碼覆蓋率輸出:
圖 1. gcov 輸出示例
lcov 維護者定義了“足夠的覆蓋”(綠色的),因而這個 lcov 示例僅僅是一種評價。不過,所包括的原始數據讓任何瀏覽者都可以做出他或她自己的判斷。在瀏覽了覆蓋率分析后,測試創建者現在可以修改測試的組合,以改變 和/或 增加所覆蓋的代碼的數量。
評價最終壓力測試
之所以要執行方法中的這最后一步,是為了對系統壓力測試進行核實。在一個被認為是穩定的內核上執行壓力測試;通常,發行版本中的內核可以滿足這一要求,但不總是如此。要長時間地執行壓力測試(推薦至少 24 個小時),同時運行 sar 工具,原因有以下兩點:
長時間運行有助于發現組合中的所有問題,否則,在短時間的“取樣測試(sniff test)”中這些問題可能會被忽略。
sar 生成的數據構成以后測試運行中進行比較的基線。
長時間運行結束后,您現在可以基于收集的所有數據來決定這個測試組合是否是系統壓力測試的合適候選者。
圖 2. 設計過程總結
Linux Test Project 在設計 Linux 內核壓力測試腳本 ltpstress.sh 時使用了這一設計方法。這個應用程序組合了來自 LTP 的測試套件不同方面的多個測試以及內存和網絡傳輸負載生成器。在執行之前,測試會根據系統中存在多少物理和虛擬內存來調整其總的內存使用情況。這個測試腳本可以自 LTP 測試套件獲得(見 參考資料)。為了確保結果的準確性,這個腳本創建于受控的實驗室條件下。
IBM Linux Technology Center Test 部門使用這個壓力測試以及其他工具和測試作為幫助確認 Linux 內核發行版本穩定性的一個相對快速和簡便的途徑。為幫助確保得到足夠的覆蓋率,測試既在實驗室條件下也在模擬的用戶情形下進行。
原文轉自:http://www.uml.org.cn/Test/200707091.asp