劉兆慶,于洪彬,梁洋洋,梁軍
(哈爾濱工業(yè)大學(xué) 電氣工程及其自動化學(xué)院,黑龍江 哈爾濱 150001)
網(wǎng)絡(luò)化測試系統(tǒng)在武器裝備測試、核爆炸試驗(yàn)、航空航天測試等領(lǐng)域有著廣泛的應(yīng)用[1]。實(shí)時性是網(wǎng)絡(luò)化測試系統(tǒng)面臨的主要問題之一[2]。除了采用高性能測試儀器和高速通信網(wǎng)絡(luò)外,測試數(shù)據(jù)的處理是影響系統(tǒng)實(shí)時性的關(guān)鍵。
目前,網(wǎng)絡(luò)化測試系統(tǒng)中大多采用集中式數(shù)據(jù)處理方式。在該方式下,數(shù)據(jù)全部存儲在主控計算機(jī),由數(shù)據(jù)庫管理系統(tǒng)進(jìn)行統(tǒng)一管理,主控計算機(jī)承擔(dān)所有測試數(shù)據(jù)的計算、綜合和處理任務(wù)。集中式數(shù)據(jù)處理方式對計算機(jī)的性能要求較高,骨干網(wǎng)絡(luò)帶寬壓力大,測試數(shù)據(jù)在數(shù)據(jù)庫中的查詢時間變長,數(shù)據(jù)處理時效性差[3]。隨著測試系統(tǒng)規(guī)模的增大,這些問題越來越凸顯出來。
在不投入更多硬件資源的情況下,為了提升網(wǎng)絡(luò)化測試系統(tǒng)的實(shí)時性,必須充分挖掘系統(tǒng)內(nèi)的計算資源并設(shè)計相應(yīng)的數(shù)據(jù)處理模式。由于嵌入式技術(shù)在儀器領(lǐng)域的應(yīng)用不斷模糊著計算機(jī)與儀器的界限,智能儀器大多有獨(dú)立的CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)接口等一系列資源,具有一定的數(shù)據(jù)處理能力。而且隨著并行處理或分布式處理技術(shù)支持的日漸成熟,將儀器資源共享出來,聯(lián)合多個儀器資源,在主控計算機(jī)的管理調(diào)度下,協(xié)同地進(jìn)行部分或全部數(shù)據(jù)處理任務(wù),使數(shù)據(jù)處理任務(wù)以一種空間并行的方式在儀器節(jié)點(diǎn)本地運(yùn)行,存在著降低時延,提高系統(tǒng)實(shí)時性的可能。這種方式有利于實(shí)時性的根本原因在于以下2點(diǎn):
(1) 利用并行方式的可擴(kuò)展性引入更多計算資源加入進(jìn)數(shù)據(jù)處理任務(wù);
(2) 數(shù)據(jù)傳輸以局部傳輸為主,避免了集中式處理僵硬的數(shù)據(jù)傳輸模式。
在利用儀器資源進(jìn)行數(shù)據(jù)處理應(yīng)以不犧牲測試任務(wù)的執(zhí)行性能為前提,這要求在儀器上引入隔離技術(shù)。本文設(shè)計了一種基于儀器資源的并行數(shù)據(jù)處理計算架構(gòu)。在該架構(gòu)下,在主控計算機(jī)根據(jù)數(shù)據(jù)處理任務(wù)的資源需求,為任務(wù)分配滿足資源需求的物理節(jié)點(diǎn);在儀器節(jié)點(diǎn)上,使用隔離技術(shù),將任務(wù)進(jìn)程限制在特定的資源上。構(gòu)建并行數(shù)據(jù)處理平臺,利用并行FFT(faster Fourier transformation)應(yīng)用驗(yàn)證數(shù)據(jù)處理架構(gòu)的可行性,分析了該模式的計算性能和在這種計算模式下進(jìn)一步提升數(shù)據(jù)處理效率進(jìn)而提高系統(tǒng)實(shí)時性的關(guān)鍵因素,為后續(xù)研究指出了研究方向。
文獻(xiàn)[4]指出了在一個分布式系統(tǒng)上構(gòu)建計算平臺的要解決的一般問題:
(1) 管理系統(tǒng)中多種硬件資源;
(2) 定義用戶可以發(fā)現(xiàn)、請求和使用資源;
(3) 實(shí)現(xiàn)在資源上并行計算的執(zhí)行。
目前,尚未查找到基于嵌入式儀器進(jìn)行并行計算平臺的構(gòu)建方案。本文將根據(jù)網(wǎng)絡(luò)化測試系統(tǒng)簡潔、高效、實(shí)時的應(yīng)用需求,結(jié)合現(xiàn)有并行技術(shù)、集群技術(shù)及隔離技術(shù)的技術(shù)支持,設(shè)計適宜在網(wǎng)絡(luò)化測試系統(tǒng)的平臺構(gòu)建方案。文獻(xiàn)[5]提出了一種基于MPI(message passing interface)的云計算模型,該模型替換了Hadoop中的MapReduce編程模型,實(shí)現(xiàn)了在MPI計算平臺上的云計算。文獻(xiàn)[6]提出了利用MPI構(gòu)建云計算的非虛擬化平臺,利用MPI對異構(gòu)環(huán)境的支持,直接在異構(gòu)環(huán)境上構(gòu)建MPI集群,避免了虛擬化的性能損耗,并進(jìn)一步在對MapReduce的替換、多級容錯機(jī)制等方面進(jìn)行了研究。文獻(xiàn)[7]實(shí)現(xiàn)了在Docker容器上部署MPI集群用于高性能計算。MPI是一個高性能的消息傳遞模型,在注重時效性的并行計算中有著廣泛應(yīng)用。但以上都是以云計算為應(yīng)用環(huán)境展開的,在網(wǎng)絡(luò)化測試應(yīng)用環(huán)境中存在著不適宜。
對于硬件設(shè)備的處理主要由2種處理方式——非虛擬化技術(shù)和虛擬化技術(shù)。非虛擬化技術(shù)應(yīng)用以網(wǎng)格計算為代表,直接對物理資源進(jìn)行管理,按照批處理方式對資源進(jìn)行調(diào)度。虛擬化技術(shù)以云計算為代表,對底層硬件使用虛擬化技術(shù)構(gòu)成虛擬資源,在虛擬資源上以數(shù)據(jù)為驅(qū)動進(jìn)行調(diào)度。
網(wǎng)絡(luò)化測試系統(tǒng)中的計算平臺構(gòu)建應(yīng)強(qiáng)調(diào)高效實(shí)時。智能儀器相對于PC來說資源有限,虛擬化技術(shù)的性能開銷較大,影響節(jié)點(diǎn)計算性能和通信性能。非虛擬化技術(shù)會保留原有硬件性能,通信性能更好,有利于系統(tǒng)的實(shí)時性要求。網(wǎng)絡(luò)化測試系統(tǒng)中的并行數(shù)據(jù)處理不宜構(gòu)建虛擬化的計算平臺。因此,資源的管理調(diào)度應(yīng)以具體物理硬件為基礎(chǔ),作業(yè)資源需求通過資源參數(shù)或?qū)傩悦枋鲋苯佣ㄎ坏骄唧w物理節(jié)點(diǎn)。這可以通過本地的資源管理器實(shí)現(xiàn)[8]。
事實(shí)上,虛擬化技術(shù)在構(gòu)建統(tǒng)一資源類型的同時也實(shí)現(xiàn)了資源的隔離與控制。虛擬機(jī)由于Hypervisor的存在,在獲得良好隔離性的同時產(chǎn)生了很大的系統(tǒng)開銷。LXC(Linux containers)和Docker是輕量級虛擬化技術(shù),在云計算中具有廣泛應(yīng)用,是滿足云計算環(huán)境需求的技術(shù)架構(gòu),但對于網(wǎng)絡(luò)化測試系統(tǒng)存在冗余封裝。LXC基于Linux內(nèi)核Cgroups和Namespace構(gòu)建,Cgroups進(jìn)行資源管理,Namespace用于安全隔離[9-10]。本文直接調(diào)用Linux的Cgroups內(nèi)核支持,實(shí)現(xiàn)對計算任務(wù)的資源控制。
綜上所述,本文將采用本地資源管理器實(shí)現(xiàn)系統(tǒng)資源的管理分配,采用Cgroups實(shí)現(xiàn)儀器節(jié)點(diǎn)資源的隔離與控制,采用MPI消息傳遞模型構(gòu)建計算平臺。
在分析了網(wǎng)絡(luò)化測試系統(tǒng)體系結(jié)構(gòu)的基礎(chǔ)上,本文提出了一種雙層資源模型,用來解決網(wǎng)絡(luò)化測試系統(tǒng)中的資源問題。
雙層資源模型如圖1所示。在系統(tǒng)的層面上,主控計算機(jī)管理系統(tǒng)中所有儀器節(jié)點(diǎn)及其附帶的資源屬性。服務(wù)中心是系統(tǒng)的核心,作為全局的用戶的唯一接口,可以對系統(tǒng)進(jìn)行查詢、配置,提交計算任務(wù)、進(jìn)行任務(wù)狀態(tài)監(jiān)測。調(diào)度中心根據(jù)計算任務(wù)提出的資源屬性需求,按照可插拔式的調(diào)度策略配置,以物理儀器節(jié)點(diǎn)作為基本單位,從系統(tǒng)中選出可以滿足計算需求的節(jié)點(diǎn)集合,給出任務(wù)運(yùn)行的節(jié)點(diǎn)建議。
在儀器節(jié)點(diǎn)上,將計算所需的資源(CPU、內(nèi)存等)以一定的形式聯(lián)合起來,構(gòu)成資源容器,計算進(jìn)程僅可使用容器內(nèi)的全部資源,從而避免了不同進(jìn)程間的資源搶占。

圖1 雙層資源模型Fig.1 Two-level resource model
本文采用TORQUE資源管理器實(shí)現(xiàn)位于頂層的面向用戶的作業(yè)管理和系統(tǒng)資源管理分配[11]。TORQUE是基于PBS(portable batch system)工程的高級開源產(chǎn)品,包含了目前最好的社區(qū)版和專業(yè)版。它具有良好的可擴(kuò)展性、穩(wěn)定性和功能性,因此在全世界的政府、科研、商業(yè)領(lǐng)域有著廣泛應(yīng)用[12]。由于TORQUE可以免費(fèi)被使用、修改、發(fā)布,為后續(xù)進(jìn)一步研究開發(fā)提供可能,本文采用TORQUE社區(qū)版作為資源管理器。
通過在網(wǎng)絡(luò)化測試系統(tǒng)中布置TORQUE,可以達(dá)到以下目的:①以節(jié)點(diǎn)為基本資源單位,將節(jié)點(diǎn)具有的資源和特性進(jìn)行定義或統(tǒng)計。②根據(jù)資源或特性需求,為作業(yè)找到合適節(jié)點(diǎn)運(yùn)行。③使作業(yè)按照創(chuàng)建、提交、執(zhí)行、結(jié)束的工作流運(yùn)行,通過命令對作業(yè)進(jìn)行監(jiān)控或控制。
PBS有4個主要部件:命令、作業(yè)服務(wù)器、作業(yè)執(zhí)行器以及作業(yè)調(diào)度器。網(wǎng)絡(luò)化測試系統(tǒng)是多機(jī)系統(tǒng),其中主控計算機(jī)性能較強(qiáng)且更為穩(wěn)定,所以主控計算機(jī)中布置服務(wù)進(jìn)程(Server)和執(zhí)行進(jìn)程(MOM),負(fù)責(zé)上述用戶服務(wù)器的基本功能和部分計算任務(wù)。此外,調(diào)度進(jìn)程(Scheduler)運(yùn)行在主控計算機(jī)上,一方面從服務(wù)器獲取集群系統(tǒng)上的作業(yè)信息,另一方面獲取本分區(qū)節(jié)點(diǎn)資源信息。主控計算機(jī)作為面向用戶的接口,需要布置客戶命令。
在儀器節(jié)點(diǎn)上布置執(zhí)行進(jìn)程,接受來自Server的加載、查詢等命令,并負(fù)責(zé)作業(yè)狀況的監(jiān)測以及向Server報告作業(yè)結(jié)果信息。
PBS組件在網(wǎng)絡(luò)化測試系統(tǒng)中結(jié)構(gòu)如圖2所示。

圖2 PBS組件在網(wǎng)絡(luò)化測試系統(tǒng)中結(jié)構(gòu)Fig.2 Structure of PBS components in net-centric ATS
Cgroups(control groups)是Linux內(nèi)核的一個功能,用來限制、統(tǒng)計和分離一個進(jìn)程組的資源(CPU、內(nèi)存、磁盤輸入輸出等),從而實(shí)現(xiàn)Linux操作系統(tǒng)環(huán)境下的物理分割。在Cgroups中,任務(wù)就是系統(tǒng)中的一個進(jìn)程,控制族群是按照某種標(biāo)準(zhǔn)劃分的進(jìn)程,資源控制都是以控制族群為單位實(shí)現(xiàn)的。一個加入控制族群的進(jìn)程可以使用到為控制族群分配的資源,同時受到以控制族群為單位的限制。一個子系統(tǒng)就是一個資源控制器,Cgroups為每種可以控制的資源定義了一個子系統(tǒng),比如cpu子系統(tǒng)就是控制CPU時間分配的一個控制器。子系統(tǒng)必須附加到一個層級上才能起作用,層級就是一棵控制族群樹,通過在Cgroups文件系統(tǒng)中創(chuàng)建、移除、重命名等操作構(gòu)建的。
本文主要涉及到計算資源的控制,所以我們只關(guān)注系統(tǒng)的CPU資源和內(nèi)存資源的控制,涉及到Cgroups子系統(tǒng)有cpuset,cpu和memory。將運(yùn)行進(jìn)程的進(jìn)程號分別寫入相應(yīng)子系統(tǒng)下的task文件,即完成了一個硬件容器的劃分并將進(jìn)程限制在該容器內(nèi)運(yùn)行。
cpuset子系統(tǒng)為cgroup中的任務(wù)分配獨(dú)立CPU(在多核系統(tǒng))和內(nèi)存節(jié)點(diǎn)。通過cpuset.cpus和cpuset.mems可分別選擇使用的CPU節(jié)點(diǎn)和內(nèi)存節(jié)點(diǎn)。
cpu子系統(tǒng)使用調(diào)度程序提供對CPU的cgroup任務(wù)訪問。比如,通過cpu子系統(tǒng)下的cpu.cfs_quota_us調(diào)整至cpu.cfs_period_us數(shù)值的比例限定了單位時間內(nèi)使用CPU時間。
memory子系統(tǒng)設(shè)定cgroup中任務(wù)使用的內(nèi)存限制,并自動生成由那些任務(wù)使用的內(nèi)存資源報告。通過memory.limit_in_bytes限制內(nèi)存使用量。
多種儀器資源整合與限制如圖3所示。

圖3 多種儀器資源整合與限制Fig.3 Integration and limitation of multiple instruments’ resources
本文采用1臺主控計算機(jī)和4塊Digilent公司的Zedboard實(shí)驗(yàn)載板,通過商用交換機(jī)和網(wǎng)線互聯(lián),用來模擬網(wǎng)絡(luò)化測試硬件環(huán)境。本文在該硬件平臺上,構(gòu)建了基于MPI消息傳遞模型的程序開發(fā)和運(yùn)行環(huán)境[13-14]。MPI標(biāo)準(zhǔn)的功能通過MPICH和Hydra進(jìn)程管理器配合實(shí)現(xiàn)。通信系統(tǒng)通過一系列網(wǎng)絡(luò)配置,使用戶無需對每個節(jié)點(diǎn)進(jìn)行顯示登錄操作,屏蔽了底層IP通信,在程序開發(fā)時關(guān)心的對象是計算進(jìn)程。進(jìn)程管理系統(tǒng)在機(jī)群上派生計算進(jìn)程,管理用戶參數(shù)、環(huán)境變量及進(jìn)程開啟節(jié)點(diǎn)信息等,并進(jìn)行進(jìn)程控制[15]。在此基礎(chǔ)上進(jìn)行并行FFT的MPI程序進(jìn)行實(shí)驗(yàn)驗(yàn)證。
分3種模式進(jìn)行實(shí)驗(yàn),分別是:①在單一節(jié)點(diǎn)讀取全部數(shù)據(jù),在該節(jié)點(diǎn)上進(jìn)行串行FFT計算,計算結(jié)束后,將計算結(jié)果上傳主控機(jī),在特定文件夾下生成結(jié)果文件;②依次在2個、4個節(jié)點(diǎn)上展開并行FFT計算,每個節(jié)點(diǎn)上數(shù)據(jù)子向量分別為完整數(shù)據(jù)文件的1/2和1/4,讀取數(shù)據(jù),節(jié)點(diǎn)間利用本地數(shù)據(jù)或向其余節(jié)點(diǎn)請求各步FFT計算所需數(shù)據(jù),完成相應(yīng)部分的FFT計算,隨后計算結(jié)果被主控計算機(jī)收集并綜合生成最終結(jié)果文件;③將不同數(shù)據(jù)規(guī)模的完整數(shù)據(jù)文件拆分在2個節(jié)點(diǎn)上,節(jié)點(diǎn)讀取數(shù)據(jù)文件被主控計算機(jī)收集,由主控計算機(jī)按串行方式完成FFT計算。

(1) 算法執(zhí)行時間
圖4表示FFT計算的算法執(zhí)行時間隨著數(shù)據(jù)規(guī)模增加的變化情況。橫坐標(biāo)表示采樣的數(shù)據(jù)點(diǎn)數(shù)按2的次冪增加,縱坐標(biāo)表示在不同模式下的算法執(zhí)行時間,可以得到以下結(jié)論:
1) 隨著數(shù)據(jù)規(guī)模按2的次冪增加,在數(shù)據(jù)規(guī)模較小時,各種模式下算法執(zhí)行時間基本相同且約等于0;在數(shù)據(jù)規(guī)模較大時,隨著數(shù)據(jù)規(guī)模增大,可以看到執(zhí)行時間有較為明顯的變化且按指數(shù)規(guī)律增長。
2) 在1節(jié)點(diǎn)、2節(jié)點(diǎn)和4節(jié)點(diǎn)進(jìn)行計算時,當(dāng)數(shù)據(jù)規(guī)模較大時,在數(shù)據(jù)規(guī)模相同的情況下,隨著計算節(jié)點(diǎn)數(shù)目的增加,算法執(zhí)行時間有著明顯的減少。

圖4 不同模式下FFT計算的算法執(zhí)行時間Fig.4 Execution time of FFT under different modes
3) 采用主控計算機(jī)進(jìn)行數(shù)據(jù)收集進(jìn)行FFT計算的模式下,執(zhí)行時間小于其他模式的計算。
圖5截取數(shù)據(jù)規(guī)模為210~216部分詳細(xì)展示數(shù)據(jù)規(guī)模較小時的算法執(zhí)行情況。可以看到,當(dāng)數(shù)據(jù)規(guī)模較小時,增大并行儀器節(jié)點(diǎn)規(guī)模不能無限縮小算法的執(zhí)行時間。如表1所示,2節(jié)點(diǎn)并行處理時間在213之前大于單節(jié)點(diǎn)處理,4節(jié)點(diǎn)并行處理時間在214之前大于其余2種節(jié)點(diǎn)計算模式。這是由于并行數(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í)行時間比例,橫坐標(biāo)為數(shù)據(jù)規(guī)模,縱坐標(biāo)為時間百分比。圖7表示2,4節(jié)點(diǎn)并行數(shù)據(jù)處理中的通信時間,橫坐標(biāo)為數(shù)據(jù)規(guī)模。結(jié)論如下:

表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é)點(diǎn)沒有明顯的減小。
2) 4節(jié)點(diǎn)并行的通信時間占比明顯高于2節(jié)點(diǎn)并行的情況,因?yàn)殡S著投入更多儀器節(jié)點(diǎn)進(jìn)行計算,計算時間有明顯的縮減,在通信時間基本不變的情況下,4節(jié)點(diǎn)并行的通信占比會更大。
3) 當(dāng)數(shù)據(jù)規(guī)模較小時,通信時間是主要的時間開銷。2節(jié)點(diǎn)并行數(shù)據(jù)規(guī)模小于等于213時,4節(jié)點(diǎn)并行數(shù)據(jù)規(guī)模小于等于216時,通信時間都占總時間的50%以上。
(3) 加速比與效率分析
加速比(speed-up),是同一任務(wù)在單處理器系統(tǒng)和并行處理器系統(tǒng)中運(yùn)行消耗時間的比率,用來衡量并行系統(tǒng)或程序并行化的性能和效果。
SP=T1/TP,
式中:SP為加速比;T1為單處理器下的運(yùn)行時間;TP表示在有P個處理器并行系統(tǒng)中的運(yùn)行時間。
效率(efficiency),它反映了處理器的利用率,P為并行計算機(jī)中處理器的個數(shù)[16]。
EP=SP/P.
考慮到測試的應(yīng)用環(huán)境,本文的加速比與效率評價中包括了單節(jié)點(diǎn)至主控計算機(jī)的數(shù)據(jù)傳輸時間。圖8,9分別表示2節(jié)點(diǎn)、4節(jié)點(diǎn)并行計算加速比和效率隨著數(shù)據(jù)規(guī)模變化的關(guān)系??梢缘玫揭韵陆Y(jié)論:

圖8 并行FFT計算加速比隨數(shù)據(jù)規(guī)模變化的關(guān)系Fig.8 Speedup ratio of parallel FFT algorithm with data scale

圖9 并行FFT計算效率隨數(shù)據(jù)規(guī)模變化的關(guān)系Fig.9 Parallel FFT algorithm efficiency with data scale
1) 加速比隨數(shù)據(jù)規(guī)模增加呈上升趨勢,但數(shù)據(jù)規(guī)模較大時增速變緩。從圖中可以看到4節(jié)點(diǎn)并行在221時可達(dá)2.8左右(最理想情況為4),2節(jié)點(diǎn)加速比可達(dá)1.8左右(最理想情況為2)。
2) 效率隨數(shù)據(jù)規(guī)模增大呈上升趨勢。雖然4節(jié)點(diǎn)并行計算相較于2節(jié)點(diǎn)可以獲得更大的加速比,但2節(jié)點(diǎn)的并行效率更高。
3) 數(shù)據(jù)規(guī)模較小時,并行計算的加速比和效率都比較低,這是因?yàn)樵谠撉闆r下通信時間在全部執(zhí)行時間中所占的比例大。
4) 可以看出,數(shù)據(jù)通信已是影響系統(tǒng)達(dá)到線性加速比的主要因素。
本文設(shè)計了一種網(wǎng)絡(luò)化測試系統(tǒng)中的并行數(shù)據(jù)處理模式,充分利用系統(tǒng)內(nèi)計算資源,減小網(wǎng)絡(luò)傳輸延遲,進(jìn)而提高系統(tǒng)實(shí)時性。成功實(shí)現(xiàn)了從頂層作業(yè)腳本編寫、提交,系統(tǒng)給出運(yùn)行儀器節(jié)點(diǎn)建議,并行FFT程序在建議節(jié)點(diǎn)上運(yùn)行,并將計算進(jìn)程納入資源容器進(jìn)行執(zhí)行的工作流程。實(shí)驗(yàn)結(jié)果表明,通過引入更多儀器資源,計算時間的減少較為明顯,而通信開銷卻基本不變,成為進(jìn)一步提高實(shí)時性的關(guān)鍵因素。