測試Linux的可靠性
來自DevelopWorks
本文記錄了 Linux 內(nèi)核和其他核心 OS 組件的測試結(jié)果與分析,從庫和設(shè)備驅(qū)動程序到文件系統(tǒng)和網(wǎng)絡(luò),測試范圍無所不含,所有的測試都是在相當不利的條件下進行,并且經(jīng)歷了很長的時間。IBM Linux Technology Center 剛剛結(jié)束了這次長達三個多月的全面測試,并將他們的 LTP (Linux Test Project) 測試結(jié)果與 developerWorks 的讀者共享。
IBM Linux Technology Center (LTC) 成立于 1999 年 8 月,想讓 Linux 成功的共同夢想使其與 Linux 開發(fā)團體直接合作。它的 200 多名員工使之成為開放源代碼開發(fā)者的較大團隊組織之一。他們提供的代碼范圍包括,從補丁到結(jié)構(gòu)化的內(nèi)核改變,從文件系統(tǒng)和國際化工作到 GPL'd 驅(qū)動程序。他們還致力于追蹤 IBM 內(nèi)部進行的 Linux 相關(guān)開發(fā)。
LTC 尤其感興趣的領(lǐng)域是 Linux 可擴展性、適用性、可靠性和系統(tǒng)管理 —— 所有的目的都是為了使 Linux 更適用于企業(yè)。他們?yōu)?Linux 團體所做出了諸多貢獻,包括使 Linux 可以工作于 S/390 主機,將 JFS 日志文件系統(tǒng)移植到 Linux,等等。
LTC 的另一項核心任務(wù)是,以測試商業(yè)項目的方式在實驗室條件下對 Linux 進行專業(yè)的測試。LTC 與 SGI、OSDL、Bull 和 Wipro Technologies 一道促成了 LTP Linux 測試項目(LTP)。下面是經(jīng)過 LTP 套件在 Linux 內(nèi)核上超長時間全面測試得到的結(jié)果。如您所猜,Linux 極好地承受了持續(xù)的壓力的考驗。
測試結(jié)果一瞥
下面的總結(jié)基于運行期間的測試和觀察結(jié)果:
Linux 內(nèi)核和其他核心 OS 組件 —— 包括庫、設(shè)備驅(qū)動程序、文件系統(tǒng)、網(wǎng)絡(luò)、IPC 和內(nèi)存管理 —— 運轉(zhuǎn)穩(wěn)定并完成了所有期望的運行期間,沒有任何嚴重的系統(tǒng)故障。
每次運行的成功率都很高(超過 95%),只有極少數(shù)的期望中的間歇故障,而這些故障是設(shè)計用來使資源過載的測試同時執(zhí)行的結(jié)果。
Linux 系統(tǒng)性能在長時間的運行中沒有下降。
在 SMP 系統(tǒng)上,Linux 內(nèi)核正確地擴展以使用硬件資源(CPU、內(nèi)存、硬盤)。
Linux 系統(tǒng)可以很好地承受 CPU 持續(xù)滿負荷運轉(zhuǎn)(超過 99%)和極重內(nèi)存壓力。
Linux 系統(tǒng)正確地處理了過載的情況。
測試證明了 Linux 內(nèi)核和其他核心組件在 30 天、60 天、90 天內(nèi)是可靠的穩(wěn)定的,可以為用戶提供一個長時間運行的健壯的、企業(yè)級的環(huán)境。
Linux 可靠性度量
目標
對 IBM Linux Technology Center 來說,Linux 可靠性工作的目標是,使用 LTP 測試套件對 Linux 操作系統(tǒng)進行超長時間的測試,重點在于 Linux 用戶環(huán)境相關(guān)的工作負荷(參閱 參考資料 以深入了解 LTP)。而并不是致力于證明缺陷。
測試環(huán)境概述
本文描述的是使用 LTP 測試套件進行的 30 天與 60 天的 Linux 可靠性度量測試的測試結(jié)果和分析。測試以 SuSE Linux Enterprise Server v8 (SLES 8) 作為測試內(nèi)核,以 IBM pSeries 服務(wù)器作為測試硬件。使用的是一個特別設(shè)計的 LTP 壓力測試場景,在使用網(wǎng)絡(luò)與內(nèi)存管理的同時并行地運行大范圍的內(nèi)核組件,并在測試系統(tǒng)上生成高工作負荷壓力。Linux 內(nèi)核、TCP、NFS 和 I/O 測試組件以重工作負荷壓力為目標。
測試
30 天
pSeries 30 天 LTP 壓力執(zhí)行結(jié)果
機器:p650 LPAR
CPU:(2) Power4- 1.2 GHz
內(nèi)核:Linux 2.4.19-ull-ppc64-SMP (SLES 8 SP 1)
LTP 版本:20030514
99.00% 平均 CPU 利用率(用戶:48.65%,系統(tǒng):50.35%)
80.09% 平均內(nèi)存利用率(8GB)
觀測結(jié)果:
在 p650 LPAR 上 SLES 8 PPC64 30 天壓力運轉(zhuǎn)成功完成。
測試工具是 LTPstress。測試用例以并行和串行方式執(zhí)行。
內(nèi)核、TCP、NFS 和 I/O 測試組件都以重工作負荷壓力為目標。
成功率:97.88%。
沒有嚴重的系統(tǒng)故障。
圖 1. 30 天 LTP 壓力執(zhí)行結(jié)果
60 天
60 天 LTP 壓力執(zhí)行結(jié)果:pSeries
機器:B80
CPU:(2) Power3- 375 MHz
內(nèi)核:Linux 2.4.19-ull-ppc64-SMP (SLES 8 SP 1)
LTP 版本:20030514
99.96% 平均 CPU 利用率(用戶:75.02%,系統(tǒng):24.94%)
61.69% 平均內(nèi)存利用率(8GB)
3.86% 平均交換分區(qū)利用率(1GB)
觀測結(jié)果:
在 pSeries B80 上 SLES 8 PPC64 60 天壓力運轉(zhuǎn)成功完成。
測試工具是 LTPstress。測試用例以并行和串行方式執(zhí)行。
內(nèi)核、TCP、NFS 和 I/O 測試組件以重工作負荷壓力為目標。
成功率:95.12%。
沒有嚴重的系統(tǒng)故障。
圖 2. 60 天 LTP 壓力執(zhí)行結(jié)果
測試基礎(chǔ)設(shè)施
硬件與軟件環(huán)境
表 1 列出了硬件環(huán)境。
表 1. 硬件環(huán)境 系統(tǒng) 處理器 內(nèi)存 硬盤??交換分區(qū)??網(wǎng)絡(luò)
pSeries 650 (LPAR) Model 7038-6M2??2 - POWER4+(TM) 1.2GHz??8GB (8196MB)??36GB U320 IBM Ultrastar(有其他硬盤,但沒有使用)??1GB??以太網(wǎng)控制器:AMD PCnet32??
pSeries 630 Model 7026-B80??2 - POWER3(TM)+ 375 MHz??8GB (7906MB)??16GB??1GB??以太網(wǎng)控制器:AMD PCnet32??
pSeries 630 Model 7026-B80 和 pSeries 650 (LPAR) Model 7038-6M2 上的軟件環(huán)境是相同的。表 2 列出了軟件環(huán)境。
表 2. 軟件環(huán)境
組件 版本
Linux??SuSE SLES 8 with Service Pack 1??
內(nèi)核 2.4.19-ul1-ppc64-SMP??
LTP??20030514??
方法學
系統(tǒng)的穩(wěn)定性和可靠性通常以連續(xù)運轉(zhuǎn)時間和系統(tǒng)的可靠運行時間來度量。
最初運行的是一組為期 30 天的基線運轉(zhuǎn),然后增加到 60 天和 90 天的 xSeries 和 pSeries 服務(wù)器上的 Linux 測試運轉(zhuǎn)。初始重點在于內(nèi)核、網(wǎng)絡(luò)和 I/O 測試。
測試工具
Linux Test Project(即 LTP;參考資料 中有鏈接和更多信息)是 SGI、IBM、OSDL、Bull 和 Wipro Technologies 合作的項目,目的是為開放源代碼團體提供測試套件,以測試 Linux 的可靠性、健壯性和穩(wěn)定性。Linux Test Project 是測試 Linux 內(nèi)核和相關(guān)部件的工具的集合。目的是通過使內(nèi)核測試工作自動化來幫助改進 Linux 內(nèi)核。
當前,在 LTP 套件中有超過 2000 個測試用例,涵蓋了內(nèi)核的大多數(shù)接口,比如系統(tǒng)調(diào)用、內(nèi)存、IPC、I/O、文件系統(tǒng)和網(wǎng)絡(luò)。測試套件每月都會更新發(fā)布,可以運行于多種體系結(jié)構(gòu)上。已知的 LTP 測試套件測試過的體系結(jié)構(gòu)有 11 種,包括 i386、ia64、PowerPC、PowerPC 64、S/390、S/390x (64bit)、MIPS、mipsel、cris、AMD Opteron 和嵌入式體系結(jié)構(gòu)。我們的可靠性測試中使用的 LTP 版本是 20030524,這是當時可以獲得的最新版本。
測試策略
在基線運轉(zhuǎn)中有兩個特別的階段:一個 24 小時的“初始測試”,接下來是壓力可靠性運轉(zhuǎn)階段,或者說是“壓力測試”。
通過初始測試是開始測試的必要條件。初始測試包括 LTP 測試套件在硬件和操作系統(tǒng)上 24 小時的成功運轉(zhuǎn),這些硬件和操作系統(tǒng)將用于可靠性運轉(zhuǎn)。LTP 測試套件包附帶的驅(qū)動程序腳本 runalltest.sh 用于驗證內(nèi)核。這個腳本串行地運行一組成包的測試,并報告全部結(jié)果。也可以選擇同時并行地運行幾個實例。默認地,這個腳本執(zhí)行:
文件系統(tǒng)壓力測試。
硬盤 I/O 測試。
內(nèi)存管理壓力測試。
IPC 壓力測試。
調(diào)試器測試。
命令功能的驗證測試。
系統(tǒng)調(diào)用功能的驗證測試。
壓力測試可以驗證產(chǎn)品在系統(tǒng)高使用率時的健壯性。作為 runalltest.sh 的補充,特別設(shè)計了一個名為 ltpstress.sh 的測試場景,在使用網(wǎng)絡(luò)與內(nèi)存管理的同時并行地運行大范圍的內(nèi)核組件,并在測試系統(tǒng)上生成高壓力負荷。ltpstress.sh 也是 LTP 測試套件的一部分。這個腳本并行地運行相似的測試用例,串行地運行不同的測試用例,這樣做是為了避免由于同時訪問同一資源或者互相干擾而引起的間歇性故障。默認地,這個腳本執(zhí)行:
NFS 壓力測試。
內(nèi)存管理壓力測試。
文件系統(tǒng)壓力測試。
數(shù)學 (浮點) 測試。
多線程壓力測試。
硬盤 I/O 測試。
IPC (pipeio, semaphore) 測試。
系統(tǒng)調(diào)用功能的驗證測試。
網(wǎng)絡(luò)壓力測試。
系統(tǒng)監(jiān)控
LTP 測試套件附帶的修改過的 top 工具用作系統(tǒng)監(jiān)控工具。使用 top 可以實時地觀察處理器的行為。改進的 top 工具具有附加的功能,可以將 top 結(jié)果的快照保存到文件中,并給出結(jié)果文件的平均總結(jié),包括 CPU、內(nèi)存和交換空間利用率等信息。
在我們的測試中,每 10 秒鐘截取一次系統(tǒng)利用率(或者 top 輸出文件)的快照,并保存到結(jié)果文件。另外,每天或每周要處理系統(tǒng)利用率的快照和 LTP 測試輸出文件并得到數(shù)據(jù)分數(shù),以確定系統(tǒng)在長時間運轉(zhuǎn)中性能是否下降。此功能由 cron 作業(yè)和腳本控制。
測試之前
所有選定的測試系統(tǒng)的硬件配置盡可能相同。去掉了額外的硬件以減少潛在的硬件故障。在映像安裝過程中選擇最低的安全選項。預(yù)留至少 2 GB 的硬盤空間以保存 top 數(shù)據(jù)文件和 LTP 日志文件。
注意,這是一個測試場景;現(xiàn)實生活中,最好建議用戶保持安全設(shè)置遠高于最低設(shè)置。
測試期間
在測試期間系統(tǒng)不要受到干擾。偶爾訪問一下系統(tǒng)以確認測試仍在進行是可以接受的。確認的手段包括使用 ps 命令、檢查 top 數(shù)據(jù)和檢查 LTP 日志數(shù)據(jù)。
測試之后
當測試結(jié)束后,系統(tǒng)監(jiān)控工具 top 立刻停止。所有的 top 數(shù)據(jù)文件,包括每天或每周的快照和 LTP 日志文件,都被保存并處理,以便為分析提供數(shù)據(jù)。
結(jié)束語
本文論述的結(jié)果基于一個在實驗室環(huán)境下創(chuàng)建并測試的解決方案。這些結(jié)果可能并不是在所有的環(huán)境中都可以得到,而且在這種環(huán)境中實現(xiàn)可能還需要另外的步驟、配置和性能分析。
然而,由于大部分的 Linux 內(nèi)核測試工作歷時都比較短,因此本系列測試為我們提供了長時間運轉(zhuǎn)的第一手數(shù)據(jù)和結(jié)果。本系列測試還提供了高工作負荷壓力下 Linux 內(nèi)核組件以及 TCP、NFS 和其他測試組件的數(shù)據(jù)。測試證明,Linux 系統(tǒng)在長時間內(nèi)是可靠的和穩(wěn)定的,可以提供一個健壯的、企業(yè)級的環(huán)境。
參考資料
在 SourceForge 的 LTP Linux Test Project 主頁 和 LTP 項目主頁 可以找到有用的信息和鏈接。
項目的文檔包括 LTP HowTo 和 LTP man pages(還有其他文檔)。
LTP 網(wǎng)頁還提供了關(guān)于其他 Linux 測試工具 的摘要和鏈接。
訪問 IBM Linux Technology Center 主頁 以閱讀他們最新的新聞和聲明。
IBM Linux Technology Center 項目主頁 列出了工作組當前正在進行的項目。
“Inside IBM's Linux Technology Center”(ITworld.com)和“Inside IBM: Dan Frye and the Linux Technology Center”(Consulting Times) 兩篇文章更深入地介紹了 IBM LTC 的背景。
IBM developerWorks 文章“Behind the scenes at the IBM Linux Technology Center” 也對 IBM Linux Technology Center 進行了描述。
在 IBM developerWorks Linux 專區(qū) 可以找到更多的關(guān)于 Linux 的開發(fā)資料。