亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種針對Linux操作系統(tǒng)內(nèi)存管理子系統(tǒng)進(jìn)行性能測試的方法

文檔序號:6369690閱讀:199來源:國知局
專利名稱:一種針對Linux操作系統(tǒng)內(nèi)存管理子系統(tǒng)進(jìn)行性能測試的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機(jī)應(yīng)用技術(shù)領(lǐng)域,尤其涉及Linux操作系統(tǒng)開發(fā)及內(nèi)核性能測試等方面的內(nèi)容。
背景技術(shù)
性能測試是軟件研發(fā)過程中必不可少的重要環(huán)節(jié),它能夠幫助軟件廠商識別在軟件研發(fā)過程中潛在的性能退化問題和產(chǎn)品可能存在的性能缺陷。Linux操作系統(tǒng)作為ー個龐大復(fù)雜的軟件系統(tǒng),不斷對其進(jìn)行性能測試是Linux操作系統(tǒng)廠商在產(chǎn)品發(fā)布前必須進(jìn)行的關(guān)鍵步驟。目前,業(yè)界對Linux操作系統(tǒng)開展性能測試是針對Linux內(nèi)核的五大子系統(tǒng)(進(jìn)程調(diào)度子系統(tǒng)、內(nèi)存管理子系統(tǒng)、虛擬文件子系統(tǒng)、進(jìn)程通信子系統(tǒng)和網(wǎng)絡(luò)接ロ子系統(tǒng))分別展開的。內(nèi)存管理子系統(tǒng)是Linux操作系統(tǒng)的基石,其性能在一定程度上決定了整個Linux操作系統(tǒng)的性能表現(xiàn)。目前,Linux操作系統(tǒng)采用的內(nèi)存管理模型都是基于調(diào)頁和進(jìn)程交換的分頁式虛擬內(nèi)存管理方案。開源社區(qū)中可用來對Linux內(nèi)存管理子系統(tǒng)的性能進(jìn)行評測的測試工具主要有Lmbench、Stream、Aim9、Bandwidth和Ramspeed等,姆個工具都有針對性的評價了內(nèi)存的一方面或者多方面的性能。但現(xiàn)有的這些工具卻存在以下不足一、測試場景單一,這些工具都是集多項測試功能于一身,如涵蓋了文件系統(tǒng)、網(wǎng)絡(luò)、I/o等多個子系統(tǒng)的性能測試,很難準(zhǔn)確地測試內(nèi)存管理子系統(tǒng)的性能;ニ、測試指標(biāo)缺乏針對性,這些工具大多側(cè)重于衡量以下測試指標(biāo)如讀寫內(nèi)存的速度、帶寬,未能反映出虛擬內(nèi)存及按需調(diào)頁機(jī)制的性能;三、測試結(jié)果信息量少,很難對Linux內(nèi)核調(diào)優(yōu)提供幫助。綜上所述,當(dāng)前需要一種針對Linux內(nèi)存管理子系統(tǒng)的性能測試方法來解決上述問題。

發(fā)明內(nèi)容
本發(fā)明提供了一種針對Linux操作系統(tǒng)內(nèi)存管理子系統(tǒng)進(jìn)行性能測試的方法,有效解決了當(dāng)前針對Linux內(nèi)存管理子系統(tǒng)基準(zhǔn)測試工具中存在的測試場景單一、測試指標(biāo)缺乏針對性及測試結(jié)果信息量少的問題。為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是一種針對Linux操作系統(tǒng)內(nèi)存管理子系統(tǒng)進(jìn)行性能測試的方法,包括以下步驟步驟一、設(shè)置微觀基準(zhǔn)測試項;步驟ニ、針對該微觀基準(zhǔn)測試項,設(shè)計相應(yīng)的測試場景、性能測試指標(biāo)和測試結(jié)果;步驟三、編寫性能測試模塊,用于動態(tài)獲取并計算該微觀基準(zhǔn)測試項中定義的各項性能測試指標(biāo);步驟四、編寫測試腳本模塊,用于為Linux操作系統(tǒng)內(nèi)存提供一定的工作負(fù)載并加載內(nèi)核模塊,實現(xiàn)該基準(zhǔn)測試項中定義的測試場景;步驟五、運(yùn)行測試腳本模塊和性能測試模塊,得到測試結(jié)果。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點是 一、本發(fā)明分別針對內(nèi)存管理子系統(tǒng)所特有的頁面分配例程、缺頁處理例程及頁面置換算法機(jī)制,分別設(shè)計4類測試場景,總共12個測試場景,有效地提高了測試場景的豐富性。ニ、本發(fā)明分別針對頁面分配例程、缺頁處理例程及頁面置換算法,根據(jù)機(jī)制的特征設(shè)計對應(yīng)的測試指標(biāo),而不是盲目的將測試指標(biāo)統(tǒng)ー指定為帶寬和延時,有效地改善了測試指標(biāo)缺乏針對性的問題。三、本發(fā)明分別針對頁面分配例程、缺頁處理例程及頁面置換算法,設(shè)計測試結(jié)果,測試結(jié)果包含多個部分,以幫助測試人員更好地對內(nèi)存管理子系統(tǒng)的性能進(jìn)行分析,有效地提高了測試結(jié)果的豐富性。


圖I為本發(fā)明的針對Linux內(nèi)存管理的性能測試方法中基準(zhǔn)測試的實施流程圖。圖2為缺頁處理例程性能測試模塊測試指標(biāo)計算方法圖。圖3為頁面置換算法性能測試模塊測試場景實施流程圖。
具體實施例方式為使本發(fā)明的特征得到更加清楚的了解,以下結(jié)合附圖,做詳細(xì)說明如下本發(fā)明參考性能測試方法學(xué)中的基準(zhǔn)測試方法,提出一種針對Linux內(nèi)存管理子系統(tǒng)的性能測試方法,該方法能夠幫助Linux研發(fā)和測試人員直觀評價Linux內(nèi)存管理子系統(tǒng)的性能。參考圖1,本發(fā)明包含以下幾個步驟I)設(shè)置微觀基準(zhǔn)測試項通過調(diào)研Linux內(nèi)存管理模型發(fā)展現(xiàn)狀并結(jié)合Linux操作系統(tǒng)廠商內(nèi)核性能測試需求,從Linux內(nèi)存管理特有的機(jī)制出發(fā)定義了不同的微觀基準(zhǔn)測試項;2)針對該微觀基準(zhǔn)測試項,設(shè)計不同的測試場景、性能測試指標(biāo)和測試結(jié)果;3)編寫性能測試模塊,用于動態(tài)獲取并計算該微觀基準(zhǔn)測試項中定義的各項性能測試指標(biāo)具體的,可以用C語言編寫能動態(tài)獲取并計算相關(guān)性能測試指標(biāo)的程序,并將該程序編譯成性能測試模塊;4)編寫測試腳本模塊,用于為Linux操作系統(tǒng)內(nèi)存提供一定的工作負(fù)載并加載內(nèi)核模塊,實現(xiàn)該微觀基準(zhǔn)測試項中定義的測試場景具體的,可以用Perl語言和shell腳本編寫測試腳本模塊去實現(xiàn)測試場景;5)運(yùn)行測試腳本模塊和性能測試模塊,得到測試結(jié)果即在測試腳本模塊執(zhí)行過程中加載性能測試模塊來動態(tài)獲取和計算性能測試指標(biāo),并輸出各項性能測試指標(biāo),可以同時輸出大量圖表信息,以幫助測試人員和研發(fā)人員對內(nèi)存管理的性能進(jìn)行分析。
本發(fā)明方法設(shè)置的微觀基準(zhǔn)測試項包括三個方面,分別是頁面分配例程、缺頁處理例程及頁面置換算法。一、頁面分配例程物理內(nèi)存幾乎是操作系統(tǒng)及應(yīng)用程序都需要的資源,同時,物理頁面的分配操作是內(nèi)存管理子系統(tǒng)頻繁執(zhí)行的操作之一,因此,對物理頁面分配和釋放例程的性能測試是必要的。該部分主要分為如下6個步驟步驟I :設(shè)計測試場景Linux 物理內(nèi)存中,每個 Node 節(jié)點劃分為 Z0NE_DMA、Z0NE_N0RMAL、Z0NE_HIGHMEM三個區(qū),姆個系統(tǒng)內(nèi)存ZONE管理區(qū)都有三個閾值,分別為pages_low, pages_min, pages_high。kswapd守護(hù)線程根據(jù)這三個閾值回收頁面或者進(jìn)入睡眠狀態(tài),結(jié)合系統(tǒng)內(nèi)存ZONE管理區(qū)的三個閾值,設(shè)計四個測試場景,測試頁面分配例程在不同的內(nèi)存分配壓カ下的性倉泛
測試場景場京描迷I
Test—alloc—fast測試場景該測試場景下,通過指定分配覓面j
數(shù)目控制系統(tǒng)的空閑頁面數(shù)目大于pages—high閾值,這樣系統(tǒng)不需要喚醒kswapd守護(hù)線程進(jìn)行頁面回收操
—__作。_
Test alIoc low測試場景該測試場景T,通過指定分配頁面j
數(shù)目控制系統(tǒng)內(nèi)的空閑頁面數(shù)目介丁 pages—low 和 pages—min 闊值之間,kswapd守護(hù)線程將被喚難進(jìn)行頁面回收操作。
Test alloc min測試場景該測試場景T,通現(xiàn)指疋分配頁面I
數(shù)目控制空閑頁面數(shù)目介于O和 pages—min 閾值之間,kswapd 守·!/· | 線程將被頻繁地喚睡進(jìn)行頁面回收
操作。I
Test^aIIoc^zero測試場景該測試場I> 通過指足分配貞#7 |
數(shù)目控制空閑頁面數(shù)目接近于0,在 內(nèi)存嚴(yán)重不足的情況下,測試頁面 Im分配例程的性能《J步驟2:設(shè)計測試指標(biāo)本發(fā)明通過記錄頁面分配例程完成分配操作所花費(fèi)的時間,作為頁面分配例程的性能測試指標(biāo),由于是性能測試,因此需要將時間測量的誤差降到最低。步驟3:設(shè)計測試結(jié)果
頁面分配例程性能測試結(jié)果由三部分內(nèi)容組成1)輸出測試開始之前系統(tǒng)內(nèi)存ZONE管理區(qū)的相關(guān)信息,包括空閑內(nèi)存、系統(tǒng)內(nèi)存ZONE管理區(qū)大小、各種閾值等取值,以幫助測試人員了解測試系統(tǒng)內(nèi)存狀況;2)輸出測試參數(shù)與測試指標(biāo)信息,以幫助測試人員了解具體測試場景;3) vmstat性能監(jiān)控工具輸出的包括cpu和內(nèi)存部分的詳細(xì)信息,信息都是從/proc文件系統(tǒng)讀取,以幫助測試人員了解當(dāng)前測試的系統(tǒng)的性能狀況。步驟4 :定義測試配置參數(shù)定義可擴(kuò)展配置測試參數(shù)是指根據(jù)測試場景的負(fù)載特點定義供用戶自定義測試負(fù)載的配置參數(shù)。如分配頁面的數(shù)目、測試執(zhí)行的輪數(shù)、空閑頁面標(biāo)志位等。步驟5 :啟動測試執(zhí)行操作該過程主要是進(jìn)行測試的實時監(jiān)控與記錄。該過程主要操作有啟動性能監(jiān)控エ具vmstat,并按照接收的頁面分配數(shù)目、測試執(zhí)行輪數(shù)以及空閑頁面標(biāo)志位初始化測試數(shù)據(jù)集,啟動測試進(jìn)程,模擬用戶請求頁面分配操作。步驟6 :計算測試指標(biāo)現(xiàn)有的ー些性能測試工具計算時間消耗采用的算法均為平均值法,如下代碼片段所示
權(quán)利要求
1.一種針對Linux操作系統(tǒng)內(nèi)存管理子系統(tǒng)進(jìn)行性能測試的方法,其特征在于,包括以下步驟 步驟一、設(shè)置微觀基準(zhǔn)測試項; 步驟ニ、針對該微觀基準(zhǔn)測試項,設(shè)計相應(yīng)的測試場景、性能測試指標(biāo)和測試結(jié)果;步驟三、編寫性能測試模塊,用于動態(tài)獲取并計算該微觀基準(zhǔn)測試項中定義的各項性能測試指標(biāo); 步驟四、編寫測試腳本模塊,用于為Linux操作系統(tǒng)內(nèi)存提供一定的工作負(fù)載并加載內(nèi)核模塊,實現(xiàn)該基準(zhǔn)測試項中定義的測試場景; 步驟五、運(yùn)行測試腳本模塊和性能測試模塊,得到測試結(jié)果。
2.如權(quán)利要求I所述的方法,其特征在干, 所述微觀基準(zhǔn)測試項為頁面分配例程; 所述測試場景包括四個測試場景一,指定分配頁面數(shù)目控制系統(tǒng)的空閑頁面數(shù)目大于pageS_high閾值;測試場景ニ,指定分配頁面數(shù)目控制系統(tǒng)內(nèi)的空閑頁面數(shù)目介于pages_low和pages_min閾值之間;測試場景三,指定分配頁面數(shù)目控制空閑頁面數(shù)目介于O和pagesjnin閾值之間;測試場景四,指定分配頁面數(shù)目控制空閑頁面數(shù)目接近于O ;其中,pages_high、pages_low、pages_min為系統(tǒng)內(nèi)存ZONE管理區(qū)的三個閾值; 所述測試指標(biāo)為頁面分配例程完成分配操作所花費(fèi)的時間; 所述測試結(jié)果包括測試開始之前,系統(tǒng)內(nèi)存ZONE管理區(qū)的空閑內(nèi)存、系統(tǒng)內(nèi)存ZONE管理區(qū)大小和各種閾值信息,以了解當(dāng)前測試的Linux操作系統(tǒng)內(nèi)存狀況;測試配置參數(shù)信息與所述測試指標(biāo)信息,以了解具體測試場景,所述測試配置參數(shù)信息包括分配頁面的數(shù)目、測試執(zhí)行的輪數(shù)、空閑頁面標(biāo)志位JALinux操作系統(tǒng)的/proc文件系統(tǒng)讀取到的cpu和內(nèi)存信息,以了解當(dāng)前測試的Linux操作系統(tǒng)的性能狀況; 所述步驟五具體為啟動性能監(jiān)控工具,并按照接收的頁面分配數(shù)目、測試執(zhí)行輪數(shù)以及空閑頁面標(biāo)志位初始化測試數(shù)據(jù)集,啟動測試腳本模塊以模擬用戶請求頁面分配操作,在測試腳本模塊執(zhí)行過程中加載性能測試模塊,最后得到測試結(jié)果。
3.如權(quán)利要求I所述的方法,其特征在干, 所述微觀基準(zhǔn)測試項為缺頁處理例程; 所述測試場景包括四個測試場景一,設(shè)置nopages=zone_free_pages (zone) -pages_high ;測 IjC 場景 ニ,設(shè)直 nopages= zone_free_pages (,zone) -[pages_mm +、pages_low-pages_min) /2];測試場景三,設(shè)直 nopages= zone_free_pages (zone) -pages_min/2 ;測試場景四,設(shè)置 nopages= zone_free_pages (zone);其中,zone_free_pages (zone)表不糸統(tǒng)內(nèi)存ZONE管理區(qū)的可用頁面數(shù),pages_low、pages_min、pages_high為系統(tǒng)內(nèi)存ZONE管理區(qū)的閾值,nopages為測試場景設(shè)置的參數(shù); 所述測試指標(biāo)為從外存換入內(nèi)存的頁面數(shù)目; 所述測試結(jié)果包括系統(tǒng)內(nèi)存ZONE管理區(qū)的空閑內(nèi)存、系統(tǒng)內(nèi)存ZONE管理區(qū)大小、各種閾值信息,以了解當(dāng)前測試的Linux操作系統(tǒng)內(nèi)存狀況;測試配置參數(shù)信息與測試指標(biāo)信息,以了解具體測試場景;從Linux操作系統(tǒng)的/proc目錄下讀取到的cpu和內(nèi)存信息,以了解當(dāng)前測試的Linux操作系統(tǒng)的性能狀況; 所述步驟五具體為啟動性能監(jiān)控工具,并按照接收的映射的內(nèi)存區(qū)域的大小、測試執(zhí)行輪數(shù)初始化測試數(shù)據(jù)集,啟動測試腳本模塊以模擬用戶申請?zhí)摂M內(nèi)存區(qū)域,在測試腳本模塊執(zhí)行過程中加載性能測試模塊,最后得到測試結(jié)果; 其中,所述測試配置參數(shù)信息包括測試映射的內(nèi)存區(qū)域的大小、測試程序重復(fù)運(yùn)行的次數(shù)、測試結(jié)果存放路徑。
4.如權(quán)利要求3所述的方法,其特征在于,所述測試結(jié)果還包括圖表信息頁面狀態(tài)圖、系統(tǒng)內(nèi)空閑內(nèi)存變化圖、塊緩存變化圖、頁緩存變化圖,以對缺頁處理例程的性能進(jìn)行分析。
5.如權(quán)利要求3或4所述的方法,其特征在于,所述計算性能測試指標(biāo)的步驟是依次計算線性地址在頁全局目錄,頁上級目錄,及頁中級目錄中對應(yīng)的指針,并由此計算該線性地址所在的頁表地址;并根據(jù)系統(tǒng)提供的宏判斷線性地址所在的頁表是否已經(jīng)被分配,以及頁面是否已經(jīng)被換入內(nèi)存,如果否,則調(diào)用C0py_t0_User函數(shù)對該線性地址進(jìn)行訪問,將頁面從外存換入內(nèi)存,引起頁面的分配和頁表的更新,并更新相應(yīng)的計數(shù)器,該計數(shù)器的取值則表示測試過程中從外存換入內(nèi)存的頁面數(shù)目;其中,C0py_t0_User函數(shù)是Linux提供的內(nèi)核函數(shù),完成用戶空間到內(nèi)核空間的復(fù)制。
6.如權(quán)利要求I所述的方法,其特征在于, 所述微觀基準(zhǔn)測試項為頁面置換算法; 所述測試場景包括四個測試場景一,申請一段匿名映射區(qū)域,并對該區(qū)域內(nèi)的所有頁面按照頁面訪問序列進(jìn)行讀操作;測試場景二,申請一段匿名映射區(qū)域,并對該區(qū)域內(nèi)的所有頁面按照頁面訪問序列進(jìn)行寫操作;測試場景三,申請一段文件映射區(qū)域,并對該區(qū)域內(nèi)的所有頁面按照頁面訪問序列進(jìn)行讀操作;測試場景四,申請一段文件映射區(qū)域,并對該區(qū)域內(nèi)的所有頁面按照頁面訪問序列進(jìn)行寫操作; 所述測試指標(biāo)為訪問每個頁面的最長、最短及平均延時; 所述測試結(jié)果包括測試配置參數(shù)信息與測試指標(biāo)信息,以了解具體測試場景;測試數(shù)據(jù)集信息包括頁面訪問序列數(shù)據(jù)、頁面訪問延時數(shù)據(jù)、頁面訪問次數(shù)數(shù)據(jù); 所述步驟五具體為調(diào)用mmap系統(tǒng)調(diào)用映射一段虛擬內(nèi)存區(qū)域,準(zhǔn)備頁面訪問數(shù)據(jù),以及調(diào)用copy_to_user函數(shù)模擬對頁面的讀操作,調(diào)用copy_from_user函數(shù)模擬對頁面的寫操作,并啟動性能監(jiān)控工具收集測試信息,啟動測試腳本模塊,在測試腳本模塊執(zhí)行過程中加載性能測試模塊,最后得到測試結(jié)果;其中,copy_from_user函數(shù)是Linux提供的內(nèi)核函數(shù),完成內(nèi)核空間到用戶空間的復(fù)制;_ap是Linux系統(tǒng)提供的一個系統(tǒng)調(diào)用,用于將一個打開的文件映射到進(jìn)程的用戶空間; 其中,所述測試配置參數(shù)信息包括測試映射的內(nèi)存區(qū)域的大小、頁面引用數(shù)目、頁面引用模式、文件路徑、讀操作或者寫操作。
7.如權(quán)利要求6所述的方法,其特征在于,所述測試結(jié)果還包括圖表信息缺頁處理延時圖、頁面訪問延時圖。
全文摘要
本發(fā)明提供了一種針對Linux操作系統(tǒng)內(nèi)存管理子系統(tǒng)進(jìn)行性能測試的方法,包括以下步驟步驟一、設(shè)置微觀基準(zhǔn)測試項;步驟二、針對該微觀基準(zhǔn)測試項,設(shè)計相應(yīng)的測試場景、性能測試指標(biāo)和測試結(jié)果;步驟三、編寫性能測試模塊,用于動態(tài)獲取并計算該微觀基準(zhǔn)測試項中定義的各項性能測試指標(biāo);步驟四、編寫測試腳本模塊,用于為Linux操作系統(tǒng)內(nèi)存提供一定的工作負(fù)載并加載內(nèi)核模塊,實現(xiàn)該基準(zhǔn)測試項中定義的測試場景;步驟五、運(yùn)行測試腳本模塊和性能測試模塊,得到測試結(jié)果。利用本方法能有效解決當(dāng)前針對Linux內(nèi)存管理子系統(tǒng)基準(zhǔn)測試工具中存在的測試場景單一、測試指標(biāo)缺乏針對性及測試結(jié)果信息量少的問題。
文檔編號G06F11/36GK102681940SQ20121015041
公開日2012年9月19日 申請日期2012年5月15日 優(yōu)先權(quán)日2012年5月15日
發(fā)明者蘭雨晴, 田媛媛 申請人:蘭雨晴
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1