[發(fā)明專利]一種基于Linux內(nèi)核頁表替換的內(nèi)存訪問模型追蹤方法有效
| 申請?zhí)枺?/td> | 200910086939.3 | 申請日: | 2009-06-11 |
| 公開(公告)號: | CN101604283A | 公開(公告)日: | 2009-12-16 |
| 發(fā)明(設(shè)計)人: | 王雷;王政;李子星 | 申請(專利權(quán))人: | 北京航空航天大學(xué) |
| 主分類號: | G06F11/34 | 分類號: | G06F11/34 |
| 代理公司: | 北京科迪生專利代理有限責(zé)任公司 | 代理人: | 李新華;徐開翟 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 linux 內(nèi)核 替換 內(nèi)存 訪問 模型 追蹤 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及操作系統(tǒng)和程序分析領(lǐng)域。
背景技術(shù)
現(xiàn)在,處理器速度與內(nèi)存訪問速度的差距越來越大,已經(jīng)達(dá)到了幾個數(shù)量級,根據(jù)最慢的部分決定系統(tǒng)的性能的原則,內(nèi)存系統(tǒng)成為性能的瓶頸,因此亟需優(yōu)化程序的內(nèi)存行為。不同性質(zhì)的應(yīng)用程序具有不同類型的內(nèi)存訪問模型,優(yōu)化的方式也不一樣。因此如果我們能確定程序的內(nèi)存訪問模型,就能對癥下藥,進(jìn)行預(yù)取優(yōu)化。
程序內(nèi)存訪問模型就是程序內(nèi)存行為的描述,現(xiàn)在已有文獻(xiàn)上并沒有明確的定義,而且現(xiàn)有工具都不能高效的追蹤程序的內(nèi)存訪問,導(dǎo)致了程序性能分析的復(fù)雜性。國外對于內(nèi)存訪問模型已經(jīng)進(jìn)行了初步的研究,Junghee等人的研究發(fā)現(xiàn),如果事先知道程序的內(nèi)存訪問模型,就可以做進(jìn)一步的優(yōu)化,提高程序的性能。Mary等人使用MPAT工具(a?memory?pattern?analysis?tool)分析了三種不同的內(nèi)存訪問模型,以評估內(nèi)存系統(tǒng)的設(shè)計。他根據(jù)MPAT收集到的資料,用來分析軟件、硬件在哪些方面需要改進(jìn)以提高內(nèi)存系統(tǒng)的性能。其在論文中用高速緩存命中率隨時間的變化這種形式來描述內(nèi)存訪問模型。而且其未考慮多處理器、多核系統(tǒng)上,多線程程序的內(nèi)存訪問模型。Jonathan等人則利用Chameleon框架軟件包里的工具捕獲應(yīng)用程序里的簡明內(nèi)存簽名(memorysignature),并產(chǎn)生人工內(nèi)存地址痕跡來模擬這個簽名。Chameleon同時模擬空間和時間局部性,能提供精確的人工痕跡。在現(xiàn)有的各種不同內(nèi)存層次上,這個痕跡的cache命中率和原來程序基本一樣。他將Chameleon應(yīng)用在高性能(HPC)程序上,通過使用抽樣技術(shù)來捕獲到全面的、并行程序的內(nèi)存簽名,而且僅僅產(chǎn)生5倍的減速。國外也實現(xiàn)了一些內(nèi)存訪問地址追蹤工具,如valgrind等,它們的實現(xiàn)并不需要更改Linux內(nèi)核,而且追蹤的是內(nèi)存訪問地址,而不是頁面,這樣對于高性能計算程序,獲得的統(tǒng)計數(shù)據(jù)量會出現(xiàn)存儲空間爆炸的情況。
本發(fā)明中的內(nèi)存訪問模型是指程序的虛擬內(nèi)存頁面訪問順序,以及每個頁面訪問的持續(xù)時間(這樣就能估算出每個頁面的訪問次數(shù))。獲取了程序的內(nèi)存訪問模型后就能指導(dǎo)對程序的內(nèi)存行為進(jìn)行優(yōu)化。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是:克服現(xiàn)有技術(shù)不足,提出一種基于Linux內(nèi)核進(jìn)程頁表替換的內(nèi)存訪問模型追蹤方法,該輕量級的追蹤方法以頁面地址為追蹤粒度,具有速度快,產(chǎn)生的追蹤數(shù)據(jù)量小的特點,適合于高性能計算程序的內(nèi)存追蹤需求。
本發(fā)明采用的技術(shù)方案:基于Linux內(nèi)核進(jìn)程頁表替換的內(nèi)存訪問模型追蹤方法,其特征在于包括以下步驟:
(1)引導(dǎo)程序創(chuàng)建出一個子進(jìn)程來執(zhí)行要統(tǒng)計內(nèi)存訪問模型的目標(biāo)程序,在目標(biāo)程序執(zhí)行之前,父進(jìn)程通過向Linux內(nèi)核添加的系統(tǒng)調(diào)用a來啟動統(tǒng)計過程,并將要統(tǒng)計的目標(biāo)進(jìn)程號(_mt_pid_)傳遞進(jìn)內(nèi)核;
(2)另外申請一個頁表,稱之為假頁表,假頁表中對于非代碼段的頁面只保留一項,這樣對非代碼段的每次內(nèi)存訪問都會產(chǎn)生缺頁中斷,除非一直訪問某個地址;在切換到目標(biāo)進(jìn)程的時候?qū)⒓夙摫淼牡刂穫鬟f給cr3寄存器,使操作系統(tǒng)與假頁表建立聯(lián)系;
(3)目標(biāo)進(jìn)程開始執(zhí)行,由于使用了假頁表,目標(biāo)程序的每次訪問內(nèi)存都會觸發(fā)缺頁中斷,在處理缺頁中斷時,記錄訪問的內(nèi)存頁號和訪問次數(shù),即內(nèi)存訪問模型;通過向Linux內(nèi)核添加的系統(tǒng)調(diào)用c將內(nèi)存訪問模型數(shù)據(jù)取出到用戶態(tài);
(4)目標(biāo)進(jìn)程執(zhí)行完后,通過向Linux內(nèi)核添加的調(diào)用系統(tǒng)調(diào)用b結(jié)束統(tǒng)計過程。
在所述步驟(1)中系統(tǒng)調(diào)用a為向Linux內(nèi)核中添加的新系統(tǒng)調(diào)用,用來啟動統(tǒng)計過程和變量初始化工作;系統(tǒng)調(diào)用a首先判斷我們要統(tǒng)計的目標(biāo)進(jìn)程號(_mt_pid_)是否已經(jīng)設(shè)置,如果已經(jīng)設(shè)置,說明另一個內(nèi)存訪問模型的統(tǒng)計正在進(jìn)行,則啟動失敗;如果未設(shè)置,則設(shè)置目標(biāo)進(jìn)程號(_mt_pid_)為引導(dǎo)程序傳遞給系統(tǒng)調(diào)用a的進(jìn)程號;然后系統(tǒng)調(diào)用a初始化內(nèi)存訪問模型追蹤所需要的變量并創(chuàng)建一個假頁表,將頁表地址(_mt_pgd_)設(shè)置為假頁表的地址,同時備份真頁表的地址。
在所述步驟(2)中假頁表與真頁表的協(xié)作方式為:在假頁表每次觸發(fā)缺頁中斷后,首先通過真頁表判斷是否真正缺頁:若不缺頁,則將真頁表中保存的物理頁信息復(fù)制到假頁表中;若缺頁,則將要訪問的頁面加載入物理內(nèi)存中,同時將真頁表中對應(yīng)項的值復(fù)制到假頁表中;最后將離開的頁面在假頁表中的表項值清零;這樣,假頁表中只有當(dāng)前進(jìn)程所處理的頁面有對應(yīng)的物理頁信息。
在所述步驟(3)中系統(tǒng)調(diào)用c為向Linux內(nèi)核中添加的新系統(tǒng)調(diào)用,引導(dǎo)程序通過不斷調(diào)用系統(tǒng)調(diào)用c將追蹤到的內(nèi)存訪問模型數(shù)據(jù)取出到用戶態(tài)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京航空航天大學(xué),未經(jīng)北京航空航天大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910086939.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





