劉 輝,黃海生
(1.上海電力學(xué)院計(jì)算機(jī)與信息工程學(xué)院,上海 200090;2.華能太倉(cāng)電廠,江蘇太倉(cāng) 215424)
在高性能計(jì)算機(jī)的設(shè)計(jì)過程中,需要對(duì)各個(gè)功能部件分別進(jìn)行測(cè)試和評(píng)估,以改進(jìn)性能,但是對(duì)各個(gè)已經(jīng)生產(chǎn)出來的功能部件進(jìn)行測(cè)試的成本太大,故需要進(jìn)行模擬測(cè)試.本文主要介紹參與多處理器的全系統(tǒng)模擬的組成部件,即互聯(lián)網(wǎng)絡(luò)模擬和評(píng)估環(huán)境,以及兩個(gè)模擬器之間的接口方法,分析了全系統(tǒng)模擬時(shí)遇到的問題以及在模擬精度和模擬時(shí)間之間找到平衡的方法.
本文是在并行系統(tǒng)分布式內(nèi)存的內(nèi)部互聯(lián)網(wǎng)絡(luò)中進(jìn)行模擬的,該網(wǎng)絡(luò)允許計(jì)算結(jié)點(diǎn)以高吞吐量、低延遲的方式互換信息,這種方式可以高效運(yùn)行并行應(yīng)用程序.
本文的模擬環(huán)境是基于分布式內(nèi)存并行機(jī)制,并且用模擬環(huán)境來評(píng)估互聯(lián)網(wǎng)絡(luò)模擬和評(píng)估環(huán)境(InterconnectionNetworkSimulationand Evaluation Environment,INSEE)結(jié)構(gòu)下網(wǎng)絡(luò)互聯(lián)(Interconnection Network,IN)的功能.模擬環(huán)境包括FSIN和TRGEN.FSIN是一個(gè)時(shí)間驅(qū)動(dòng)的、權(quán)重小的,功能靈活齊全的IN模擬器[1],該模擬器可以模擬幾千個(gè)由不同的拓?fù)浣Y(jié)構(gòu)構(gòu)成的、分布式內(nèi)存的并行計(jì)算機(jī)節(jié)點(diǎn);TRGEN模塊可以使用人工合成的消息流量來進(jìn)行全系統(tǒng)模擬,可以在集群上利用MPP技術(shù)實(shí)現(xiàn)模擬結(jié)果.
IN模擬器的一個(gè)實(shí)例可以模擬通過網(wǎng)絡(luò)的信息包流量,而全系統(tǒng)模擬的多個(gè)實(shí)例可以模擬計(jì)算單元的操作細(xì)節(jié).具體操作包括硬件設(shè)備的模擬、操作系統(tǒng)、支持庫(kù),以及并行應(yīng)用等.
(1)NIC(NetworkInterface Card,網(wǎng)絡(luò)接口卡)組件,負(fù)責(zé)與IN設(shè)備通信,這是個(gè)軟件層次上的模塊;
(2)驅(qū)動(dòng)器,這是NIC的驅(qū)動(dòng)程序,是模擬器的核心部分;
(3)堆棧協(xié)議,提供對(duì)IN部件的高層次訪問,在模擬器的核心部分;
(4)支持庫(kù),提供并行計(jì)算的MPIAP接口和必需的運(yùn)行時(shí)間支持,位于堆棧協(xié)議的頂部;
(5)并行應(yīng)用進(jìn)程.
此外,模擬環(huán)境還包括一個(gè)同步模塊——使所有的模塊提前同步,一個(gè)信息流量管理模塊——允許信息在結(jié)點(diǎn)和IN模擬器之間互換信息,如果需要還要完成信息的翻譯.
當(dāng)IN系統(tǒng)中資源的使用情況達(dá)到其極限時(shí),就會(huì)發(fā)生網(wǎng)絡(luò)阻塞,阻塞會(huì)引起網(wǎng)絡(luò)吞吐量的下降和延遲的增加.阻塞控制機(jī)制通常在網(wǎng)絡(luò)剛出現(xiàn)阻塞信號(hào)時(shí)就立即限制信息包的發(fā)送.通常探測(cè)阻塞信號(hào)和避免阻塞的方法有多種,基于全局知識(shí)的如RECN,基于本地路由緩沖信息的如LBR.IBM的原環(huán)形網(wǎng)絡(luò)使用的機(jī)制是傳送中的消息優(yōu)先[2],我們稱之為IPR.
本文使用的兩種阻塞控制機(jī)制為IPR和LBR,兩者都基于本地可用的信息,具有良好的執(zhí)行性能和最小的實(shí)現(xiàn)代價(jià).在使用IPR時(shí),優(yōu)先權(quán)賦予正在傳送中的消息,以數(shù)字P表示優(yōu)先權(quán)的大小.在這些周期中,一個(gè)新的消息包只有在確認(rèn)不會(huì)與當(dāng)前網(wǎng)絡(luò)中已有的消息發(fā)生競(jìng)爭(zhēng)時(shí)才發(fā)送新的信息,P的值可以從零變化到1,取零值表示沒有限制,取1表示正在傳送的流量有絕對(duì)的優(yōu)先權(quán).當(dāng)?shù)鼐彌_限制LBR機(jī)制主要用于特定的自適應(yīng)路由來避免逃逸網(wǎng)絡(luò)中死鎖的發(fā)生,LBR將冒泡規(guī)則擴(kuò)充到所有新產(chǎn)生的到達(dá)網(wǎng)絡(luò)的信息包[1].因此,一個(gè)消息包只有在發(fā)送操作可以確保與虛擬通道相關(guān)的傳送緩沖區(qū)有B個(gè)消息包空間的情況下,才能發(fā)送到自適應(yīng)虛擬通道.參數(shù)B是預(yù)留給傳送中的流量的緩沖區(qū)數(shù)目,換言之,處理阻塞的效果是通過緩沖區(qū)利用率來評(píng)價(jià)的.
模擬器的各個(gè)不同的模擬部件有不同的模擬時(shí)鐘,有不同的時(shí)間單元,并且有可能有不同的機(jī)制來使用這些時(shí)鐘.例如,Simics是事件驅(qū)動(dòng)的,并且在每一個(gè)CPU時(shí)鐘周期內(nèi)都要探測(cè)時(shí)間;INSEE是周期驅(qū)動(dòng)的,而且時(shí)間單元是循環(huán)的[3].因此,需要制定一套機(jī)制來協(xié)調(diào)和同步不同部件的時(shí)鐘,這套機(jī)制可以協(xié)調(diào)模擬器在同一個(gè)空間中的計(jì)算部件和IN部件,就像使用同一個(gè)全局時(shí)鐘一樣.模擬環(huán)境中的同步模塊就用來實(shí)現(xiàn)該功能.
同步模塊的第一種工作模式是串行地進(jìn)行模擬操作.計(jì)算單元的模擬器在給定的時(shí)間片內(nèi)提前執(zhí)行,然后停下,而IN模擬器開始操作,然后模擬相同的時(shí)間,再停下,然后計(jì)算單元模擬器重新開始模擬操作.該模擬器不會(huì)并行工作,若計(jì)算單元上產(chǎn)生了一個(gè)消息,它會(huì)加上時(shí)間戳后存儲(chǔ)在接口隊(duì)列上.然后IN模擬器會(huì)在相同的時(shí)間片內(nèi)開始模擬,先對(duì)接口隊(duì)列進(jìn)行處理,當(dāng)IN模擬器探測(cè)到有消息傳送到計(jì)算單元時(shí),它就會(huì)將這個(gè)時(shí)間存儲(chǔ)在接口隊(duì)列中[2].計(jì)算單元不會(huì)對(duì)過時(shí)的消息進(jìn)行處理,因此所有在給定時(shí)間片內(nèi)接收的消息只在下一個(gè)時(shí)間片的起始時(shí)刻進(jìn)行處理.換言之,消息的處理需要等待,等待時(shí)間從零到一個(gè)時(shí)間片的間隔不等.
同步模式的第二種工作模式是計(jì)算單元和IN模塊并行工作.在一個(gè)時(shí)間片內(nèi),兩個(gè)單元同時(shí)處理各自的任務(wù),處理完成后兩個(gè)模擬器互換事件隊(duì)列,計(jì)算單元模擬器將在一個(gè)時(shí)間片內(nèi)產(chǎn)生的消息傳送給IN模擬器,IN模擬器把到達(dá)目的計(jì)算單元的消息傳送給計(jì)算單元[4].該模式達(dá)到了并行的目的,但引進(jìn)了兩個(gè)人為的延遲:信息的進(jìn)入要延遲到下一個(gè)時(shí)間片的開始;消息傳送延遲的影響依賴于時(shí)間片的長(zhǎng)短.此外,消息進(jìn)入IN模擬器的方式是以突發(fā)的形式在下一個(gè)時(shí)間片的開始時(shí)刻進(jìn)入的,這可能會(huì)引起不必要的資源競(jìng)爭(zhēng).
在這兩種模式中,時(shí)間片越短小,精確性越高,但在執(zhí)行的過程中要不斷地暫停模擬器的操作.時(shí)段較長(zhǎng)的時(shí)間片可以提高實(shí)驗(yàn)速度,但會(huì)引入人為的延遲,這些延遲將影響實(shí)驗(yàn)結(jié)果.
測(cè)試系統(tǒng)由64個(gè)計(jì)算節(jié)點(diǎn)通過環(huán)形網(wǎng)絡(luò)連接起來.所有的同步時(shí)間片是10 000∶200,即200個(gè)INSEE周期與10 000個(gè)simics周期相等,這個(gè)同步時(shí)間片可以產(chǎn)生128 Mb/s的帶寬,大致與快速以太網(wǎng)的速度相當(dāng).
在實(shí)驗(yàn)中,假定P=1(最大權(quán)限的優(yōu)先權(quán)),B=3(這表示只有在隊(duì)列是空或者基本為空的情況下才向自適應(yīng)通道發(fā)送消息).本實(shí)驗(yàn)使用的應(yīng)用程序是NAS并行標(biāo)準(zhǔn)A類的一個(gè)子集,該子集經(jīng)常用來作為對(duì)多處理器性能進(jìn)行評(píng)估的并行應(yīng)用程序.為了便于描述,我們只集中討論BT,CG,IS 3個(gè)基準(zhǔn).BT是偏向于計(jì)算性的基準(zhǔn),它可以演示網(wǎng)絡(luò)層次是如何不會(huì)影響執(zhí)行時(shí)間的,而CG和IS是專供通信的基準(zhǔn),利用它們很容易看到網(wǎng)絡(luò)的變化對(duì)實(shí)驗(yàn)結(jié)果的影響.
本文利用simics來模擬計(jì)算節(jié)點(diǎn)的工作,而計(jì)算結(jié)點(diǎn)是通過網(wǎng)絡(luò)來交換信息包的.交換信息包的方式采用重用協(xié)議堆棧和NIC驅(qū)動(dòng)程序.這種方式可以增加與流管理模塊的交互能力[5].同步機(jī)制采用網(wǎng)絡(luò)模擬器和simics,以鎖定步驟的模式并行工作.模擬環(huán)境使用8個(gè)simics實(shí)例,每個(gè)實(shí)例模擬8個(gè)節(jié)點(diǎn),共有64個(gè)模擬節(jié)點(diǎn).每個(gè)節(jié)點(diǎn)運(yùn)行的操作系統(tǒng)是red hat 7.3,系統(tǒng)配置MPI并行接口函數(shù),由于我們使用的是類以太網(wǎng)的NIC,故可以在低端協(xié)議堆棧上使用TCPI/IP或UDP/IP協(xié)議.
在多處理器上將一個(gè)消息傳送到另一個(gè)進(jìn)程需要幾個(gè)步驟.首先,消息被分割成網(wǎng)絡(luò)幀,這些幀根據(jù)使用的協(xié)議堆棧來封裝不同的消息頭部.接著,這些幀被傳送到NIC驅(qū)動(dòng)器上,然后送往IN模擬器,不是送到真正的IN模擬器,流量產(chǎn)生器把幀從模擬的硬件NIC分離開來,然后送往INSEE.流量產(chǎn)生器負(fù)責(zé)發(fā)送和接收從INSEE的TrGen模塊來的幀.就像我們使用集群來模擬多處理器一樣,流量產(chǎn)生器將消息幀發(fā)送至計(jì)算機(jī)來執(zhí)行[6].
TrGen負(fù)責(zé)分配FSIN的工作負(fù)載,F(xiàn)SIN是INSEE的IN模擬器核心[7].TrGen接收的消息幀進(jìn)一步被分割成消息包,然后送到FSIN路由器的接收隊(duì)列中.當(dāng)同步服務(wù)器發(fā)送消息告訴FSIN開始工作時(shí),TrGen就開始模擬消息包是如何在網(wǎng)絡(luò)之間傳送的,以及如何把它們送到目的地的.一旦一個(gè)幀的所有消息包都到達(dá)目的地后,TrGen就將消息包組合成一個(gè)消息幀,然后再將這個(gè)消息幀送至對(duì)應(yīng)的目的結(jié)點(diǎn)的流量產(chǎn)生器中.
流量產(chǎn)生器將到達(dá)的消息幀送往模擬硬件NIC,同步消息使simics重新啟動(dòng),到達(dá)的消息幀會(huì)使模擬硬件發(fā)生中斷.然后,對(duì)消息幀進(jìn)行處理,即去掉協(xié)議堆棧的頭部,重組消息,并將其送至應(yīng)用程序進(jìn)程.
若要在每個(gè)simics中運(yùn)行幾個(gè)計(jì)算結(jié)點(diǎn),則要求有兩個(gè)不同的同步機(jī)制,第一個(gè)同步機(jī)制用來協(xié)調(diào)所有的simics內(nèi)的計(jì)算結(jié)點(diǎn)[8],即每個(gè)節(jié)點(diǎn)運(yùn)行一定數(shù)目的周期,然后下一個(gè)結(jié)點(diǎn)開始運(yùn)行,如此以時(shí)間片輪轉(zhuǎn)的形式循環(huán)執(zhí)行;第二個(gè)同步機(jī)制用來協(xié)調(diào)計(jì)算節(jié)點(diǎn)和INSEE,在INSEE中有一個(gè)同步服務(wù)器,在simics實(shí)例中有一個(gè)同步客戶機(jī).當(dāng)所有的simics實(shí)例中的節(jié)點(diǎn)有一個(gè)完整的時(shí)間片時(shí),不同客戶機(jī)就停止那個(gè)實(shí)例,然后發(fā)送一個(gè)時(shí)間戳信號(hào)到同步服務(wù)器,請(qǐng)求運(yùn)行下一個(gè)時(shí)間片.在一個(gè)運(yùn)行時(shí)間片內(nèi),所有已經(jīng)產(chǎn)生的網(wǎng)絡(luò)流量信息就在接收隊(duì)列中等待.
當(dāng)同步服務(wù)器接收到來自所有的simics實(shí)例的時(shí)間戳信號(hào)后,INSEE就同意FSIN來運(yùn)行一個(gè)時(shí)間片,并把接收到的信息包路由到目的FSIN路由器[9].當(dāng)FSIN結(jié)束自己的時(shí)間片后,就發(fā)送一個(gè)多點(diǎn)傳送的時(shí)間戳信號(hào)至所有的同步客戶機(jī),允許它們重新開始一個(gè)新的計(jì)算節(jié)點(diǎn)的運(yùn)行.
本實(shí)驗(yàn)共重復(fù)了10次,表中只顯示10次的平均值.
在MPICH環(huán)境中,在使用沒有任何網(wǎng)絡(luò)阻塞控制的實(shí)驗(yàn)情況下,應(yīng)用程序的執(zhí)行時(shí)間受到TCP誤估時(shí)間間隔的負(fù)面影響,因?yàn)樗|發(fā)了重新傳送協(xié)議并持續(xù)觸發(fā)了慢啟動(dòng)協(xié)議,這就使得飽和網(wǎng)絡(luò)中的整個(gè)執(zhí)行時(shí)間被延長(zhǎng).而在執(zhí)行IPR或LBR時(shí),TCP可以自行決定時(shí)間間隔,這有助于減少重新傳送的次數(shù),可以減少慢啟動(dòng)的發(fā)生.因此,IPR和LBR有兩個(gè)相近的效果:一是在多數(shù)應(yīng)用程序中,通過網(wǎng)絡(luò)的消息包的流量可以加速進(jìn)行;二是在所有的情況下,IPR和LBR可以幫助TCP讓應(yīng)用程序達(dá)到更高的吞吐量.實(shí)驗(yàn)的結(jié)果如表1所示.
表1 使用阻塞控制機(jī)制LBR和IPR時(shí)的模擬執(zhí)行時(shí)間 ms
一旦端到端節(jié)點(diǎn)與網(wǎng)絡(luò)阻塞控制機(jī)制之間的接口建立起來后,就可以用實(shí)驗(yàn)來評(píng)估這些阻塞控制機(jī)制對(duì)不同的網(wǎng)絡(luò)速度的影響.我們模擬了網(wǎng)速分別是128 Mb/s和1 280 Mb/s的實(shí)驗(yàn),結(jié)果如表2所示.
表2 不同網(wǎng)速下的模擬執(zhí)行時(shí)間
若無阻塞控制機(jī)制,則提高網(wǎng)速可使TCP平臺(tái)性能下降;若網(wǎng)上信息的流量不是很大而網(wǎng)速很快,則TCP可以正確地計(jì)算其計(jì)時(shí)器,并以高吞吐量傳送流量.然而在這個(gè)階段,若出現(xiàn)爭(zhēng)奪網(wǎng)絡(luò)資源的情況,則消息包的傳送就會(huì)變慢,甚至有些消息包會(huì)丟失,但這并不是真正的丟失,僅是從TCP的角度來看,消息到達(dá)得太晚了.延遲到達(dá)的消息會(huì)觸發(fā)TCP的流量控制和錯(cuò)誤恢復(fù)機(jī)制.而這種觸發(fā)機(jī)制會(huì)降低網(wǎng)絡(luò)性能.
在連接兩個(gè)不同的模擬器時(shí),必須選擇合適的同步機(jī)制,而時(shí)間片間隔不僅影響精度,還影響模擬的性能.時(shí)間片越長(zhǎng),延遲就越大,導(dǎo)致精度降低.此外,每當(dāng)模擬器進(jìn)行同步時(shí),就會(huì)引起延遲.因此,時(shí)間片間隔長(zhǎng),啟動(dòng)模擬器的實(shí)際時(shí)間減少,模擬性能就好;時(shí)間片間隔越短,模擬性能越差,但可以提高模擬精度.
全系統(tǒng)模擬是一個(gè)非常復(fù)雜的工作,若模擬的不是一臺(tái)電腦而是網(wǎng)絡(luò)中的多個(gè)計(jì)算機(jī)時(shí),復(fù)雜性會(huì)增加,尤其在模擬的網(wǎng)絡(luò)和接口與傳統(tǒng)的LAN網(wǎng)絡(luò)設(shè)備不同時(shí)更加復(fù)雜.
本文對(duì)IN進(jìn)行了全系統(tǒng)模擬,該模擬需要很多的部件,有時(shí)需要重用模擬環(huán)境.重用機(jī)制可以減少工作量和錯(cuò)誤的發(fā)生,但是也會(huì)帶來一些風(fēng)險(xiǎn),如精度的降低和模擬結(jié)果的無效等.模擬環(huán)境的各個(gè)部件之間的同步也需要認(rèn)真設(shè)計(jì),這樣可以找出模擬精度和運(yùn)行時(shí)間之間的折中點(diǎn).通過實(shí)驗(yàn)結(jié)果可知,協(xié)議堆棧、MPI的實(shí)現(xiàn)、驅(qū)動(dòng)程序和同步模型等因素都會(huì)影響實(shí)驗(yàn)結(jié)果.
[1]RIDRUEJO Fco Javier,JOSE Miguel-Alonso,JAVIER Navaridas.Full-system simulation of distributed memory multicomputers[J].Cluster Compute,2009,12(1):309-322.
[2]PFISTER G F.Aspects of the Infini Band(tm)architecture[C]//Third IEEE InternationalConference on ClusterComputing(CLUSTER’01),2001:369-377.
[3]BINKERT N L Dreslinski.The M5 simulator:modeling networked systems[J].IEEE Micro,2006,26(4):52-60.
[4]BODEN N J Cohen.A gigabit per second local area network[J].IEEE Micro,1995,15(1):29-36.
[5]GARCíA P J Quile.Scalable congestion management for interconnection networks[J].IEEE Micro 2006,26(5):52-66.
[6]IBM.IBM full-system simulator for the cell broadband engine processor[CP/OL].[2011-12-1]http://alphaworks.ibm.com/tech/cellsystemsim.
[7]SKLAVOS N,KOUFOPAVLOU O.Architectures and VLSI implementations of the AES-Proposal rijndael[J].WEEE Transactions on Computers,2002,51(12):1 454-1 459.
[8]SMITH T F,WATERMAN M S.Identification of common molecular subsequences[J].J.Molecular Biology,1981,2(1):195-197.
[9]AMZA C,COX A,DWARKADAS S.Shared memory computing on networks of workstation[J].IEEE Computer,1996,29(2):18-28.