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