Linux壓力測試與LTP體繫結構

來源:互聯網
上載者:User

一、幾個問題

開始正題之前,我們先看幾個問題:什麼是穩定性和可靠性?什麼是壓力測試?為什麼要進行壓力測試?

什麼是穩定性和可靠性?
穩定性反映的是系統不會出現異常情況;可靠性反映的是系統能夠保持正常運行而不受外界影響的能力。
系統的穩定性和可靠性通常以連續運轉時間和系統的可靠已耗用時間來度量。

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

為什麼要進行壓力測試?
通常我們用壓力測試來判斷系統的穩定性和可靠性。

瞭解了上面的問題之後,我們來看看該如何進行壓力測試的設計。

二、壓力測試的設計

在對Linux核心版本穩定性的測試中,需要明確地聲明並證明為什麼該版本是穩定的或者是不穩定的。不同的 Linux 開發人員、 使用者和發行商會使用他們自己的方法來測試核心的穩定性,但是,如果他們對運行了哪些測試、覆蓋的代碼、達到的壓力層級等的基礎資訊都沒有發布,那麼這就會大大降低了結果的價值。

為此要有一個合適的測試方法來規範Linux核心穩定性的測試,以系統資源的利用率統計為基準制定了一個組合的測試方法,這一組合測試方法的四個步驟是:測試選擇、系統資源使用率評價、核心代碼覆蓋分析以及最終的壓力測試評價。

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(Linux Test Project)

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

有兩個開放原始碼工具可以協助進行 Linux 核心的程式碼涵蓋範圍分析:
  - gcov:一個由 LTP 維護的開放原始碼工具。這個工具分析核心代碼的覆蓋率,並報告哪些行、函數和分支被覆蓋以及它們被訪問了多少次。
  - lcov:另一個由 IBM 開發,由 LTP 維護的開放原始碼工具。 這個工具由一組構建於基於文本的 gcov 輸出之上的 Perl 指令碼構成,以實現基於 HTML 的輸出。輸出包括覆蓋率百分比、圖表以及概述頁,可以快速探索覆蓋率資料。可以自LTP首頁找到這兩個工具。
lcov 工具會產生一棵完整的 HTML 樹,其中包含有核心中代碼的每一行以及關於每一行執行了 多少次的資料(如果有的話)。這個工具會量化覆蓋率資料並產生關於核心中每一部分和 檔案覆蓋率的百分比數字。
核心的程式碼涵蓋範圍分析只是在ltpstress.sh的設計和開發過程中用到,目的是保證lptsress.sh的可用性,我們在實際測試的時候就不需要再做核心的程式碼涵蓋範圍分析了。

1 LTP的ltpstress.sh目標
ltpstress.sh的目標,是使用 LTP 測試套件對Linux 作業系統進行超長時間的測試,重點在於Linux 使用者環境相關的工作負載,而並不是致力於證明缺陷。這個應用程式組合了來自 LTP 的測試套件不同方面的多個測試以及記憶體和網路傳輸負載產生器。在執行之前,測試會根據系統中存在多少物理和虛擬記憶體來調整其總的記憶體使用量情況。

2 ltpstress.sh的測試方法
測試方法有兩個的階段:一個是“初始測試”,一個是“壓力測試”。通過初始測試是開始測試的必要條件。初始測試包括 LTP 測試套件在硬體和作業系統上成功運轉,這些硬體和作業系統將用於可靠性運轉。LTP 測試套件包附帶的驅動程式指令碼 runalltest.sh 用於驗證核心。這個指令碼串列地運行一組成包的測試,並報告全部結果。也可以選擇同時並行地運行幾個執行個體。預設地,這個指令碼執行:

- 檔案系統壓力測試。
- 硬碟 I/O 測試。
- 記憶體管理壓力測試。
- IPC 壓力測試。
- SCHED測試。
- 命令功能的驗證測試。
- 系統調用功能的驗證測試。

壓力測試可以驗證產品在系統高使用率時的健壯性。作為 runalltest.sh 的補充,特別設計了一個名為 ltpstress.sh 的測試情境,在使用網路與記憶體管理的同時並行地運行大範圍的核心組件,並在測試系統上產生高壓力負荷。ltpstress.sh 也是 LTP 測試套件的一部分。這個指令碼並行地運行相似的測試案例,串列地運行不同的測試案例,這樣做是為了避免由於同時訪問同一資源或者互相干擾而引起的間歇性故障。預設地,這個指令碼執行:

- NFS 壓力測試。
- 記憶體管理壓力測試。
- 檔案系統壓力測試。
- 數學 (浮點) 測試。
- 多線程壓力測試。
- 硬碟 I/O 測試。
- IPC (pipeio, semaphore) 測試。
- 系統調用功能的驗證測試。
- 網路壓力測試。

3 系統監控
LTP 測試套件附帶的 top 工具是經過修改的,用作系統監控工具。使用 top 可以即時地觀察處理器的行為。改進的 top 工具具有附加的功能,可以將 top 結果的快照儲存到檔案中,並給出結果檔案的平均總結,包括 CPU、記憶體和交換空間利用率等資訊。

在我們的測試中,sar工具每 10 秒鐘截取一次系統利用率的快照,並儲存到結果檔案。

測試之前所有選定的測試系統的硬體設定儘可能相同。去掉額外的硬體以減少潛在的硬體故障。在映像安裝過程中選擇最低的安全選項。預留至少 2 GB 的硬碟空間以儲存 top 資料檔案和 LTP 記錄檔。

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

4 LTP的結構
LTP的目錄結構基本上分為文檔目錄(doc)、測試驅動程式目錄(pan)、測試指令碼目錄(testscripts)、測試案例庫(testcase)、測試命令檔案目錄(runtest)、標頭檔目錄(include)、庫目錄(lib)等。
Doc:該目錄是說明檔案和協助文檔的所在地,這個目錄中對LTP的內容和每個工具都有詳細的說明。
Pan:該目錄存放的是LTP測試套件的測試驅動程式pan。
Testscripts:該目錄中儲存的是可執行檔測試指令碼,不同方面的測試指令碼的集合。
Testcase:該目錄存放了所有LTP測試套件中所使用的測試案例的源碼。
Runtest:該目錄中的每個檔案都是要執行的測試案例的命令集合,每個檔案針對測試的不同方面。
Include:LTP測試套件的標頭檔目錄,定義了LTP自身的資料結構和函數結構。
Lib:LTP測試套件運行時自身需要的庫檔案,定義了LTP自身的各種函數。

5 LTP 的測試方法

LTP測試套件有一個專門的測試驅動程式pan,具體的測試案例的執行都是由pan來調用執行,它可以跟蹤孤兒進程和抓取測試的輸出資訊。它的工作方式是這樣的:
從一個測試命令檔案中讀取要測試的條目的要執行的命令列,然後等待該項測試的結束,並記錄詳細的測試輸出。預設狀態下pan會隨機的選擇一個命令列來運行,可以指定在同一時間要執行測試的次數。
pan會記錄測試產生的詳細的格式複雜的輸出,但它不進行資料的整理和統計,資料整理統計的工作由scanner來完成,scanner是一個測試結果分析工具,它會理解pan的輸出格式,並輸出成一個表格的
形式來總結那些測試passed或failed。

6 LTP的實際運行
實際運行當中,您還需要配置一些必要的服務才可以正確的運行LTP的測試套件,以ltprunall.sh為例,它是不需要配置其他服務就可以啟動並執行,但是對於ltpstress.sh,是需要配置一些相關服務之後才可以正確啟動並執行,需要您配置的服務如下:

配置rsh和rlogin服務,使使用者能以root身份不需密碼驗證直接登入本機。
開啟xinetd服務。
在使用者主目錄下建立一個名為.rhosts的檔案,檔案內容是允許對本機進行rsh和rlogin操作的主機名稱和IP地址。一個相應的例子如下:
# vi .rhosts
test.my.domain
192.168.1.11
localhost.localdomain
127.0.0.1

配置工作最後要做的就是重啟xinetd服務,因為rsh和rlogin是受xinetd服務控制的:
/etc/init.d/ xinetd restart

或service xinetd restart

http://shop104965075.taobao.comhttp://shop104965075.taobao.com

http://linuxeden.com/doc/24305.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.