專利名稱:并行模擬中支持蹤跡文件并行輸入輸出的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及并行計算機系統(tǒng)模擬方法,特別是在具有分布式磁盤存儲系統(tǒng)的并行宿主機上,對并行模擬過程中的Trace(蹤跡)文件進行分布式并行輸入輸出(Input/Output,I/O)的方法。
背景技術(shù):
計算機體系結(jié)構(gòu)模擬軟件(簡稱模擬器)是一類對計算機系統(tǒng)行為進行模擬的軟件。它們一般是可配置的,可以對目標計算機系統(tǒng)的體系結(jié)構(gòu)參數(shù)或技術(shù)方案進行配置,在現(xiàn)有的計算機(稱為宿主機)上模擬運行Benchmark程序(包括真實的基準測試程序或自動生成的工作負載),獲得目標系統(tǒng)在給定配置下的性能數(shù)據(jù),為計算機系統(tǒng)的體系結(jié)構(gòu)設計決策提供參考。此外,基于模擬器還可對新計算機系統(tǒng)上的算法及軟件進行調(diào)試與評估。
模擬器模擬硬件的行為,其時間開銷通常比在真實目標機上運行相同Benchmark程序的時間大幾個數(shù)量級,并且內(nèi)存開銷也很大。對于大規(guī)模并行計算機系統(tǒng)的模擬來說,串行宿主機難以勝任,只有采用并行計算機系統(tǒng)作為宿主機,基于并行模擬器并利用并行機的計算與存儲資源進行模擬,才能滿足計算能力與存儲容量的需求。目前已經(jīng)出現(xiàn)了一些基于并行宿主機的并行模擬器原型系統(tǒng),如WWT II(威斯康辛大學)、LAPSE(NASA)、MPI-SIM(加州大學洛杉磯分校)、BigSimulator(伊利諾伊大學香檳分校)、BGLsim(IBM公司與伊利諾伊大學香檳分校)、SILAS(德國尤利西超級計算中心)等。
很多并行模擬器(如SILAS和BigSimulator)采用了Trace驅(qū)動的方式。Trace是對Benchmark程序執(zhí)行過程中發(fā)生的事件或操作的記錄,其中可以包括程序執(zhí)行的指令序列及指令地址、訪存地址序列、通信事件發(fā)生的時刻與數(shù)量、通信的對象等信息,通常將其以Trace文件的方式存儲在磁盤系統(tǒng)中,后續(xù)的性能分析或模擬軟件以Trace文件為輸入,進行進一步的性能評估。例如BigSimulator原型模擬器中的性能模擬預測分兩個步驟,第一個步驟稱為仿真(Emulation),在其中進行初步模擬并生成Trace文件;第二個步驟稱為模擬(Simulation),它基于前一步驟的Trace文件進行更詳細的性能模擬預測。但是基于Trace的模擬帶來了問題 (1)Trace文件占據(jù)很大的存儲空間,導致對Trace文件進行磁盤I/O的開銷大。如文獻(Gao Xiaofeng等,Path Grammar Guided Trace Compression and TraceApproximation,IEEE HPDC-15,2006)報道,NPB(NAS Parallel Benchmark)中BT程序采用Class A輸入集時,只使用4個并行模擬進程,其有效地址的Trace文件大小就超過了260GB。由于需要在磁盤系統(tǒng)上存儲和讀取的Trace文件的容量巨大,模擬器的執(zhí)行性能嚴重受限于Trace文件的磁盤I/O操作。
(2)模擬器進行Trace文件記錄的過程對目標程序執(zhí)行過程是一種干擾,可能影響模擬器的模擬精度。因為Trace驅(qū)動的性能模擬器往往基于計算時間、通信時間的綜合來預測并行程序在目標并行機上的性能,計算時間根據(jù)宿主機上測得的Benchmark程序計算部分的時間來估計(Gengbin Zheng等,Simulation-based performance predictionfor large parallel machines,International Journal of Parallel Programming,2005),而Trace文件I/O操作是對Benchmark程序執(zhí)行過程的一種干擾,可能影響測得的計算時間,從而在最終的預測性能中引入誤差。
由于上述原因,如何優(yōu)化Trace文件的磁盤I/O操作以提高模擬器的性能,并降低Trace文件I/O操作對計算時間估計的影響,成為模擬器研究領(lǐng)域的一個重要問題。在并行模擬器中,這一問題更加重要,因為并行模擬中通常運行規(guī)模更大的并行Benchmark程序,產(chǎn)生的Trace文件容量更大;并且,由于并行編程模式傳統(tǒng)上只由主進程進行I/O操作,并行模擬器中通常也只有一個主模擬進程進行Trace文件的I/O操作,由單個主進程支持多個模擬進程的Trace文件I/O操作,很可能造成性能瓶頸。
目前已提出的解決Trace文件輸入輸出問題的方法主要有三類(1)緩沖存儲方法將模擬過程中持續(xù)不斷產(chǎn)生的Trace緩存在主存中,直到模擬結(jié)束時才將Trace以文件方式寫入磁盤,這樣減少磁盤I/O操作執(zhí)行的次數(shù),一定程度上提高性能。這種方法在多種模擬器中都有采用。但Trace的緩沖存儲方法對宿主機的主存使用帶來壓力,在主存容量不足的情況下,會出現(xiàn)頻繁的磁盤交換操作,性能大幅度降低。(2)在并行模擬器中,每個模擬進程都進行Trace文件I/O操作,這樣可緩解單個進程處理Trace文件I/O時的性能瓶頸。例如BigSimulator中就采用了這種方法。但這種方法通常采用單個I/O服務器,基于網(wǎng)絡文件系統(tǒng)(如NFS)支持多個模擬進程的Trace文件I/O,一方面單個I/O服務器可提供的磁盤I/O帶寬有限,另一方面Trace文件數(shù)據(jù)還要通過網(wǎng)絡傳輸,數(shù)據(jù)訪問的路徑更長,讀取延遲比本地磁盤的更大,帶寬受限于網(wǎng)絡帶寬,導致Trace文件I/O操作的效率低,影響并行模擬器系統(tǒng)的執(zhí)行效率。據(jù)在一個100M以太網(wǎng)互連的集群系統(tǒng)(采用SCSI磁盤存儲)上的測試結(jié)果,基于網(wǎng)絡文件系統(tǒng)NFS從I/O節(jié)點讀取Trace文件的帶寬不到12MB/s,而從本地磁盤讀取Trace文件的I/O帶寬可達到200MB/s以上。(3)Trace文件壓縮方法,通過壓縮減小Trace文件大小,從而減少相應的I/O開銷。例如文獻(ALEKSANDAR
等,An Efficient Single-PassTrace Compression Technique Utilizing Instruction Streams,ACM Transactions on Modelingand Computer Simulation,2007)報告了一種基于流的壓縮方法SBC,可將Dinero模擬器生成的SPEC CPU2000的指令和數(shù)據(jù)地址Trace文件的大小壓縮到原來的1/18到1/309,并可跟通用壓縮技術(shù)如gzip結(jié)合使用。但Trace文件壓縮和解壓縮操作也帶來額外的開銷,例如在3GHz的Intel Pentium4處理器上,SBC對SPEC2000每個程序產(chǎn)生的Trace文件的平均壓縮時間需要28.9分鐘,平均解壓縮時間為86秒。對于并行Trace文件的壓縮和解壓縮操作則更加費時,如據(jù)文獻(Gao Xiaofeng等,Path Grammar GuidedTrace Compression and Trace Approximation,IEEE HPDC-15,2006)報道,采用一種Trace文件壓縮方法Sequitur壓縮NPB中EP程序944MB大小的控制流Trace文件共花費了約70個小時。
通過調(diào)查發(fā)現(xiàn),除了少數(shù)系統(tǒng)中只配有集中式的磁盤存儲系統(tǒng)之外,目前的并行計算機通常在每個節(jié)點上都配有本地磁盤,特別是主流的集群結(jié)構(gòu)并行計算機系統(tǒng)通常如此。如果并行模擬器的每個模擬進程都可利用本進程所在節(jié)點上的磁盤來存儲Trace文件,則可以在多個磁盤上并行地進行Trace文件的I/O操作,使得Trace文件I/O也具有高度的并行性,大幅提高并行模擬器中Trace文件I/O的效率,加快模擬速度,并且降低Trace文件I/O操作對模擬準確性的影響,獲得更準確的模擬結(jié)果。如果能夠以具有分布式磁盤存儲的并行計算機系統(tǒng)為宿主機,以現(xiàn)有的消息傳遞并行模擬器軟件為基礎(chǔ),通過設計相應的過程控制方案及軟件,確保每個模擬步驟中各個模擬進程都可在本結(jié)點的本地磁盤上輸出或者讀取Trace文件,則可以以較低的代價實現(xiàn)對并行模擬的Trace文件的分布式并行I/O。本發(fā)明就是根據(jù)這種思路而提出來的。
根據(jù)專利文獻檢索,以往的專利與文獻中尚未見到對并行模擬的Trace文件進行分布式并行I/O的方法的相關(guān)報道。只有一些關(guān)于并行模擬器構(gòu)造方面的方法申請了專利,如專利號分別為5956261、5442772的美國專利、專利號200710304653.9的中國專利。此外,專利號5327361的美國專利涉及到了計算機模擬過程中Trace的生成方法,專利號6347383的美國專利涉及到了Trace文件壓縮的方法。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是在以具有分布式磁盤存儲的并行計算機為宿主機的并行模擬中,提出一種支持分布式并行Trace文件I/O的方法,以分布式并行I/O的方式來實現(xiàn)Trace文件的輸入輸出,提高消息傳遞式并行模擬過程中Trace文件I/O的效率,縮短模擬時間,提高預測準確性。
本發(fā)明技術(shù)方案如下 第一步,構(gòu)建運行并行模擬器的宿主機,宿主機由多個節(jié)點構(gòu)成,每個節(jié)點都是一臺可獨立運行的計算機,都具有主存和本地磁盤存儲,各個節(jié)點間通過網(wǎng)絡互連。每個節(jié)點既可以是一個單處理器系統(tǒng),也可以是一個對稱多處理器(SymmetricMultiprocessors,SMP)系統(tǒng),其中的處理器可以是單核處理器或片上多核處理器(ChipMultiprocessors,CMP)。指定一個節(jié)點為主控節(jié)點,它負責與用戶交互,通過它進行整個模擬預測過程的配置與控制。其它節(jié)點稱為模擬節(jié)點,它們可根據(jù)需要參與并行模擬。各個模擬節(jié)點結(jié)構(gòu)和配置均可以不同。主控節(jié)點和模擬節(jié)點均安裝有操作系統(tǒng)、網(wǎng)絡協(xié)議軟件和遠程命令執(zhí)行軟件如RSH(Remote Shell)或SSH(Secure Shell),使得主控節(jié)點與模擬節(jié)點上的模擬用戶間可以互相進行遠程文件復制,或者啟動對方上的程序。從網(wǎng)絡訪問各個節(jié)點可通過主機名或IP地址,為描述方便,統(tǒng)一采用主機名來標識每個節(jié)點?;赥race的并行模擬器的模擬過程通常分為兩個模擬階段(如SILAS和BigSimulator都是如此),每個階段采用不同的模擬器,實現(xiàn)不同目標的模擬,為描述方便,將第一階段的模擬器稱為模擬器A,第二階段的模擬器稱為模擬器B。在模擬節(jié)點上安裝有兩個模擬階段的模擬器——模擬器A和模擬器B、Benchmark程序,它們是用戶根據(jù)需要選擇并安裝在模擬節(jié)點上的專門軟件。主控節(jié)點上裝有主配置程序、Trace分布軟件、調(diào)度軟件A和調(diào)度軟件B,其中調(diào)度軟件A用于調(diào)度模擬器A的執(zhí)行,調(diào)度軟件B用于調(diào)度模擬器B的執(zhí)行。
第二步,在主控節(jié)點上執(zhí)行主配置程序,進行全局配置。主要工作包括為兩個并行模擬階段分別設置參與并行模擬的節(jié)點、每個節(jié)點上參與模擬的模擬進程數(shù),據(jù)此生成源節(jié)點和目的節(jié)點列表文件;創(chuàng)建一個全局配置文件,在其中記錄源節(jié)點和目的節(jié)點列表文件的存放目錄及名字、兩個模擬階段模擬進程到節(jié)點的映射方法、Trace文件名的前導標識符。過程如下 2.1設置參與第一個階段模擬的節(jié)點及其上模擬進程的數(shù)目,每一行存儲一個節(jié)點的信息,生成源節(jié)點列表文件。假設參與第一階段并行模擬的節(jié)點有NE個,分別給其編號為1-NE,記其中第i個節(jié)點的主機名為HEi、模擬進程數(shù)為PEi(1≤i≤NE)。具體流程是 2.1.1建一個空的源節(jié)點列表文件。
2.1.2初始化計數(shù)器i為1。
2.1.3在源節(jié)點列表文件中新起一行,寫入第i個節(jié)點的主機名HEi。
2.1.4在當前節(jié)點的主機名HEi后寫入該節(jié)點上的模擬進程數(shù)目PEi。
2.1.5計數(shù)器i的值增加1,若i≤NE,轉(zhuǎn)2.1.3;否則,關(guān)閉源節(jié)點列表文件,完成源節(jié)點列表文件的創(chuàng)建。
2.2設置參與第二個階段模擬的節(jié)點及其上模擬進程的數(shù)目,生成目的節(jié)點列表文件。假設參與第二階段并行模擬的節(jié)點有NS個,分別給其編號為1-NS,記其中第j個節(jié)點的主機名為HSj、模擬進程數(shù)為PSj(1≤j≤NS)。具體流程是 2.2.1建一個空的目的節(jié)點列表文件。
2.2.2初始化計數(shù)器j為1。
2.2.3在目的節(jié)點列表文件中新起一行,寫入第j個節(jié)點的主機名HSj。
2.2.4在當前節(jié)點的主機名HSj后寫入該節(jié)點上的模擬進程數(shù)目PSj。
2.2.5計數(shù)器j的值增加1,若j≤NS,轉(zhuǎn)2.2.3;否則,關(guān)閉目的節(jié)點列表文件,完成目的節(jié)點列表文件的創(chuàng)建。
2.3創(chuàng)建一個全局配置文件,在其中記錄全局配置信息。具體流程是 2.3.1創(chuàng)建一個空的全局配置文件。
2.3.2在全局配置文件中記錄源節(jié)點和目的節(jié)點列表文件的存放目錄及名字。
2.3.3設置第一個模擬階段模擬進程到節(jié)點的映射方法。映射方法可以為塊分布、循環(huán)分布等,這里采用本領(lǐng)域常用的塊分布映射方法(記為BLOCK_MAP)。在全局配置文件中記錄映射方法的名稱(用變量MAPE標識)。
2.3.4設置第二個模擬階段的模擬進程到節(jié)點的映射方法,映射方法與第一個模擬階段相同。在全局配置文件中記錄映射方法的名稱(用變量MAPS標識)。
2.3.5設置Trace文件名的前導標識符,記錄在全局配置文件中。
2.3.6關(guān)閉全局配置文件,完成全局配置。
第三步,由主控節(jié)點上的調(diào)度軟件A調(diào)度模擬節(jié)點上的模擬器A執(zhí)行模擬工作,進行第一個階段的并行模擬。
調(diào)度軟件A的流程如下 3.1從全局配置文件獲得源節(jié)點列表文件的存放目錄及名字,以及第一個模擬階段模擬進程到節(jié)點的映射方法MAPE和Trace文件名的前導標識符。
3.2解析源節(jié)點列表文件,獲得參與第一階段模擬的節(jié)點名及其上的模擬進程數(shù)。
3.3啟動每個模擬節(jié)點上的模擬進程,即逐個啟動每個參與第一階段模擬的模擬節(jié)點上的PEk個模擬進程,PEk為編號為k的模擬節(jié)點上的模擬進程數(shù)(1≤k≤NE)。
3.4給每個模擬進程分配不同的邏輯進程號,邏輯進程號從1到
因MAPE等于BLOCK_MAP,故第k個模擬節(jié)點上的PEk個模擬進程的編號分別是(1≤k≤NE)。
模擬節(jié)點端模擬器A的執(zhí)行過程如下 3.5模擬器A的各個進程并行地參與模擬運行Benchmark程序,進行功能仿真和初步的性能模擬。
3.6每個模擬進程生成一個與本進程的邏輯進程號相同編號的Trace文件,記錄本階段已模擬得到的性能數(shù)據(jù)以及下一階段所需要的性能事件(例如網(wǎng)絡通信),每個模擬進程產(chǎn)生的Trace文件都存儲在本地磁盤中,即第k個模擬節(jié)點上模擬進程產(chǎn)生的Trace文件記錄在節(jié)點名為HEk的節(jié)點上(1≤k≤NE)。Trace文件的命名采用“前導標識符”+“編號”的方式。
第四步,主控節(jié)點上的Trace分布軟件為每個目的模擬節(jié)點生成一個Trace移動腳本,將其發(fā)給目的模擬節(jié)點,目的模擬節(jié)點執(zhí)行Trace移動腳本,從相應的源節(jié)點上將Trace文件移動到本節(jié)點。
進行Trace文件的重新分布的原因是由于不同階段并行模擬器在并行宿主機上的可擴展性的差異、不同模擬階段模擬任務可擴展性的差異,以及并行宿主機中不同節(jié)點處理能力的差異,為了獲得最佳的并行模擬效率,在不同階段不一定使用相同數(shù)目的節(jié)點并行模擬,并且不同模擬階段中模擬進程到宿主機節(jié)點的映射方式也不同,因此需要將Trace文件重新進行分布以保證后續(xù)模擬過程可從本地獲得需要讀取的Trace文件。Trace文件重分布關(guān)鍵問題是確定每個目的節(jié)點上的各個模擬進程需要讀取哪些Trace,這些Trace原來分布于哪些源節(jié)點上,方法是 (a1)計算每個目的節(jié)點上的模擬進程的邏輯進程號,邏輯進程號從1到
因為MAPS等于BLOCK_MAP,故第q個目的節(jié)點上模擬進程的邏輯進程號分別是(1≤q≤NS)。
(a2)計算第二個模擬階段每個模擬進程應讀取的Trace文件編號。第二個模擬階段的模擬進程數(shù)Trace文件數(shù)如果NNP整除NNT,則令TN=DIV(NNT,NNP),RN=0;否則,令TN=DIV(NNT,NNP)+1,RN=MOD(NNT,NNP)。其中DIV(NNT,NNP)表示NNT除以NNP得到的整數(shù),MOD(NNT,NNP)表示NNT除以NNP得到的余數(shù)。對進程號為u的模擬進程,若RN等于0,則其所讀取的Trace文件編號是TN*(u-1)+1,TN*(u-1)+2,...,若RN不等于0,則其所讀取的Trace文件編號是TN*(u-1)+1,TN*(u-1)+2,...,TN*u(u≤RN),或者TN*RN+(u-RN-1)*(TN-1)+1,TN*RN+(u-RN-1)*(TN-1)+2,...,TN*RN+(u-RN)*(TN-1) (a3)計算每個Trace文件原來分布于哪個源節(jié)點上。記Trace文件的編號為NT,則它所在源節(jié)點的編號SN滿足 4.1在主控節(jié)點端執(zhí)行Trace分布軟件,流程如下 4.1.1初始化目的節(jié)點號q為1。置第二個模擬階段的模擬進程數(shù)Trace文件數(shù)如果NNP整除NNT,則置變量TN=DIV(NNT,NNP),變量RN=0;否則,置變量TN=DIV(NNT,NNP)+1,變量RN=MOD(NNT,NNP)。
4.1.2創(chuàng)建一個新的Trace移動腳本文件。
4.1.3初始化計數(shù)器ml的值為1。
4.1.4置目的節(jié)點上的邏輯進程號 4.1.5初始化計數(shù)器t的值為1。如果RN等于0,或者RN不等于0且m不大于RN,置IMAX=TN;否則,置IMAX=TN-1。
4.1.6如果RN等于0,或者RN不等于0且m不大于RN,置Trace文件編號NT=TN×(m-1)+t;否則,置Trace文件編號NT=TN×RN+(m-RN-1)(TN-1)+t。初始化計數(shù)器r的值為0,置PT的值為0。
4.1.7計算r=r+1;PT=PT+PEr。
4.1.8如果NT>PT,轉(zhuǎn)4.1.7;否則,轉(zhuǎn)4.1.9。
4.1.9在腳本文件中加入一條命令,功能是使用遠程復制命令將源節(jié)點HEr上編號為NT的Trace文件(文件名為“前導標識符”+NT)移動到本機(目的節(jié)點HSq)上。
4.1.10如果t<IMAX,置t=t+1,轉(zhuǎn)4.1.6。
4.1.11若m1<PSq,置m1=m1+1,轉(zhuǎn)4.1.4。
4.1.12關(guān)閉Trace移動腳本文件,使用遠程復制命令將該腳本移動到目的節(jié)點HSq上,并在節(jié)點HSq上啟動該腳本文件。
4.1.13若q<NS,置q=q+1,轉(zhuǎn)4.1.2;否則,結(jié)束。
4.2目的模擬節(jié)點端從源節(jié)點上將Trace文件移動到本節(jié)點,方法是 每個目的模擬節(jié)點接收主控節(jié)點發(fā)來的Trace移動腳本文件,執(zhí)行該腳本,將第二個模擬階段本節(jié)點上的模擬進程要讀取的Trace文件逐個地從源節(jié)點移動到本節(jié)點上。
在Trace文件重分布過程中,由于Trace分布軟件在啟動目的節(jié)點上的Trace移動腳本后就返回,接著為后續(xù)目的節(jié)點生成Trace移動腳本,且Trace分布軟件的執(zhí)行時間遠小于每個目的節(jié)點上進行Trace文件移動的時間,因此,各個目的節(jié)點并行地執(zhí)行Trace文件移動操作,即Trace文件重分布過程基本上是全并行的,并行度接近NS。
第五步,主控節(jié)點上的調(diào)度軟件B調(diào)度模擬節(jié)點上的模擬器B執(zhí)行模擬工作。
調(diào)度軟件B的流程如下 5.1從全局配置文件中獲得目的節(jié)點列表的存放目錄及名字,以及第一個模擬階段模擬進程到節(jié)點的映射方法MAPS。
5.2解析目的節(jié)點列表文件,獲得參與第二階段模擬的各個節(jié)點名及其上的模擬進程數(shù)。
5.3啟動每個模擬節(jié)點上的模擬進程,即逐個啟動每個參與第二階段模擬的模擬節(jié)點上的PSq個模擬進程,PSq為編號為q的模擬節(jié)點上的模擬進程數(shù),1≤q≤NS。
5.4給每個模擬進程分配不同的邏輯進程號。邏輯進程號從1到
因MAPS等于BLOCK_MAP,故第q個節(jié)點上的PSq個模擬進程的邏輯進程號分別是(1≤q≤NS)。
模擬節(jié)點端模擬器B的執(zhí)行過程如下 5.5模擬器B的各個模擬進程并行地從本地磁盤上讀取Trace文件。設模擬進程的邏輯進程號為u,若RN等于0,則其讀取的Trace文件編號是TN*(u-1)+1,TN*(u-1)+2,...,若RN不等于0,則其讀取的Trace文件編號是TN*(u-1)+1,TN*(u-1)+2,...,TN*u(u≤RN),或者TN*RN+(u-RN-1)*(TN-1)+1,TN*RN+(u-RN-1)*(TN-1)+2,...,TN*RN+(u-RN)*(TN-1) 5.6各個模擬進程基于Trace文件中記錄的信息并行地進行詳細模擬,綜合第一個階段的性能數(shù)據(jù),得到最終的模擬預測性能數(shù)據(jù)。
采用本發(fā)明可以達到以下技術(shù)效果 (1)效率高,第三步中采用所有源節(jié)點上的磁盤系統(tǒng)支持并行的Trace寫操作,第四步中各個目的節(jié)點并行地從源節(jié)點上移動Trace文件,第五步中采用所有目的節(jié)點上的磁盤系統(tǒng)支持并行的Trace度操作,大幅度提高了Trace文件I/O的效率,進而提高了并行模擬效率。
(2)因為Trace文件I/O效率提高,對目標Benchmark程序的干擾減小,有利于提高模擬結(jié)果的精度。
(3)由于解決了單I/O服務器導致的Trace文件I/O性能瓶頸,可以支持使用更大數(shù)量的節(jié)點來進行并行模擬,提高了并行模擬器自身的并行可擴展性。
(4)實施簡單,所要求的并行宿主機的軟硬件的特性在常見并行機系統(tǒng)上都具備,無需特別的軟件支持,也不受限于具體文件系統(tǒng)。
(5)與Trace緩沖存儲、Trace壓縮等方法兼容,可共同實施。
綜上所述,本發(fā)明基于具有分布式磁盤存儲的并行宿主機系統(tǒng),采取“并行的本地Trace文件I/O、并行的Trace文件重分布”的方式,實現(xiàn)了對計算機體系結(jié)構(gòu)并行模擬中Trace文件I/O操作的并行化,大大加快了模擬評估的速度,并提高了模擬預測數(shù)據(jù)的準確性。
圖1是本發(fā)明中并行宿主機的邏輯結(jié)構(gòu)圖。
圖2是本發(fā)明中主控節(jié)點和模擬節(jié)點的軟件部署圖。
圖3是本發(fā)明的總流程圖。
圖4是主配置程序的流程圖。
圖5是第一個并行模擬階段的流程圖。
圖6是Trace分布軟件的流程圖。
圖7是第二個并行模擬階段的流程圖。
具體實施例方式 圖1是本發(fā)明的并行宿主機的邏輯結(jié)構(gòu)圖。并行宿主機由多個節(jié)點構(gòu)成,每個節(jié)點都是一臺可獨立運行的計算機,既可以是一個單處理器系統(tǒng),也可以是一個對稱多處理器(SMP)系統(tǒng),其中的處理器可以是單核處理器或片上多核處理器(CMP)。隨著多核處理器的日益廣泛使用,通常并行宿主機的每個節(jié)點上都有多個CPU核。每個節(jié)點均配有主存和本地磁盤存儲。各個節(jié)點間通過網(wǎng)絡互連,網(wǎng)絡可以是以太網(wǎng)、Myrinet、Infiniband,或是其它類型的網(wǎng)絡??赏ㄟ^主機名或IP地址從網(wǎng)絡訪問各個節(jié)點。根據(jù)功能將集群的節(jié)點分為主控節(jié)點和模擬節(jié)點。主控節(jié)點只有一個,它負責與用戶交互,通過它進行全局配置、執(zhí)行調(diào)度程序、控制進行Trace文件重分布操作等。其它節(jié)點稱為模擬節(jié)點,它們可根據(jù)需要參與并行模擬。
圖2是本發(fā)明主控節(jié)點和模擬節(jié)點的軟件部署圖。在主控節(jié)點上安裝有操作系統(tǒng)、TCP/IP協(xié)議軟件、遠程命令執(zhí)行軟件(RSH或SSH)、主控程序、主配置程序和Trace分布軟件。其中前三者是本領(lǐng)域的通用軟件,可從公開發(fā)行的軟件包中獲得;后三者是本發(fā)明的專用軟件。在模擬節(jié)點上安裝有操作系統(tǒng)、TCP/IP協(xié)議軟件、遠程命令執(zhí)行軟件、Benchmark程序,以及兩個并行模擬階段的模擬器——模擬器A和模擬器B。其中前三者是通用軟件,可從公開發(fā)行的軟件包中獲得。模擬器A、模擬器B和Benchmark程序是用戶根據(jù)模擬的對象及模擬目標需求選定的專門軟件。
圖3所示是本發(fā)明中本發(fā)明的總流程圖。主要流程是 步驟S301,構(gòu)建運行并行模擬器的宿主機。
步驟S302,主配置程序在主控節(jié)點上執(zhí)行,進行全局配置。
步驟S303,主控節(jié)點上的調(diào)度軟件A調(diào)度模擬節(jié)點上的模擬器A,執(zhí)行第一個階段的并行模擬。
步驟S304,主控節(jié)點上的Trace分布軟件控制各個模擬節(jié)點進行Trace的重分布。
步驟S305,主控節(jié)點上的調(diào)度軟件B調(diào)度模擬節(jié)點上的模擬器B,執(zhí)行第二個階段的并行模擬。
圖4是主配置程序的流程圖。主配置程序的流程是 步驟S401,設置參與第一個階段模擬的節(jié)點及其上模擬進程的數(shù)目,生成源節(jié)點列表文件。
步驟S402,設置參與第二個階段模擬的節(jié)點及其上模擬進程的數(shù)目,生成目的節(jié)點列表文件。
步驟S403,創(chuàng)建一個全局配置文件,在其中記錄全局配置信息。
圖5是第一個并行模擬階段的流程圖。該流程包括主控節(jié)點上的調(diào)度軟件A的流程和模擬節(jié)點上的模擬器A的流程。
調(diào)度軟件A的流程如下 步驟S501,從全局配置文件中獲得源節(jié)點列表文件的存放目錄及名字,以及第一個模擬階段進程到節(jié)點的映射方法MAPE和Trace文件名的前導標識符。
步驟S502,解析源節(jié)點列表文件,獲得參與第一階段模擬的各個節(jié)點名及其上的模擬進程數(shù)。
步驟S503,啟動每個模擬節(jié)點上的模擬進程。
步驟S504,給每個模擬進程分配不同的邏輯進程號。
模擬節(jié)點端模擬器A的過程如下 步驟S505,各個模擬進程并行地參與模擬運行Benchmark程序,進行功能仿真和初步的性能模擬。
步驟S506,每個模擬進程生成一個與本進程的邏輯進程號相同編號的Trace文件,記錄本階段已模擬得到的性能數(shù)據(jù)以及下一階段所需要的性能事件,每個模擬進程產(chǎn)生的Trace文件都存儲在本地磁盤中,即第k個節(jié)點上模擬進程產(chǎn)生的Trace文件記錄在HEk節(jié)點上(1≤k≤NE)。
圖6是Trace分布軟件進行Trace文件的重分布的流程圖。
主控節(jié)點端的流程 步驟S601,從全局配置文件中獲得全局配置信息,包括源節(jié)點和目的節(jié)點列表文件的存放目錄及名字,兩個模擬階段進程到節(jié)點的映射方法MAPE和MAPS,以及Trace文件名的前導標識符。
S602,解析源節(jié)點和目的節(jié)點列表,分別獲得參與兩個階段模擬的各個節(jié)點名、模擬進程數(shù)。
S603為每個目的節(jié)點生成Trace移動腳本,發(fā)送到目的節(jié)點,并在該節(jié)點上啟動該腳本。
模擬節(jié)點端的流程 S604每個目的節(jié)點接收主控節(jié)點發(fā)來的Trace文件移動腳本,執(zhí)行該腳本,將第二個模擬階段本節(jié)點上的模擬進程需要讀取的Trace文件逐個地從源節(jié)點移動到本節(jié)點上。
圖7是第二個并行模擬階段的流程圖。該流程包括主控節(jié)點上的調(diào)度軟件B的流程和模擬節(jié)點上的模擬器B的流程。
調(diào)度軟件B的過程如下 步驟S701,從全局配置文件中獲得目的節(jié)點列表的存放目錄及名字,以及第一個模擬階段模擬進程到節(jié)點的映射方法MAPS。
步驟S702,解析目的節(jié)點列表文件,獲得參與第二階段模擬的各個節(jié)點名及其上的模擬進程數(shù)。
步驟S703,啟動每個模擬節(jié)點上的模擬進程。
步驟S704,給每個模擬進程分配不同的邏輯進程號。
模擬節(jié)點端模擬器B的過程如下 步驟S705,各個模擬進程并行地從本地磁盤上讀取Trace文件。
步驟S706,各個模擬進程基于Trace文件中記錄的信息并行地進行詳細模擬,綜合第一個階段的性能數(shù)據(jù),得到最終的模擬預測性能數(shù)據(jù)。
權(quán)利要求
1.一種并行模擬中支持蹤跡文件并行輸入輸出的方法,其特征在于包括以下步驟
第一步,構(gòu)建運行并行模擬器的宿主機,宿主機由多個節(jié)點構(gòu)成,每個節(jié)點都是一臺可獨立運行的計算機,都具有主存和本地磁盤存儲,各個節(jié)點間通過網(wǎng)絡互連;指定一個節(jié)點為主控節(jié)點,它負責與用戶交互,通過它進行模擬預測過程的配置與控制;其它節(jié)點稱為模擬節(jié)點,它們根據(jù)需要參與并行模擬;主控節(jié)點和模擬節(jié)點均安裝有操作系統(tǒng)、網(wǎng)絡協(xié)議軟件和遠程命令執(zhí)行軟件,各個節(jié)點采用主機名來標識;基于Trace的并行模擬器的模擬過程分為兩個模擬階段,第一階段的模擬器稱為模擬器A,第二階段的模擬器稱為模擬器B,在模擬節(jié)點上安裝有模擬器A和模擬器B、Benchmark程序;主控節(jié)點上裝有主配置程序、Trace分布軟件、調(diào)度軟件A和調(diào)度軟件B,調(diào)度軟件A調(diào)度模擬器A的執(zhí)行,調(diào)度軟件B調(diào)度模擬器B的執(zhí)行;
第二步,在主控節(jié)點上執(zhí)行主配置程序,進行全局配置,過程如下
2.1設置參與第一個階段模擬的節(jié)點及其上模擬進程的數(shù)目,每一行存儲一個節(jié)點的信息,生成源節(jié)點列表文件,具體流程是
2.1.1建一個空的源節(jié)點列表文件;
2.1.2初始化計數(shù)器i為1;
2.1.3在源節(jié)點列表文件中新起一行,寫入第i個節(jié)點的主機名HEi;
2.1.4在當前節(jié)點的主機名HEi后寫入該節(jié)點的模擬進程數(shù)目PEi;
2.1.5計數(shù)器i的值增加1,若i≤NE,轉(zhuǎn)2.1.3;否則,關(guān)閉源節(jié)點列表文件,完成源節(jié)點列表文件的創(chuàng)建,NE為參與第一階段并行模擬的節(jié)點數(shù),各節(jié)點編號為1-NE;
2.2設置參與第二個階段模擬的節(jié)點及其上模擬進程的數(shù)目,生成目的節(jié)點列表文件,具體流程是
2.2.1建一個空的目的節(jié)點列表文件;
2.2.2初始化計數(shù)器j為1;
2.2.3在目的節(jié)點列表文件中新起一行,寫入第j個節(jié)點的主機名HSj;
2.2.4在當前節(jié)點的主機名HSj后寫入該節(jié)點上的模擬進程數(shù)目PSj;
2.2.5計數(shù)器j的值增加1,若j≤NS,轉(zhuǎn)2.2.3;否則,關(guān)閉目的節(jié)點列表文件,完成目的節(jié)點列表文件的創(chuàng)建,NS為參與第二階段并行模擬的節(jié)點個數(shù),各節(jié)點編號為1-NS;
2.3創(chuàng)建全局配置文件,流程是
2.3.1創(chuàng)建一個空的全局配置文件;
2.3.2在全局配置文件中記錄源節(jié)點和目的節(jié)點列表文件的存放目錄及名字;
2.3.3設置第一個模擬階段模擬進程到節(jié)點的映射方法為塊分布映射方法,記為BLOCK_MAP,在全局配置文件中記錄映射方法的名稱,用變量MAPE標識;
2.3.4設置第二個模擬階段的模擬進程到節(jié)點的映射方法,映射方法與第一個模擬階段相同,在全局配置文件中記錄映射方法的名稱,用變量MAPS標識;
2.3.5設置Trace文件名的前導標識符,記錄在全局配置文件中;
2.3.6關(guān)閉全局配置文件,完成全局配置;
第三步,由主控節(jié)點上的調(diào)度軟件A調(diào)度模擬節(jié)點上的模擬器A執(zhí)行模擬工作,進行第一個階段的并行模擬
調(diào)度軟件A的流程如下
3.1從全局配置文件獲得源節(jié)點列表文件的存放目錄及名字,以及第一個模擬階段模擬進程到節(jié)點的映射方法MAPE和Trace文件名的前導標識符;
3.2解析源節(jié)點列表文件,獲得參與第一階段模擬的節(jié)點名及其上的模擬進程數(shù);
3.3啟動每個模擬節(jié)點上的模擬進程,即逐個啟動每個參與第一階段模擬的模擬節(jié)點上的PEk個模擬進程,PEk為編號為k的模擬節(jié)點上的模擬進程數(shù)1≤k≤NE;
3.4給每個模擬進程分配不同的邏輯進程號,邏輯進程號從1到
第k個模擬節(jié)點上的PEk個模擬進程的編號分別是
模擬節(jié)點端模擬器A的執(zhí)行過程如下
3.5模擬器A的各個進程并行地參與模擬運行Benchmark程序,進行功能仿真和初步的性能模擬;
3.6每個模擬進程生成一個與本進程的邏輯進程號相同編號的Trace文件,記錄本階段已模擬得到的性能數(shù)據(jù)以及下一階段所需要的性能事件,每個模擬進程產(chǎn)生的Trace文件都存儲在本地磁盤中,即第k個模擬節(jié)點上模擬進程產(chǎn)生的Trace文件記錄在節(jié)點名為HEk的節(jié)點上,Trace文件的命名采用“前導標識符”+“編號”的方式;
第四步,主控節(jié)點上的Trace分布軟件為每個目的模擬節(jié)點生成一個Trace移動腳本,將其發(fā)給目的模擬節(jié)點,目的模擬節(jié)點執(zhí)行Trace移動腳本,從相應的源節(jié)點上將Trace文件移動到本節(jié)點
4.1在主控節(jié)點端執(zhí)行Trace分布軟件,流程如下
4.1.1初始化目的節(jié)點號q為1,置第二個模擬階段的模擬進程數(shù)Trace文件數(shù)如果NNP整除NNT,則置變量TN=DIV(NNT,NNP),變量RN=0;否則,置變量TN=DIV(NNT,NNP)+1,變量RN=MOD(NNT,NNP);
4.1.2創(chuàng)建一個新的Trace移動腳本文件;
4.1.3初始化計數(shù)器m1的值為1;
4.1.4置目的節(jié)點上的邏輯進程號
4.1.5初始化計數(shù)器t的值為1,如果RN等于0,或者RN不等于0且m不大于RN,置IMAX=TN;否則,置IMAX=TN-1;
4.1.6如果RN等于0,或者RN不等于0且m不大于RN,置Trace文件編號NT=TN×(m-1)+t;否則,置Trace文件編號NT=TN×RN+(m-RN-1)(TN-1)+t,初始化計數(shù)器r的值為0,置PT的值為0;
4.1.7計算r=r+1;PT=PT+PEr;
4.1.8如果NT>PT,轉(zhuǎn)4.1.7;否則,轉(zhuǎn)4.1.9;
4.1.9在腳本文件中加入一條命令,功能是使用遠程復制命令將源節(jié)點HEr上編號為NT的Trace文件移動到目的節(jié)點HSq上;
4.1.10如果t<IMAX,置t=t+1,轉(zhuǎn)4.1.6;
4.1.11若m1<PSq,置m1=m1+1,轉(zhuǎn)4.1.4;
4.1.12關(guān)閉Trace移動腳本文件,使用遠程復制命令將該腳本移動到目的節(jié)點HSq上,并在節(jié)點HSq上啟動該腳本文件;
4.1.13若q<NS,置q=q+1,轉(zhuǎn)4.1.2;否則,結(jié)束;
4.2目的模擬節(jié)點端從源節(jié)點上將Trace文件移動到本節(jié)點,方法是每個目的模擬節(jié)點接收主控節(jié)點發(fā)來的Trace移動腳本文件,執(zhí)行該腳本,將第二個模擬階段本節(jié)點上的模擬進程要讀取的Trace文件逐個地從源節(jié)點移動到本節(jié)點上;
第五步,主控節(jié)點上的調(diào)度軟件B調(diào)度模擬節(jié)點上的模擬器B執(zhí)行模擬工作,
調(diào)度軟件B的流程如下
5.1從全局配置文件中獲得目的節(jié)點列表的存放目錄及名字,以及第一個模擬階段模擬進程到節(jié)點的映射方法MAPS;
5.2解析目的節(jié)點列表文件,獲得參與第二階段模擬的各個節(jié)點名及其上的模擬進程數(shù);
5.3啟動每個模擬節(jié)點上的模擬進程,即逐個啟動每個參與第二階段模擬的模擬節(jié)點上的PSq個模擬進程,PSq為編號為q的模擬節(jié)點上的模擬進程數(shù),1≤q≤NS;
5.4給每個模擬進程分配不同的邏輯進程號,邏輯進程號從1到
第q個節(jié)點上的PSq個模擬進程的邏輯進程號分別是
模擬節(jié)點端模擬器B的執(zhí)行過程如下
5.5模擬器B的各個模擬進程并行地從本地磁盤上讀取Trace文件若RN等于0,則其讀取的Trace文件編號是TN*(u-1)+1,TN*(u-1)+2,...,TN*u,u為模擬進程的邏輯進程號,若RN不等于0,則其讀取的Trace文件編號是TN*(u-1)+1,TN*(u-1)+2,...,TN*u,u≤RN,或者TN*RN+(u-RN-1)*(TN-1)+1,TN*RN+(u-RN-1)*(TN-1)+2,...,TN*RN+(u-RN)*(TN-1),
5.6各個模擬進程基于Trace文件中記錄的信息并行地進行模擬,綜合第一個階段的性能數(shù)據(jù),得到最終的模擬預測性能數(shù)據(jù)。
全文摘要
本發(fā)明公布了一種并行模擬中支持蹤跡文件并行輸入輸出的方法,目的是提出一種支持分布式并行Trace文件I/O的方法,提高并行模擬過程中Trace文件I/O的效率和模擬精度。技術(shù)方案是先構(gòu)建運行并行模擬器的由主控節(jié)點和模擬節(jié)點組成的宿主機,在主控節(jié)點上執(zhí)行主配置程序,進行全局配置;然后由主控節(jié)點上的調(diào)度軟件A調(diào)度模擬節(jié)點上的模擬器A執(zhí)行模擬工作,再由主控節(jié)點上的Trace分布軟件為每個目的模擬節(jié)點生成Trace移動腳本并發(fā)給目的模擬節(jié)點,目的模擬節(jié)點執(zhí)行Trace移動腳本,從相應的源節(jié)點上將Trace文件移動到本節(jié)點;最后由主控節(jié)點上的調(diào)度軟件B調(diào)度模擬節(jié)點上的模擬器B執(zhí)行模擬工作。采用本發(fā)明可大幅度提高Trace文件I/O的效率,同時還可提高模擬精度。
文檔編號G06F9/455GK101526915SQ20091004323
公開日2009年9月9日 申請日期2009年4月28日 優(yōu)先權(quán)日2009年4月28日
發(fā)明者車永剛, 徐傳福, 王勇獻, 王正華, 彭宇行 申請人:中國人民解放軍國防科學技術(shù)大學