劉兆慶,于洪彬,梁洋洋,梁軍
(哈爾濱工業(yè)大學 電氣工程及其自動化學院,黑龍江 哈爾濱 150001)
網(wǎng)絡化測試系統(tǒng)在武器裝備測試、核爆炸試驗、航空航天測試等領域有著廣泛的應用[1]。實時性是網(wǎng)絡化測試系統(tǒng)面臨的主要問題之一[2]。除了采用高性能測試儀器和高速通信網(wǎng)絡外,測試數(shù)據(jù)的處理是影響系統(tǒng)實時性的關鍵。
目前,網(wǎng)絡化測試系統(tǒng)中大多采用集中式數(shù)據(jù)處理方式。在該方式下,數(shù)據(jù)全部存儲在主控計算機,由數(shù)據(jù)庫管理系統(tǒng)進行統(tǒng)一管理,主控計算機承擔所有測試數(shù)據(jù)的計算、綜合和處理任務。集中式數(shù)據(jù)處理方式對計算機的性能要求較高,骨干網(wǎng)絡帶寬壓力大,測試數(shù)據(jù)在數(shù)據(jù)庫中的查詢時間變長,數(shù)據(jù)處理時效性差[3]。隨著測試系統(tǒng)規(guī)模的增大,這些問題越來越凸顯出來。
在不投入更多硬件資源的情況下,為了提升網(wǎng)絡化測試系統(tǒng)的實時性,必須充分挖掘系統(tǒng)內的計算資源并設計相應的數(shù)據(jù)處理模式。由于嵌入式技術在儀器領域的應用不斷模糊著計算機與儀器的界限,智能儀器大多有獨立的CPU、內存、硬盤、網(wǎng)絡接口等一系列資源,具有一定的數(shù)據(jù)處理能力。而且隨著并行處理或分布式處理技術支持的日漸成熟,將儀器資源共享出來,聯(lián)合多個儀器資源,在主控計算機的管理調度下,協(xié)同地進行部分或全部數(shù)據(jù)處理任務,使數(shù)據(jù)處理任務以一種空間并行的方式在儀器節(jié)點本地運行,存在著降低時延,提高系統(tǒng)實時性的可能。這種方式有利于實時性的根本原因在于以下2點:
(1) 利用并行方式的可擴展性引入更多計算資源加入進數(shù)據(jù)處理任務;
(2) 數(shù)據(jù)傳輸以局部傳輸為主,避免了集中式處理僵硬的數(shù)據(jù)傳輸模式。
在利用儀器資源進行數(shù)據(jù)處理應以不犧牲測試任務的執(zhí)行性能為前提,這要求在儀器上引入隔離技術。本文設計了一種基于儀器資源的并行數(shù)據(jù)處理計算架構。在該架構下,在主控計算機根據(jù)數(shù)據(jù)處理任務的資源需求,為任務分配滿足資源需求的物理節(jié)點;在儀器節(jié)點上,使用隔離技術,將任務進程限制在特定的資源上。構建并行數(shù)據(jù)處理平臺,利用并行FFT(faster Fourier transformation)應用驗證數(shù)據(jù)處理架構的可行性,分析了該模式的計算性能和在這種計算模式下進一步提升數(shù)據(jù)處理效率進而提高系統(tǒng)實時性的關鍵因素,為后續(xù)研究指出了研究方向。
文獻[4]指出了在一個分布式系統(tǒng)上構建計算平臺的要解決的一般問題:
(1) 管理系統(tǒng)中多種硬件資源;
(2) 定義用戶可以發(fā)現(xiàn)、請求和使用資源;
(3) 實現(xiàn)在資源上并行計算的執(zhí)行。
目前,尚未查找到基于嵌入式儀器進行并行計算平臺的構建方案。本文將根據(jù)網(wǎng)絡化測試系統(tǒng)簡潔、高效、實時的應用需求,結合現(xiàn)有并行技術、集群技術及隔離技術的技術支持,設計適宜在網(wǎng)絡化測試系統(tǒng)的平臺構建方案。文獻[5]提出了一種基于MPI(message passing interface)的云計算模型,該模型替換了Hadoop中的MapReduce編程模型,實現(xiàn)了在MPI計算平臺上的云計算。文獻[6]提出了利用MPI構建云計算的非虛擬化平臺,利用MPI對異構環(huán)境的支持,直接在異構環(huán)境上構建MPI集群,避免了虛擬化的性能損耗,并進一步在對MapReduce的替換、多級容錯機制等方面進行了研究。文獻[7]實現(xiàn)了在Docker容器上部署MPI集群用于高性能計算。MPI是一個高性能的消息傳遞模型,在注重時效性的并行計算中有著廣泛應用。但以上都是以云計算為應用環(huán)境展開的,在網(wǎng)絡化測試應用環(huán)境中存在著不適宜。
對于硬件設備的處理主要由2種處理方式——非虛擬化技術和虛擬化技術。非虛擬化技術應用以網(wǎng)格計算為代表,直接對物理資源進行管理,按照批處理方式對資源進行調度。虛擬化技術以云計算為代表,對底層硬件使用虛擬化技術構成虛擬資源,在虛擬資源上以數(shù)據(jù)為驅動進行調度。
網(wǎng)絡化測試系統(tǒng)中的計算平臺構建應強調高效實時。智能儀器相對于PC來說資源有限,虛擬化技術的性能開銷較大,影響節(jié)點計算性能和通信性能。非虛擬化技術會保留原有硬件性能,通信性能更好,有利于系統(tǒng)的實時性要求。網(wǎng)絡化測試系統(tǒng)中的并行數(shù)據(jù)處理不宜構建虛擬化的計算平臺。因此,資源的管理調度應以具體物理硬件為基礎,作業(yè)資源需求通過資源參數(shù)或屬性描述直接定位到具體物理節(jié)點。這可以通過本地的資源管理器實現(xiàn)[8]。
事實上,虛擬化技術在構建統(tǒng)一資源類型的同時也實現(xiàn)了資源的隔離與控制。虛擬機由于Hypervisor的存在,在獲得良好隔離性的同時產(chǎn)生了很大的系統(tǒng)開銷。LXC(Linux containers)和Docker是輕量級虛擬化技術,在云計算中具有廣泛應用,是滿足云計算環(huán)境需求的技術架構,但對于網(wǎng)絡化測試系統(tǒng)存在冗余封裝。LXC基于Linux內核Cgroups和Namespace構建,Cgroups進行資源管理,Namespace用于安全隔離[9-10]。本文直接調用Linux的Cgroups內核支持,實現(xiàn)對計算任務的資源控制。
綜上所述,本文將采用本地資源管理器實現(xiàn)系統(tǒng)資源的管理分配,采用Cgroups實現(xiàn)儀器節(jié)點資源的隔離與控制,采用MPI消息傳遞模型構建計算平臺。
在分析了網(wǎng)絡化測試系統(tǒng)體系結構的基礎上,本文提出了一種雙層資源模型,用來解決網(wǎng)絡化測試系統(tǒng)中的資源問題。
雙層資源模型如圖1所示。在系統(tǒng)的層面上,主控計算機管理系統(tǒng)中所有儀器節(jié)點及其附帶的資源屬性。服務中心是系統(tǒng)的核心,作為全局的用戶的唯一接口,可以對系統(tǒng)進行查詢、配置,提交計算任務、進行任務狀態(tài)監(jiān)測。調度中心根據(jù)計算任務提出的資源屬性需求,按照可插拔式的調度策略配置,以物理儀器節(jié)點作為基本單位,從系統(tǒng)中選出可以滿足計算需求的節(jié)點集合,給出任務運行的節(jié)點建議。
在儀器節(jié)點上,將計算所需的資源(CPU、內存等)以一定的形式聯(lián)合起來,構成資源容器,計算進程僅可使用容器內的全部資源,從而避免了不同進程間的資源搶占。
圖1 雙層資源模型Fig.1 Two-level resource model
本文采用TORQUE資源管理器實現(xiàn)位于頂層的面向用戶的作業(yè)管理和系統(tǒng)資源管理分配[11]。TORQUE是基于PBS(portable batch system)工程的高級開源產(chǎn)品,包含了目前最好的社區(qū)版和專業(yè)版。它具有良好的可擴展性、穩(wěn)定性和功能性,因此在全世界的政府、科研、商業(yè)領域有著廣泛應用[12]。由于TORQUE可以免費被使用、修改、發(fā)布,為后續(xù)進一步研究開發(fā)提供可能,本文采用TORQUE社區(qū)版作為資源管理器。
通過在網(wǎng)絡化測試系統(tǒng)中布置TORQUE,可以達到以下目的:①以節(jié)點為基本資源單位,將節(jié)點具有的資源和特性進行定義或統(tǒng)計。②根據(jù)資源或特性需求,為作業(yè)找到合適節(jié)點運行。③使作業(yè)按照創(chuàng)建、提交、執(zhí)行、結束的工作流運行,通過命令對作業(yè)進行監(jiān)控或控制。
PBS有4個主要部件:命令、作業(yè)服務器、作業(yè)執(zhí)行器以及作業(yè)調度器。網(wǎng)絡化測試系統(tǒng)是多機系統(tǒng),其中主控計算機性能較強且更為穩(wěn)定,所以主控計算機中布置服務進程(Server)和執(zhí)行進程(MOM),負責上述用戶服務器的基本功能和部分計算任務。此外,調度進程(Scheduler)運行在主控計算機上,一方面從服務器獲取集群系統(tǒng)上的作業(yè)信息,另一方面獲取本分區(qū)節(jié)點資源信息。主控計算機作為面向用戶的接口,需要布置客戶命令。
在儀器節(jié)點上布置執(zhí)行進程,接受來自Server的加載、查詢等命令,并負責作業(yè)狀況的監(jiān)測以及向Server報告作業(yè)結果信息。
PBS組件在網(wǎng)絡化測試系統(tǒng)中結構如圖2所示。
圖2 PBS組件在網(wǎng)絡化測試系統(tǒng)中結構Fig.2 Structure of PBS components in net-centric ATS
Cgroups(control groups)是Linux內核的一個功能,用來限制、統(tǒng)計和分離一個進程組的資源(CPU、內存、磁盤輸入輸出等),從而實現(xiàn)Linux操作系統(tǒng)環(huán)境下的物理分割。在Cgroups中,任務就是系統(tǒng)中的一個進程,控制族群是按照某種標準劃分的進程,資源控制都是以控制族群為單位實現(xiàn)的。一個加入控制族群的進程可以使用到為控制族群分配的資源,同時受到以控制族群為單位的限制。一個子系統(tǒng)就是一個資源控制器,Cgroups為每種可以控制的資源定義了一個子系統(tǒng),比如cpu子系統(tǒng)就是控制CPU時間分配的一個控制器。子系統(tǒng)必須附加到一個層級上才能起作用,層級就是一棵控制族群樹,通過在Cgroups文件系統(tǒng)中創(chuàng)建、移除、重命名等操作構建的。
本文主要涉及到計算資源的控制,所以我們只關注系統(tǒng)的CPU資源和內存資源的控制,涉及到Cgroups子系統(tǒng)有cpuset,cpu和memory。將運行進程的進程號分別寫入相應子系統(tǒng)下的task文件,即完成了一個硬件容器的劃分并將進程限制在該容器內運行。
cpuset子系統(tǒng)為cgroup中的任務分配獨立CPU(在多核系統(tǒng))和內存節(jié)點。通過cpuset.cpus和cpuset.mems可分別選擇使用的CPU節(jié)點和內存節(jié)點。
cpu子系統(tǒng)使用調度程序提供對CPU的cgroup任務訪問。比如,通過cpu子系統(tǒng)下的cpu.cfs_quota_us調整至cpu.cfs_period_us數(shù)值的比例限定了單位時間內使用CPU時間。
memory子系統(tǒng)設定cgroup中任務使用的內存限制,并自動生成由那些任務使用的內存資源報告。通過memory.limit_in_bytes限制內存使用量。
多種儀器資源整合與限制如圖3所示。
圖3 多種儀器資源整合與限制Fig.3 Integration and limitation of multiple instruments’ resources
本文采用1臺主控計算機和4塊Digilent公司的Zedboard實驗載板,通過商用交換機和網(wǎng)線互聯(lián),用來模擬網(wǎng)絡化測試硬件環(huán)境。本文在該硬件平臺上,構建了基于MPI消息傳遞模型的程序開發(fā)和運行環(huán)境[13-14]。MPI標準的功能通過MPICH和Hydra進程管理器配合實現(xiàn)。通信系統(tǒng)通過一系列網(wǎng)絡配置,使用戶無需對每個節(jié)點進行顯示登錄操作,屏蔽了底層IP通信,在程序開發(fā)時關心的對象是計算進程。進程管理系統(tǒng)在機群上派生計算進程,管理用戶參數(shù)、環(huán)境變量及進程開啟節(jié)點信息等,并進行進程控制[15]。在此基礎上進行并行FFT的MPI程序進行實驗驗證。
分3種模式進行實驗,分別是:①在單一節(jié)點讀取全部數(shù)據(jù),在該節(jié)點上進行串行FFT計算,計算結束后,將計算結果上傳主控機,在特定文件夾下生成結果文件;②依次在2個、4個節(jié)點上展開并行FFT計算,每個節(jié)點上數(shù)據(jù)子向量分別為完整數(shù)據(jù)文件的1/2和1/4,讀取數(shù)據(jù),節(jié)點間利用本地數(shù)據(jù)或向其余節(jié)點請求各步FFT計算所需數(shù)據(jù),完成相應部分的FFT計算,隨后計算結果被主控計算機收集并綜合生成最終結果文件;③將不同數(shù)據(jù)規(guī)模的完整數(shù)據(jù)文件拆分在2個節(jié)點上,節(jié)點讀取數(shù)據(jù)文件被主控計算機收集,由主控計算機按串行方式完成FFT計算。
(1) 算法執(zhí)行時間
圖4表示FFT計算的算法執(zhí)行時間隨著數(shù)據(jù)規(guī)模增加的變化情況。橫坐標表示采樣的數(shù)據(jù)點數(shù)按2的次冪增加,縱坐標表示在不同模式下的算法執(zhí)行時間,可以得到以下結論:
1) 隨著數(shù)據(jù)規(guī)模按2的次冪增加,在數(shù)據(jù)規(guī)模較小時,各種模式下算法執(zhí)行時間基本相同且約等于0;在數(shù)據(jù)規(guī)模較大時,隨著數(shù)據(jù)規(guī)模增大,可以看到執(zhí)行時間有較為明顯的變化且按指數(shù)規(guī)律增長。
2) 在1節(jié)點、2節(jié)點和4節(jié)點進行計算時,當數(shù)據(jù)規(guī)模較大時,在數(shù)據(jù)規(guī)模相同的情況下,隨著計算節(jié)點數(shù)目的增加,算法執(zhí)行時間有著明顯的減少。
圖4 不同模式下FFT計算的算法執(zhí)行時間Fig.4 Execution time of FFT under different modes
3) 采用主控計算機進行數(shù)據(jù)收集進行FFT計算的模式下,執(zhí)行時間小于其他模式的計算。
圖5截取數(shù)據(jù)規(guī)模為210~216部分詳細展示數(shù)據(jù)規(guī)模較小時的算法執(zhí)行情況??梢钥吹?當數(shù)據(jù)規(guī)模較小時,增大并行儀器節(jié)點規(guī)模不能無限縮小算法的執(zhí)行時間。如表1所示,2節(jié)點并行處理時間在213之前大于單節(jié)點處理,4節(jié)點并行處理時間在214之前大于其余2種節(jié)點計算模式。這是由于并行數(shù)據(jù)處理的通信開銷造成的。
圖5 210~216數(shù)據(jù)規(guī)模下算法執(zhí)行時間Fig.5 Execution time of data scale varying from 210 to 216
(2) 并行數(shù)據(jù)處理通信時間分析
算法執(zhí)行時間主要由通信時間和計算時間兩部分組成,圖6表現(xiàn)了并行數(shù)據(jù)處理中通信時間占總執(zhí)行時間比例,橫坐標為數(shù)據(jù)規(guī)模,縱坐標為時間百分比。圖7表示2,4節(jié)點并行數(shù)據(jù)處理中的通信時間,橫坐標為數(shù)據(jù)規(guī)模。結論如下:
表1 210~216數(shù)據(jù)規(guī)模算法執(zhí)行時間Table 1 Execution time of data scale varying from 210 to 216 s
圖6 通信時間占并行處理時間的比例Fig.6 Communication time percentage of parallel processing
圖7 并行數(shù)據(jù)處理通信時間對比Fig.7 Comparison of communication time between nodes
1) 2種不同模式的并行數(shù)據(jù)處理的通信時間基本相同,投入更多儀器節(jié)點沒有明顯的減小。
2) 4節(jié)點并行的通信時間占比明顯高于2節(jié)點并行的情況,因為隨著投入更多儀器節(jié)點進行計算,計算時間有明顯的縮減,在通信時間基本不變的情況下,4節(jié)點并行的通信占比會更大。
3) 當數(shù)據(jù)規(guī)模較小時,通信時間是主要的時間開銷。2節(jié)點并行數(shù)據(jù)規(guī)模小于等于213時,4節(jié)點并行數(shù)據(jù)規(guī)模小于等于216時,通信時間都占總時間的50%以上。
(3) 加速比與效率分析
加速比(speed-up),是同一任務在單處理器系統(tǒng)和并行處理器系統(tǒng)中運行消耗時間的比率,用來衡量并行系統(tǒng)或程序并行化的性能和效果。
SP=T1/TP,
式中:SP為加速比;T1為單處理器下的運行時間;TP表示在有P個處理器并行系統(tǒng)中的運行時間。
效率(efficiency),它反映了處理器的利用率,P為并行計算機中處理器的個數(shù)[16]。
EP=SP/P.
考慮到測試的應用環(huán)境,本文的加速比與效率評價中包括了單節(jié)點至主控計算機的數(shù)據(jù)傳輸時間。圖8,9分別表示2節(jié)點、4節(jié)點并行計算加速比和效率隨著數(shù)據(jù)規(guī)模變化的關系??梢缘玫揭韵陆Y論:
圖8 并行FFT計算加速比隨數(shù)據(jù)規(guī)模變化的關系Fig.8 Speedup ratio of parallel FFT algorithm with data scale
圖9 并行FFT計算效率隨數(shù)據(jù)規(guī)模變化的關系Fig.9 Parallel FFT algorithm efficiency with data scale
1) 加速比隨數(shù)據(jù)規(guī)模增加呈上升趨勢,但數(shù)據(jù)規(guī)模較大時增速變緩。從圖中可以看到4節(jié)點并行在221時可達2.8左右(最理想情況為4),2節(jié)點加速比可達1.8左右(最理想情況為2)。
2) 效率隨數(shù)據(jù)規(guī)模增大呈上升趨勢。雖然4節(jié)點并行計算相較于2節(jié)點可以獲得更大的加速比,但2節(jié)點的并行效率更高。
3) 數(shù)據(jù)規(guī)模較小時,并行計算的加速比和效率都比較低,這是因為在該情況下通信時間在全部執(zhí)行時間中所占的比例大。
4) 可以看出,數(shù)據(jù)通信已是影響系統(tǒng)達到線性加速比的主要因素。
本文設計了一種網(wǎng)絡化測試系統(tǒng)中的并行數(shù)據(jù)處理模式,充分利用系統(tǒng)內計算資源,減小網(wǎng)絡傳輸延遲,進而提高系統(tǒng)實時性。成功實現(xiàn)了從頂層作業(yè)腳本編寫、提交,系統(tǒng)給出運行儀器節(jié)點建議,并行FFT程序在建議節(jié)點上運行,并將計算進程納入資源容器進行執(zhí)行的工作流程。實驗結果表明,通過引入更多儀器資源,計算時間的減少較為明顯,而通信開銷卻基本不變,成為進一步提高實時性的關鍵因素。