劉 露,黃海于
(西南交通大學 信息科學與技術學院,四川 成都 611756)
隨著計算機仿真技術被廣泛應用到科研和開發領域,仿真任務的計算量變得也越來越大,對仿真技術的高效性、精確性、可靠性等要求也越來越高,因此與分布式仿真有關的技術的研究也成為當前仿真領域熱門的研究方向之一[1].分布式體系結構給仿真帶來便利的同時,也帶來了一些影響仿真系統整體性能至關重要的因素[2].在分布式構架下,通訊的使用引入了一些必須加以重新考慮的方面[3],包括系統體系結構、時間延遲、通訊調度、系統的可重構性、維護靈活性、容錯能力、模塊間同步以及系統整體性能的保證等[4].
本研究的高速列車數字化仿真平臺是基于C/S模式的分布式仿真體系結構,其主要的功能模塊包括主控模塊、前處理模塊、耦合計算模塊、后處理模塊和系統管理模塊[5].為了保證多子系統耦合后的整體仿真效率,仿真平臺部署在由高速網絡連接的分布式計算環境中.
高速列車數字化仿真過程中,數據存儲扮演著非常重要的角色,它為仿真過程分析提供了必需的數據,為仿真結果的事后測試與評估提供了極大的幫助[6].該仿真平臺的仿真過程監視子系統用于對仿真過程數據的監視,其主要功能是從數據庫獲取仿真過程中產生的數據,并通過獨立的計算過程監視系統對這些數據進行圖形化展示,以便及時發現計算中出現的問題,提高應用效率[5].
高速列車數字化仿真平臺是國家支撐計劃項目,本研究主要完成了仿真平臺架構的創建,承擔調度器、耦合器、代理子系統、圖形建模和數據監控等幾個子系統的研究.
本研究從性能提升的角度對仿真平臺的數據存儲進行了探討.為提高仿真數據的傳輸效率,仿真平臺采用UDP 通信.經過測試發現,通過不同子系統存儲仿真過程產生的數據對平臺仿真性能的影響是不同的.其對系統仿真性能的影響主要體現在仿真過程數據的產生、傳輸、處理與存儲等方面.
仿真過程產生的數據大部分來源于分布在不同計算資源的任務執行模塊(以下簡稱執行機),為了使其他執行機獲得下一步仿真所需要的計算數據,這些執行機將每一步仿真的結果發送給耦合器,耦合器根據耦合關系表將所收到的數據發送給需要這些數據的執行機.一個完整的仿真計算過程具體描述如下:
1)數據的產生.當耦合器代理啟動耦合器、計算資源代理啟動任務執行模塊之后,執行機執行每一步數據的仿真計算,并將計算結果打包,以備發送給耦合器進行數據分發,這個過程稱之為數據的產生.
2)數據的傳輸.執行機把每一步仿真過程數據傳輸給耦合器,耦合器又將每一步仿真過程數據傳輸給執行機,此過程為仿真過程數據的傳輸.
3)數據的處理.執行機將計算出的仿真結果數據進行打包以備發送,此過程為仿真過程數據的打包處理;系統中任何一個子系統將接收到的數據包進行拆包,得到可用的仿真過程數據,此過程為仿真過程數據的解析處理;耦合器通過計算將收到的數據傳送給執行機,此過程為仿真過程數據的分發處理.
4)數據的存儲.將仿真過程數據存入數據庫中,此過程為仿真過程數據的存儲.
由于本仿真平臺不同模塊在執行時可能分布在不同的計算資源上,其數據發送、接收及處理可以相互獨立,并行進行.同時執行機、耦合器、數據監控3個模塊之間的數據交互也不是絕對串行的,因此仿真一步所需要的時間并不是單純將每一個過程所消耗的時間進行求和得到,而是要進行嚴密的邏輯分析.另一方面,對于分布式系統,沒有一個全局的時鐘,大多數情況下需要通過事件發生的先后順序,引入“邏輯時鐘”,然后由邏輯時鐘提供邏輯時間保證所有進程保持事件前后的一致性[7].
結合高速列車數字化仿真平臺的體系架構和具體工作原理,平臺可以采用耦合器存儲、執行機存儲和數據監控子系統存儲3 種方式存儲仿真過程數據.主要參數定義如下:
1)Tpi[j].表示執行機i 在進行第j 步計算時所需時間.
2)Tbci[j].表示耦合器對執行機i 第j 步仿真輸出數據進行分發計算處理所需時間.
3)Tbei[j].表示執行機i 對第j 步仿真輸出數據進行打包處理時所需時間.
4)Tuci[j].表示耦合器對執行機i 的第j 步仿真輸出數據進行解析處理時所需時間.
5)Tumi[j].表示數據監控對執行機i 的第j 步仿真輸出數據進行解析處理時所需時間.
6)Teci[j].表示執行機i 將第j 步仿真輸出數據發送到耦合器時所需時間,該時間還包括數據在發送隊列等待的時間(該時間與耦合器接收執行機i第j 步仿真數據所需時間基本相同).
7)Tcei[j].表示耦合器將第j 步仿真輸入數據發送到執行機i 所需時間,該時間還包括數據在發送隊列中等待的時間(該時間與執行機i 接收耦合器發送給該執行機第j 步仿真輸入數據所需時間基本相同).
8)Temi[j].表示執行機i 將第j 步仿真輸出數據發送到數據監控子系統所需時間,該時間還包括數據在發送隊列中等待的時間(該時間與數據監控接收執行機i 第j 步仿真輸出數據所需時間基本相同).
9)Twei[j].表示執行機i 將第j 步仿真輸出數據存儲到數據庫所需時間,該時間還包括數據在存儲隊列中等待的時間.
10)Twci[j].表示耦合器將執行機i 的第j 步仿真輸出數據存儲到數據庫所需時間,該時間還包括數據在存儲隊列中等待的時間.
11)Twmi[j].表示數據監控將執行機i 的第j 步仿真輸出數據存儲到數據庫所需時間,該時間還包括數據在存儲隊列中等待的時間.
1.2.1 耦合器存儲仿真過程數據對仿真性能的影響.
耦合器是耦合數據的處理和收發集散中心,所有耦合數據都向其匯集并經其分發到各子系統[6].執行機和耦合器之間的數據交互方式如圖1 所示.

圖1 任務執行機和耦合器的交互關系
由圖1 可知,每一個執行機和耦合器都是一個獨立執行的進程,因此對數據的處理都是獨立進行的,但是耦合器計算分發數據時采用串行方式.
根據仿真計算過程中數據歷經的4 個過程,采用耦合器來存儲一步仿真過程數據需要耗費的時間由下面4 個部分構成:
1)執行機計算第j 步仿真輸出數據所需時間Tpi[j].
2)耦合器處理第j 步數據所需時間Tdci[j],該時間包括Tuci[j]、Tbei[j]及Tbci[j].該系統中,數據打包、數據解析及數據分發處理均通過多線程并行處理,運行在不同的CPU 核上,因此Tdci[j] =max(Tbei[j],Tuci[j],Tbci[j]).
4)耦合器將第j 步數據存儲到數據庫所需時間Twci[j].
上述過程中,有些操作是在執行機上完成的,有些操作是在耦合器上完成的.二者分布在不同的計算機上,因此可以并行執行.即使運行在同一臺計算機上,由于數據的處理可以通過多個CPU 核分別執行,因此也可以并行執行.數據的收發以及數據的處理也可以并行執行.所以耦合器完成一步數據仿真及存儲所需時間為,

其中,N 為執行機的個數.可以看出,當任務增多時,執行機之間耦合關系復雜程度會相應增加,由于存儲數據參與到仿真過程,數據存儲的耗費也會增加.
1.2.2 執行機存儲仿真過程數據對仿真性能的影響.
執行機用于各子系統的仿真計算,由各個計算模塊構成,包括車輛動力學、線路動力學、弓網動力學、牽引供電及傳動和空氣動力學耦合計算子模塊.執行機和數據庫之間的數據交互方式如圖2 所示.

圖2 任務執行機和數據庫的交互關系
由圖2 可知,執行機計算產生某一步仿真過程數據之后,在數據打包之前即可存入數據庫中,而耦合器無需解析即可轉發數據包.采用執行機來存儲一步仿真過程數據的時間相較于耦合器存儲將會節約耦合器解析第j 步數據的數據包所需時間Tuci[j].
上述過程中,執行機向數據庫存儲仿真結果數據與執行機計算和收發數據均可以通過多個CPU核分別執行,因此可以并行執行.所以,執行機完成一步數據仿真及存儲所需時間為,其中,N 為執行機的個數.存儲數據過程中無需解析數據,可直接存儲,因此節約了仿真時間消耗.

1.2.3 數據監控子系統存儲仿真過程數據的對仿真性能的影響.
數據監控子系統用于對計算過程進行實時監控,對異常情況進行提示或警告,使計算過程透明化[2].數據監控子系統和執行機之間的交互關系如圖3 所示.

圖3 數據監控子系統和執行機之間的數據交互關系
由圖3 看出,執行機和數據監控子系統之間的數據交互方式是單向的,不影響仿真過程的進行.執行機向數據監控子系統發送第j 步數據所需時間Temi[j]和數據監控子系統存儲第j 步數據所需時間Twmi[j]可不計入仿真一步的總時間中,因為該過程不影響仿真過程的進行.因此,由數據監控子系統完成一步仿真所需時間為,

其中,N 為執行機個數.當任務增多時,仿真時間消耗幾乎不受數據存儲的影響.
由于仿真過程中,基于計算機硬件和軟件性能、網絡環境的不確定性,要精確比較每種存儲方式的時間消耗幾乎是不可能的.但是本研究從每種存儲方式的時間復雜度方面著手分析,同樣能夠比較不同存儲方式下的仿真過程時間消耗情況,且都以執行機、耦合器、數據監控所處計算機軟硬件性能穩定,并處于同一網絡環境中為研究前提.
前節已分析了不同存儲方式對平臺性能的影響,針對3 種存儲方式中仿真過程數據歷經的4 個過程,可以得出以下理論結果:
1)耦合器存儲一步數據額外多出了數據存儲所需時間,因此耦合器完成一步仿真所需的時間明顯大于執行機和數據監控子系統;
2)執行機存儲一步數據與計算一步數據可以并行完成,但處于同一計算資源上勢必會相互產生降低效率的后果,從而影響執行機的計算性能;
3)數據監控子系統存儲一步數據的過程中,執行機會額外產生一個向數據監控子系統發送數據的過程,但一個數據包發送行為所需的時間遠遠小于執行機計算一步數據所需的時間.
本研究中對于仿真性能的評價指標是基于仿真速率的,而仿真速率的定義為仿真總步數與仿真時間的比值.綜上可知,對于采用數據監控子系統存儲仿真結果數據時在本研究中是非常理想的數據存儲方式.
高速列車數字化仿真平臺上,以仿真速率V(步/s)作為評估指標,采用UDP 作為傳輸協議,用Oracle 磁盤數據庫作為存儲介質,以車輛動力學、線路動力學、弓網動力學和牽引供電耦合計算子模塊作為任務執行模塊,對采用不同子系統存儲仿真過程數據的實例進行測試.
硬件支持,基于Intel(R)Core(TM)2 Quad CPU Q9500 @ 2.83 GHz 雙核處理器,內存8 G,64 或者32 位Windows 操作系統PC 機4 ~6 臺,基于Linux/Unix 操作系統高性能計算機集群;軟件支持,基于C/S 架構的Oracle 11.2 磁盤數據庫系統;網絡支持,主網絡為千兆網,其中計算網絡采用Infiniband 網,帶寬為40 GB/s,網絡狀態良好;參與模塊,車輛,線路,弓網,牽引供電;測試組合1,車輛—線路組成兩模塊測試;測試組合2,車輛—線路—弓網—牽引供電組成四模塊測試;測試次數,每組測試為10 次.
測試采取了增加執行機的方式來測試不同的子系統存儲仿真結果數據對仿真速率的影響.
參與測試的模塊輸入參數設置如下:
全局仿真參數:總積分時間=200 000 步,耦合步長=0.00100.參與仿真的各模塊的仿真參數設置如表1 所示.
經過仿真實驗測試,耦合器、執行機、數據監控子系統在不存儲數據庫時仿真速率是一樣的,基本保持在81 步/s 左右.
車線耦合模式下,車輛子系統、線路子系統、耦合器和數據監控子系統分別部署在不同的計算資源上,在網絡狀態良好的同一網絡環境中進行仿真測試.采用不同系統以磁盤數據庫為存儲介質的仿真速率如圖4 所示.

表1 全局仿真參數

圖4 車—線耦合下不同系統以磁盤數據庫為存儲介質的仿真速率(步/s)
圖4 中,縱軸表示仿真速率V,單位為步/s,橫軸表示仿真次數.在數據存儲到數據庫的情況下,耦合器的平均仿真速率為1.6 步/s,執行機平均仿真速率為2.5 步/s,數據監控子系統平均仿真速率為80 步/s.由數據監控子系統存儲數據的仿真速率比較接近于不寫數據庫,而且遠大于執行機和耦合器.在使用耦合器和執行機存儲數據的時候,一方面要計算數據,一方面要存儲數據,因此時間耗費較大,降低了仿真性能,數據監控子系統不參與數據計算,因此對仿真過程基本沒有影響.
在車線牽弓耦合模式下,各個任務模塊、耦合器、數據監控子系統分別部署在不同的計算資源上,在網絡狀態良好的同一網絡環境中進行仿真測試.不同系統以磁盤數據庫為存儲介質的仿真速率如圖5 所示.

圖5 車—線—牽—弓耦合下不同系統以磁盤數據庫為存儲介質的仿真速率(步/s)
由圖5 可以得出,在數據存儲到數據庫的情況下,耦合器的平均仿真速率為1.4 步/s,執行機平均仿真速率為2.0 步/s,數據監控子系統在平均仿真速率為78.5 步/s.除了采用不同子系統存儲數據時仿真速率有差距之外,相較于圖4 各個子系統本身的存儲速率已有所降低,這就證明了增加仿真任務模塊會相應降低仿真性能的結論.
通過采集樣本測試可知,不存數據時執行任務模塊的增加,仿真速率降低;耦合器存儲數據時執行任務模塊增加,仿真速率降低;執行機存儲數據時執行任務模塊增加,仿真速率降低;數據監控子系統存儲數據時執行任務模塊增加,仿真速率降低.在仿真速率的穩定性上,增加執行任務模塊對仿真速率的影響都不太明顯,而且仿真速率也比較高,趨于理想.因此,選擇數據監控子系統存儲仿真數據對于平臺來說是比較合適的.
[1]Ajay D.Kshemkalyani,MukeshSinghal.分 布 式 計 算—原理、算法與系統[M].余宏亮,張冬艷,譯.北京:高等教育出版社,2012.
[2]張玉宏,黃志球,楊俊.分布式系統中性能評估模型的改進方案[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]王蘭香.影響分布式控制系統性能的若干因素[J].自動化技術與應用,2007,26(5):98-101.
[5]張衛華.高速列車耦合大系統動力學理論與實踐[M].北京:科學出版社,2013.
[6]馮玉琳,黃濤,金蓓弘.網絡分布式計算與軟件工程[M].北京:科學出版社,2011.
[7]楊艷,李煒,王純.內存數據庫在高速緩存方面的應用[J].現代電信科技,2011,41(12):59-64.