劉 露,黃海于
(西南交通大學 信息科學與技術學院,四川 成都 611756)
隨著計算機仿真技術被廣泛應用到科研和開發(fā)領域,仿真任務的計算量變得也越來越大,對仿真技術的高效性、精確性、可靠性等要求也越來越高,因此與分布式仿真有關的技術的研究也成為當前仿真領域熱門的研究方向之一[1].分布式體系結構給仿真帶來便利的同時,也帶來了一些影響仿真系統(tǒng)整體性能至關重要的因素[2].在分布式構架下,通訊的使用引入了一些必須加以重新考慮的方面[3],包括系統(tǒng)體系結構、時間延遲、通訊調度、系統(tǒng)的可重構性、維護靈活性、容錯能力、模塊間同步以及系統(tǒng)整體性能的保證等[4].
本研究的高速列車數(shù)字化仿真平臺是基于C/S模式的分布式仿真體系結構,其主要的功能模塊包括主控模塊、前處理模塊、耦合計算模塊、后處理模塊和系統(tǒng)管理模塊[5].為了保證多子系統(tǒng)耦合后的整體仿真效率,仿真平臺部署在由高速網(wǎng)絡連接的分布式計算環(huán)境中.
高速列車數(shù)字化仿真過程中,數(shù)據(jù)存儲扮演著非常重要的角色,它為仿真過程分析提供了必需的數(shù)據(jù),為仿真結果的事后測試與評估提供了極大的幫助[6].該仿真平臺的仿真過程監(jiān)視子系統(tǒng)用于對仿真過程數(shù)據(jù)的監(jiān)視,其主要功能是從數(shù)據(jù)庫獲取仿真過程中產生的數(shù)據(jù),并通過獨立的計算過程監(jiān)視系統(tǒng)對這些數(shù)據(jù)進行圖形化展示,以便及時發(fā)現(xiàn)計算中出現(xiàn)的問題,提高應用效率[5].
高速列車數(shù)字化仿真平臺是國家支撐計劃項目,本研究主要完成了仿真平臺架構的創(chuàng)建,承擔調度器、耦合器、代理子系統(tǒng)、圖形建模和數(shù)據(jù)監(jiān)控等幾個子系統(tǒng)的研究.
本研究從性能提升的角度對仿真平臺的數(shù)據(jù)存儲進行了探討.為提高仿真數(shù)據(jù)的傳輸效率,仿真平臺采用UDP 通信.經過測試發(fā)現(xiàn),通過不同子系統(tǒng)存儲仿真過程產生的數(shù)據(jù)對平臺仿真性能的影響是不同的.其對系統(tǒng)仿真性能的影響主要體現(xiàn)在仿真過程數(shù)據(jù)的產生、傳輸、處理與存儲等方面.
仿真過程產生的數(shù)據(jù)大部分來源于分布在不同計算資源的任務執(zhí)行模塊(以下簡稱執(zhí)行機),為了使其他執(zhí)行機獲得下一步仿真所需要的計算數(shù)據(jù),這些執(zhí)行機將每一步仿真的結果發(fā)送給耦合器,耦合器根據(jù)耦合關系表將所收到的數(shù)據(jù)發(fā)送給需要這些數(shù)據(jù)的執(zhí)行機.一個完整的仿真計算過程具體描述如下:
1)數(shù)據(jù)的產生.當耦合器代理啟動耦合器、計算資源代理啟動任務執(zhí)行模塊之后,執(zhí)行機執(zhí)行每一步數(shù)據(jù)的仿真計算,并將計算結果打包,以備發(fā)送給耦合器進行數(shù)據(jù)分發(fā),這個過程稱之為數(shù)據(jù)的產生.
2)數(shù)據(jù)的傳輸.執(zhí)行機把每一步仿真過程數(shù)據(jù)傳輸給耦合器,耦合器又將每一步仿真過程數(shù)據(jù)傳輸給執(zhí)行機,此過程為仿真過程數(shù)據(jù)的傳輸.
3)數(shù)據(jù)的處理.執(zhí)行機將計算出的仿真結果數(shù)據(jù)進行打包以備發(fā)送,此過程為仿真過程數(shù)據(jù)的打包處理;系統(tǒng)中任何一個子系統(tǒng)將接收到的數(shù)據(jù)包進行拆包,得到可用的仿真過程數(shù)據(jù),此過程為仿真過程數(shù)據(jù)的解析處理;耦合器通過計算將收到的數(shù)據(jù)傳送給執(zhí)行機,此過程為仿真過程數(shù)據(jù)的分發(fā)處理.
4)數(shù)據(jù)的存儲.將仿真過程數(shù)據(jù)存入數(shù)據(jù)庫中,此過程為仿真過程數(shù)據(jù)的存儲.
由于本仿真平臺不同模塊在執(zhí)行時可能分布在不同的計算資源上,其數(shù)據(jù)發(fā)送、接收及處理可以相互獨立,并行進行.同時執(zhí)行機、耦合器、數(shù)據(jù)監(jiān)控3個模塊之間的數(shù)據(jù)交互也不是絕對串行的,因此仿真一步所需要的時間并不是單純將每一個過程所消耗的時間進行求和得到,而是要進行嚴密的邏輯分析.另一方面,對于分布式系統(tǒng),沒有一個全局的時鐘,大多數(shù)情況下需要通過事件發(fā)生的先后順序,引入“邏輯時鐘”,然后由邏輯時鐘提供邏輯時間保證所有進程保持事件前后的一致性[7].
結合高速列車數(shù)字化仿真平臺的體系架構和具體工作原理,平臺可以采用耦合器存儲、執(zhí)行機存儲和數(shù)據(jù)監(jiān)控子系統(tǒng)存儲3 種方式存儲仿真過程數(shù)據(jù).主要參數(shù)定義如下:
1)Tpi[j].表示執(zhí)行機i 在進行第j 步計算時所需時間.
2)Tbci[j].表示耦合器對執(zhí)行機i 第j 步仿真輸出數(shù)據(jù)進行分發(fā)計算處理所需時間.
3)Tbei[j].表示執(zhí)行機i 對第j 步仿真輸出數(shù)據(jù)進行打包處理時所需時間.
4)Tuci[j].表示耦合器對執(zhí)行機i 的第j 步仿真輸出數(shù)據(jù)進行解析處理時所需時間.
5)Tumi[j].表示數(shù)據(jù)監(jiān)控對執(zhí)行機i 的第j 步仿真輸出數(shù)據(jù)進行解析處理時所需時間.
6)Teci[j].表示執(zhí)行機i 將第j 步仿真輸出數(shù)據(jù)發(fā)送到耦合器時所需時間,該時間還包括數(shù)據(jù)在發(fā)送隊列等待的時間(該時間與耦合器接收執(zhí)行機i第j 步仿真數(shù)據(jù)所需時間基本相同).
7)Tcei[j].表示耦合器將第j 步仿真輸入數(shù)據(jù)發(fā)送到執(zhí)行機i 所需時間,該時間還包括數(shù)據(jù)在發(fā)送隊列中等待的時間(該時間與執(zhí)行機i 接收耦合器發(fā)送給該執(zhí)行機第j 步仿真輸入數(shù)據(jù)所需時間基本相同).
8)Temi[j].表示執(zhí)行機i 將第j 步仿真輸出數(shù)據(jù)發(fā)送到數(shù)據(jù)監(jiān)控子系統(tǒng)所需時間,該時間還包括數(shù)據(jù)在發(fā)送隊列中等待的時間(該時間與數(shù)據(jù)監(jiān)控接收執(zhí)行機i 第j 步仿真輸出數(shù)據(jù)所需時間基本相同).
9)Twei[j].表示執(zhí)行機i 將第j 步仿真輸出數(shù)據(jù)存儲到數(shù)據(jù)庫所需時間,該時間還包括數(shù)據(jù)在存儲隊列中等待的時間.
10)Twci[j].表示耦合器將執(zhí)行機i 的第j 步仿真輸出數(shù)據(jù)存儲到數(shù)據(jù)庫所需時間,該時間還包括數(shù)據(jù)在存儲隊列中等待的時間.
11)Twmi[j].表示數(shù)據(jù)監(jiān)控將執(zhí)行機i 的第j 步仿真輸出數(shù)據(jù)存儲到數(shù)據(jù)庫所需時間,該時間還包括數(shù)據(jù)在存儲隊列中等待的時間.
1.2.1 耦合器存儲仿真過程數(shù)據(jù)對仿真性能的影響.
耦合器是耦合數(shù)據(jù)的處理和收發(fā)集散中心,所有耦合數(shù)據(jù)都向其匯集并經其分發(fā)到各子系統(tǒng)[6].執(zhí)行機和耦合器之間的數(shù)據(jù)交互方式如圖1 所示.
圖1 任務執(zhí)行機和耦合器的交互關系
由圖1 可知,每一個執(zhí)行機和耦合器都是一個獨立執(zhí)行的進程,因此對數(shù)據(jù)的處理都是獨立進行的,但是耦合器計算分發(fā)數(shù)據(jù)時采用串行方式.
根據(jù)仿真計算過程中數(shù)據(jù)歷經的4 個過程,采用耦合器來存儲一步仿真過程數(shù)據(jù)需要耗費的時間由下面4 個部分構成:
1)執(zhí)行機計算第j 步仿真輸出數(shù)據(jù)所需時間Tpi[j].
2)耦合器處理第j 步數(shù)據(jù)所需時間Tdci[j],該時間包括Tuci[j]、Tbei[j]及Tbci[j].該系統(tǒng)中,數(shù)據(jù)打包、數(shù)據(jù)解析及數(shù)據(jù)分發(fā)處理均通過多線程并行處理,運行在不同的CPU 核上,因此Tdci[j] =max(Tbei[j],Tuci[j],Tbci[j]).
4)耦合器將第j 步數(shù)據(jù)存儲到數(shù)據(jù)庫所需時間Twci[j].
上述過程中,有些操作是在執(zhí)行機上完成的,有些操作是在耦合器上完成的.二者分布在不同的計算機上,因此可以并行執(zhí)行.即使運行在同一臺計算機上,由于數(shù)據(jù)的處理可以通過多個CPU 核分別執(zhí)行,因此也可以并行執(zhí)行.數(shù)據(jù)的收發(fā)以及數(shù)據(jù)的處理也可以并行執(zhí)行.所以耦合器完成一步數(shù)據(jù)仿真及存儲所需時間為,
其中,N 為執(zhí)行機的個數(shù).可以看出,當任務增多時,執(zhí)行機之間耦合關系復雜程度會相應增加,由于存儲數(shù)據(jù)參與到仿真過程,數(shù)據(jù)存儲的耗費也會增加.
1.2.2 執(zhí)行機存儲仿真過程數(shù)據(jù)對仿真性能的影響.
執(zhí)行機用于各子系統(tǒng)的仿真計算,由各個計算模塊構成,包括車輛動力學、線路動力學、弓網(wǎng)動力學、牽引供電及傳動和空氣動力學耦合計算子模塊.執(zhí)行機和數(shù)據(jù)庫之間的數(shù)據(jù)交互方式如圖2 所示.
圖2 任務執(zhí)行機和數(shù)據(jù)庫的交互關系
由圖2 可知,執(zhí)行機計算產生某一步仿真過程數(shù)據(jù)之后,在數(shù)據(jù)打包之前即可存入數(shù)據(jù)庫中,而耦合器無需解析即可轉發(fā)數(shù)據(jù)包.采用執(zhí)行機來存儲一步仿真過程數(shù)據(jù)的時間相較于耦合器存儲將會節(jié)約耦合器解析第j 步數(shù)據(jù)的數(shù)據(jù)包所需時間Tuci[j].
上述過程中,執(zhí)行機向數(shù)據(jù)庫存儲仿真結果數(shù)據(jù)與執(zhí)行機計算和收發(fā)數(shù)據(jù)均可以通過多個CPU核分別執(zhí)行,因此可以并行執(zhí)行.所以,執(zhí)行機完成一步數(shù)據(jù)仿真及存儲所需時間為,其中,N 為執(zhí)行機的個數(shù).存儲數(shù)據(jù)過程中無需解析數(shù)據(jù),可直接存儲,因此節(jié)約了仿真時間消耗.
1.2.3 數(shù)據(jù)監(jiān)控子系統(tǒng)存儲仿真過程數(shù)據(jù)的對仿真性能的影響.
數(shù)據(jù)監(jiān)控子系統(tǒng)用于對計算過程進行實時監(jiān)控,對異常情況進行提示或警告,使計算過程透明化[2].數(shù)據(jù)監(jiān)控子系統(tǒng)和執(zhí)行機之間的交互關系如圖3 所示.
圖3 數(shù)據(jù)監(jiān)控子系統(tǒng)和執(zhí)行機之間的數(shù)據(jù)交互關系
由圖3 看出,執(zhí)行機和數(shù)據(jù)監(jiān)控子系統(tǒng)之間的數(shù)據(jù)交互方式是單向的,不影響仿真過程的進行.執(zhí)行機向數(shù)據(jù)監(jiān)控子系統(tǒng)發(fā)送第j 步數(shù)據(jù)所需時間Temi[j]和數(shù)據(jù)監(jiān)控子系統(tǒng)存儲第j 步數(shù)據(jù)所需時間Twmi[j]可不計入仿真一步的總時間中,因為該過程不影響仿真過程的進行.因此,由數(shù)據(jù)監(jiān)控子系統(tǒng)完成一步仿真所需時間為,
其中,N 為執(zhí)行機個數(shù).當任務增多時,仿真時間消耗幾乎不受數(shù)據(jù)存儲的影響.
由于仿真過程中,基于計算機硬件和軟件性能、網(wǎng)絡環(huán)境的不確定性,要精確比較每種存儲方式的時間消耗幾乎是不可能的.但是本研究從每種存儲方式的時間復雜度方面著手分析,同樣能夠比較不同存儲方式下的仿真過程時間消耗情況,且都以執(zhí)行機、耦合器、數(shù)據(jù)監(jiān)控所處計算機軟硬件性能穩(wěn)定,并處于同一網(wǎng)絡環(huán)境中為研究前提.
前節(jié)已分析了不同存儲方式對平臺性能的影響,針對3 種存儲方式中仿真過程數(shù)據(jù)歷經的4 個過程,可以得出以下理論結果:
1)耦合器存儲一步數(shù)據(jù)額外多出了數(shù)據(jù)存儲所需時間,因此耦合器完成一步仿真所需的時間明顯大于執(zhí)行機和數(shù)據(jù)監(jiān)控子系統(tǒng);
2)執(zhí)行機存儲一步數(shù)據(jù)與計算一步數(shù)據(jù)可以并行完成,但處于同一計算資源上勢必會相互產生降低效率的后果,從而影響執(zhí)行機的計算性能;
3)數(shù)據(jù)監(jiān)控子系統(tǒng)存儲一步數(shù)據(jù)的過程中,執(zhí)行機會額外產生一個向數(shù)據(jù)監(jiān)控子系統(tǒng)發(fā)送數(shù)據(jù)的過程,但一個數(shù)據(jù)包發(fā)送行為所需的時間遠遠小于執(zhí)行機計算一步數(shù)據(jù)所需的時間.
本研究中對于仿真性能的評價指標是基于仿真速率的,而仿真速率的定義為仿真總步數(shù)與仿真時間的比值.綜上可知,對于采用數(shù)據(jù)監(jiān)控子系統(tǒng)存儲仿真結果數(shù)據(jù)時在本研究中是非常理想的數(shù)據(jù)存儲方式.
高速列車數(shù)字化仿真平臺上,以仿真速率V(步/s)作為評估指標,采用UDP 作為傳輸協(xié)議,用Oracle 磁盤數(shù)據(jù)庫作為存儲介質,以車輛動力學、線路動力學、弓網(wǎng)動力學和牽引供電耦合計算子模塊作為任務執(zhí)行模塊,對采用不同子系統(tǒng)存儲仿真過程數(shù)據(jù)的實例進行測試.
硬件支持,基于Intel(R)Core(TM)2 Quad CPU Q9500 @ 2.83 GHz 雙核處理器,內存8 G,64 或者32 位Windows 操作系統(tǒng)PC 機4 ~6 臺,基于Linux/Unix 操作系統(tǒng)高性能計算機集群;軟件支持,基于C/S 架構的Oracle 11.2 磁盤數(shù)據(jù)庫系統(tǒng);網(wǎng)絡支持,主網(wǎng)絡為千兆網(wǎng),其中計算網(wǎng)絡采用Infiniband 網(wǎng),帶寬為40 GB/s,網(wǎng)絡狀態(tài)良好;參與模塊,車輛,線路,弓網(wǎng),牽引供電;測試組合1,車輛—線路組成兩模塊測試;測試組合2,車輛—線路—弓網(wǎng)—牽引供電組成四模塊測試;測試次數(shù),每組測試為10 次.
測試采取了增加執(zhí)行機的方式來測試不同的子系統(tǒng)存儲仿真結果數(shù)據(jù)對仿真速率的影響.
參與測試的模塊輸入?yún)?shù)設置如下:
全局仿真參數(shù):總積分時間=200 000 步,耦合步長=0.00100.參與仿真的各模塊的仿真參數(shù)設置如表1 所示.
經過仿真實驗測試,耦合器、執(zhí)行機、數(shù)據(jù)監(jiān)控子系統(tǒng)在不存儲數(shù)據(jù)庫時仿真速率是一樣的,基本保持在81 步/s 左右.
車線耦合模式下,車輛子系統(tǒng)、線路子系統(tǒng)、耦合器和數(shù)據(jù)監(jiān)控子系統(tǒng)分別部署在不同的計算資源上,在網(wǎng)絡狀態(tài)良好的同一網(wǎng)絡環(huán)境中進行仿真測試.采用不同系統(tǒng)以磁盤數(shù)據(jù)庫為存儲介質的仿真速率如圖4 所示.
表1 全局仿真參數(shù)
圖4 車—線耦合下不同系統(tǒng)以磁盤數(shù)據(jù)庫為存儲介質的仿真速率(步/s)
圖4 中,縱軸表示仿真速率V,單位為步/s,橫軸表示仿真次數(shù).在數(shù)據(jù)存儲到數(shù)據(jù)庫的情況下,耦合器的平均仿真速率為1.6 步/s,執(zhí)行機平均仿真速率為2.5 步/s,數(shù)據(jù)監(jiān)控子系統(tǒng)平均仿真速率為80 步/s.由數(shù)據(jù)監(jiān)控子系統(tǒng)存儲數(shù)據(jù)的仿真速率比較接近于不寫數(shù)據(jù)庫,而且遠大于執(zhí)行機和耦合器.在使用耦合器和執(zhí)行機存儲數(shù)據(jù)的時候,一方面要計算數(shù)據(jù),一方面要存儲數(shù)據(jù),因此時間耗費較大,降低了仿真性能,數(shù)據(jù)監(jiān)控子系統(tǒng)不參與數(shù)據(jù)計算,因此對仿真過程基本沒有影響.
在車線牽弓耦合模式下,各個任務模塊、耦合器、數(shù)據(jù)監(jiān)控子系統(tǒng)分別部署在不同的計算資源上,在網(wǎng)絡狀態(tài)良好的同一網(wǎng)絡環(huán)境中進行仿真測試.不同系統(tǒng)以磁盤數(shù)據(jù)庫為存儲介質的仿真速率如圖5 所示.
圖5 車—線—牽—弓耦合下不同系統(tǒng)以磁盤數(shù)據(jù)庫為存儲介質的仿真速率(步/s)
由圖5 可以得出,在數(shù)據(jù)存儲到數(shù)據(jù)庫的情況下,耦合器的平均仿真速率為1.4 步/s,執(zhí)行機平均仿真速率為2.0 步/s,數(shù)據(jù)監(jiān)控子系統(tǒng)在平均仿真速率為78.5 步/s.除了采用不同子系統(tǒng)存儲數(shù)據(jù)時仿真速率有差距之外,相較于圖4 各個子系統(tǒng)本身的存儲速率已有所降低,這就證明了增加仿真任務模塊會相應降低仿真性能的結論.
通過采集樣本測試可知,不存數(shù)據(jù)時執(zhí)行任務模塊的增加,仿真速率降低;耦合器存儲數(shù)據(jù)時執(zhí)行任務模塊增加,仿真速率降低;執(zhí)行機存儲數(shù)據(jù)時執(zhí)行任務模塊增加,仿真速率降低;數(shù)據(jù)監(jiān)控子系統(tǒng)存儲數(shù)據(jù)時執(zhí)行任務模塊增加,仿真速率降低.在仿真速率的穩(wěn)定性上,增加執(zhí)行任務模塊對仿真速率的影響都不太明顯,而且仿真速率也比較高,趨于理想.因此,選擇數(shù)據(jù)監(jiān)控子系統(tǒng)存儲仿真數(shù)據(jù)對于平臺來說是比較合適的.
[1]Ajay D.Kshemkalyani,MukeshSinghal.分 布 式 計 算—原理、算法與系統(tǒng)[M].余宏亮,張冬艷,譯.北京:高等教育出版社,2012.
[2]張玉宏,黃志球,楊俊.分布式系統(tǒng)中性能評估模型的改進方案[J].計算機工程與設計,2006,27(14):176-180.
[3]Yook J,Tilbury D,Chervela K,et al.Decentralized modular realtime control for machiningapplications[C]//Proceedings of the 1998 American Control Conference.Philadelphia,PA,USA:IEEE Press,1998.
[4]王蘭香.影響分布式控制系統(tǒng)性能的若干因素[J].自動化技術與應用,2007,26(5):98-101.
[5]張衛(wèi)華.高速列車耦合大系統(tǒng)動力學理論與實踐[M].北京:科學出版社,2013.
[6]馮玉琳,黃濤,金蓓弘.網(wǎng)絡分布式計算與軟件工程[M].北京:科學出版社,2011.
[7]楊艷,李煒,王純.內存數(shù)據(jù)庫在高速緩存方面的應用[J].現(xiàn)代電信科技,2011,41(12):59-64.