◆李璋靜 周祿華
基于多線程的大批量航跡處理方法研究
◆李璋靜1周祿華2
(1.中國電子科技集團(tuán)公司第二十八研究所 江蘇 210007; 2.南京萊斯信息技術(shù)股份有限公司 江蘇 210014)
在現(xiàn)有指揮信息系統(tǒng)中,單進(jìn)程的航跡處理方法已經(jīng)不能滿足大批量、更新頻率高的航跡處理,本文提出了一種分布式大批量航跡處理方法,具體是涉及在Linux環(huán)境下,基于多線程的航跡處理方法,能夠快速處理和顯示大批量航跡數(shù)據(jù)。
信息系統(tǒng);大批量航跡;多線程
隨著海上運(yùn)輸和航空運(yùn)輸?shù)目焖侔l(fā)展,電子信息系統(tǒng)中需要處理的航跡數(shù)量越來越多,現(xiàn)有的單進(jìn)程處理航跡的方法越來越不能滿足系統(tǒng)處理能力的要求,只能通過增加硬件配置的方法暫時解決處理上的瓶頸。為了能在不依賴硬件升級的基礎(chǔ)上,可以通過對大批量航跡處理方法進(jìn)行優(yōu)化創(chuàng)新,采用基于多線程技術(shù),處理大量航跡并發(fā)需求,提高處理后的響應(yīng)速度,為后續(xù)航跡顯示提供基礎(chǔ)。
在電子信息處理系統(tǒng)中,會根據(jù)功能需要在每個處理服務(wù)器的Linux 系統(tǒng)上,部署不同的處理功能模塊,每個功能模塊就是一個進(jìn)程。在一個進(jìn)程中,包含一個線程或多個線程,多線程服務(wù)器程序在處理不同業(yè)務(wù)功能是,進(jìn)程只需要啟動一個,再通過該進(jìn)程中的多個線程,可以處理不同業(yè)務(wù)的并發(fā)需求,提高處理速度。
目前,主流多任務(wù)操作系統(tǒng)(如Linux、Unix)大多提供線程機(jī)制[2]。利用多線程可將進(jìn)程的任務(wù)劃分為多個線程執(zhí)行,尤其在多核處理器的環(huán)境中,線程被調(diào)度到不同的處理核上執(zhí)行,使程序運(yùn)行效率得到顯著提高。線程是程序中一個單一的順序控制流程。在單個程序中同時運(yùn)行多個線程完成不同的工作,稱為多線程。線程和進(jìn)程的區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個線程則共享數(shù)據(jù)空間,每個線程有自己的執(zhí)行堆棧和程序計(jì)數(shù)器為其執(zhí)行上下文,多線程主要是為了節(jié)約CPU時間。
使用多線程的優(yōu)點(diǎn):使用線程可以把占據(jù)長時間的程序中的任務(wù)放到后臺去處理;用戶界面可以更加吸引人,這樣比如用戶點(diǎn)擊了一個按鈕去觸發(fā)某些事件的處理,可以彈出一個進(jìn)度條來顯示處理的進(jìn)度;程序的運(yùn)行速度可能加快;在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了,在這種情況下可以釋放一些珍貴的資源如內(nèi)存占用等。
在航跡融合處理為電子信息系統(tǒng)的核心和關(guān)鍵,能引接并處理系統(tǒng)各種航跡數(shù)據(jù)信息,實(shí)現(xiàn)航跡信息的融合。包括原始航跡的質(zhì)量分析與監(jiān)控、單路航跡的平滑處理、航跡的融合處理等。
原始航跡的質(zhì)量分析與監(jiān)控就是對進(jìn)入電子信息系統(tǒng)的雷達(dá)信號質(zhì)量進(jìn)行分析、監(jiān)視和控制,并根據(jù)監(jiān)視和控制的結(jié)果計(jì)算雷達(dá)校正因子和各個雷達(dá)的融合權(quán)系數(shù),該功能可以人工或自動補(bǔ)償雷達(dá)在方位和距離上的偏差,提高雷達(dá)探測精度,同時為后續(xù)的多雷達(dá)跟蹤處理提供必要的融合參數(shù)。主要是考慮通訊線路的傳輸質(zhì)量和雷達(dá)的性能等因素,通過統(tǒng)計(jì)下列信息,進(jìn)行各雷達(dá)融合權(quán)系數(shù)的實(shí)時計(jì)算:
(1)在某個時間段內(nèi)接收航跡信息的統(tǒng)計(jì);
(2)接收的數(shù)據(jù)幀中正確和錯誤數(shù)據(jù)項(xiàng)的統(tǒng)計(jì);
(3)傳輸項(xiàng)中必須傳輸項(xiàng)的丟失統(tǒng)計(jì);
(4)雷達(dá)天線周期的估算和統(tǒng)計(jì);
(5)測試目標(biāo)的位置誤差的正確性統(tǒng)計(jì);
(6)測試目標(biāo)的方位誤差統(tǒng)計(jì);
(7)監(jiān)視源置信度標(biāo)志統(tǒng)計(jì)。
當(dāng)發(fā)現(xiàn)監(jiān)視的數(shù)據(jù)異常時,將在系統(tǒng)監(jiān)控界面上實(shí)時告警,當(dāng)單個或者多個數(shù)據(jù)源質(zhì)量異?;蛘咧袛鄷r,系統(tǒng)能對其進(jìn)行隔離,可以使得系統(tǒng)航跡工作正常;系統(tǒng)能根據(jù)數(shù)據(jù)源置信度標(biāo)志來判斷數(shù)據(jù)的可用性。
對于數(shù)據(jù)輸入,系統(tǒng)地監(jiān)視數(shù)據(jù)處理功能和監(jiān)控功能能提供軟件和硬件故障隔離機(jī)制。在硬件方面,對于所有串口輸入/輸出分配器可以通過硬件開關(guān)單獨(dú)控制某一通道的開關(guān),關(guān)閉的串口在監(jiān)視畫面上有明顯的LED指示。在軟件方面,在系統(tǒng)監(jiān)控席位上可以通過可視化選項(xiàng)單獨(dú)開關(guān)某一通道的輸入輸出。關(guān)斷后監(jiān)控界面能有明顯的區(qū)別顯示。
系統(tǒng)通過接口設(shè)備完成多部雷達(dá)其它或者信息系統(tǒng)的綜合航跡信息,并且經(jīng)過前置處理和監(jiān)視數(shù)據(jù)處理完成每個單雷達(dá)的航跡形成功能,包括雷達(dá)信息的解析、目標(biāo)時空對準(zhǔn)、單航跡的配對以及單航跡的跟蹤,形成單監(jiān)視源航跡信息,并且通過系統(tǒng)的網(wǎng)絡(luò)把這些信息發(fā)送到席位上。
在各個席位上都可以顯示單雷達(dá)點(diǎn)跡、單雷達(dá)航跡、多雷達(dá)航跡,實(shí)時模式和回放模式可同時顯示航跡顯示,這樣維護(hù)人員可以進(jìn)行故障分析。當(dāng)單監(jiān)視源航跡形成后,通過監(jiān)視數(shù)據(jù)處理形成融合航跡,并且在各自的席位上顯示。單個雷達(dá)輸入信號異常時,系統(tǒng)能保證系統(tǒng)航跡不產(chǎn)生影響。
電子信息系統(tǒng)一般采用多雷達(dá)數(shù)據(jù)跟蹤濾波算法,該算法采用交互模型的卡爾曼動態(tài)跟蹤算法[3],該算法包括三種處理模型:固定速度直線的航空器運(yùn)動、持續(xù)轉(zhuǎn)彎率的航空器運(yùn)動、持續(xù)縱向加速,根據(jù)航空器不同的飛行階段采用不同的模型,每種階段的模型都需要保證系統(tǒng)航跡輸出的穩(wěn)定和準(zhǔn)確。
將原始航跡的質(zhì)量分析與監(jiān)控、單路航跡的平滑處理和航跡的融合處理之間單個任務(wù)能夠獨(dú)立運(yùn)行。在正常情況下,可以接入32路雙通道雷達(dá)數(shù)據(jù),1000批航跡數(shù)據(jù)的處理要求,航跡融合處理可以實(shí)現(xiàn)按順序控制流程進(jìn)行處理,保證系統(tǒng)航跡的連續(xù)性和易處理性。當(dāng)發(fā)展到可以接入64路雙通道雷達(dá)、2048批航跡數(shù)據(jù)的需求時,原有的處理流程不能完全滿足系統(tǒng)要求,此時就需要采用基于多線程的大批量航跡處理方法,合理配置和調(diào)度航跡數(shù)據(jù)處理子線程,達(dá)到服務(wù)器能夠承受的負(fù)載范圍內(nèi)取得高效的處理結(jié)果??傮w設(shè)計(jì)工作流程圖如圖1。
如何合理地配置以及調(diào)度不同業(yè)務(wù)的子線程,以達(dá)到在服務(wù)器能夠承受的負(fù)荷范圍內(nèi)取得高效的大批量航跡處理效果是本系統(tǒng)的研究難點(diǎn),本文通過以下方案解決該問題:
圖1 多線程的航跡處理流程圖
在原始航跡的質(zhì)量分析與監(jiān)控模塊中,采用多線程單路處理技術(shù),因?yàn)榉侄嗌賳温返臄?shù)量與服務(wù)器性能有關(guān),現(xiàn)有服務(wù)器都是多CPU、多核配置,可以根據(jù)以往單CPU、單核的處理經(jīng)驗(yàn),并結(jié)合實(shí)際測試測試情況進(jìn)行分路處理,具體測試方法如下:
將不同數(shù)量的雷達(dá)分配各自的線程處理,并模擬輸出相當(dāng)?shù)暮桔E數(shù)據(jù)(每路可產(chǎn)生500批航跡),記錄機(jī)器資源的使用情況,包括內(nèi)存、CPU 使用率等。然后還可以再進(jìn)行不斷增加每個線程處理的雷達(dá)數(shù)量,最終應(yīng)滿足在保證系統(tǒng)穩(wěn)定運(yùn)行的前提下實(shí)現(xiàn)高效的、實(shí)時的質(zhì)量分析與監(jiān)控工作[4]。通過測試,在CPU2.4,四核的處理機(jī)上,分配四個線程、每個線程處理16路雷達(dá)時,性能和處理效果最佳。
在單路航跡的平滑處理模塊中,接收到的每路航跡經(jīng)過航跡的質(zhì)量分析和監(jiān)控,航跡的質(zhì)量因子也進(jìn)行區(qū)分,因此不需要再進(jìn)行每路航跡的分析處理,因此在進(jìn)行單路航航跡平滑處理時,采用多線程多路處理技術(shù),根據(jù)之前單進(jìn)程處理機(jī)制,將其分為兩個線程,每個線程可以處理32路雷達(dá)數(shù)據(jù),對單航跡進(jìn)行跟蹤,形成單監(jiān)視源航跡信息。
在航跡的融合處理模塊中,將采用多線程分區(qū)域融合處理技術(shù)。因?yàn)樵诖笈?、大范圍的環(huán)境中,基本都采用卡爾曼濾波算法,該算法在信息系統(tǒng)領(lǐng)域得到廣泛應(yīng)用以后,也逐漸稱為多傳感器信息融合系統(tǒng)的主要技術(shù)手段之一,在此基礎(chǔ)上又設(shè)計(jì)了聯(lián)合卡爾曼濾波器。聯(lián)合卡爾曼濾波器設(shè)計(jì)的基本思想是先分散處理、再全局融合,即在諸多非相似子系統(tǒng)中選擇一個信息全面、輸出速率高、可靠性絕對保證的子系統(tǒng)作為公共參考系統(tǒng),與其它子系統(tǒng)兩兩結(jié)合,形成若干子濾波器。各子濾波器并行運(yùn)行,獲得建立在子濾波器局部量測基礎(chǔ)上的局部最優(yōu)估計(jì),這些局部最優(yōu)估計(jì)在主濾波器內(nèi)按加權(quán)平均融合算法合成,從而獲得建立在所有量測基礎(chǔ)上的全局估計(jì)。該算法可以通過多線程分區(qū)域進(jìn)行處理,每個線程處理一片區(qū)域,在該區(qū)域中使用卡爾曼濾波算法進(jìn)行融合處理,減少同時對所有航跡進(jìn)行融合所占用的資源,而在區(qū)域之間的邊緣處,在采用融合拼接的算法,對航跡進(jìn)行處理,達(dá)到完整的綜合航跡處理效果。具體處理結(jié)構(gòu)圖如圖2。
圖2 多線程分區(qū)域處理結(jié)構(gòu)圖
本技術(shù)的實(shí)現(xiàn)是在Linux平臺下使用C語言開發(fā)完成,通訊方面使用進(jìn)程間的消息隊(duì)列接口??紤]有多個功能模塊都采用多線程來實(shí)現(xiàn),在方案中實(shí)際需求最多建立4個線程,以及1 個主進(jìn)程。因此以實(shí)現(xiàn)原始航跡的質(zhì)量分析與監(jiān)控模塊為例,進(jìn)行多線程技術(shù)的實(shí)現(xiàn)。為實(shí)現(xiàn)線程控制和調(diào)度,應(yīng)對計(jì)算機(jī)控制中的事件驅(qū)動任務(wù)和內(nèi)部時鐘進(jìn)行設(shè)計(jì),首先內(nèi)部時鐘線程的優(yōu)先級高于其他工作任務(wù)的線程,因此在中斷設(shè)置中藥實(shí)時處理內(nèi)部時鐘線程。具體實(shí)現(xiàn)流程圖如圖3。
圖3 多線程技術(shù)實(shí)現(xiàn)流程圖
具體軟件代碼實(shí)現(xiàn)如下:
pthread_t pid[3];
if(pthread_create(&pid[0],NULL,send_ds25,NULL)!=0)
perror(" pthread create error !!");
/*創(chuàng)建時鐘同步線程 */
void *send_ds25()
{
int i = 0,j = 0,pid_recv,rt;
for(;;)
{
rt=send_msg(buff_25ds);// 輸出0.25秒同步時鐘
zlsleep(0,250000);
i++;
if(i == 4)
{
send_msg(buff_ds); //輸出1秒同步時鐘
i = 0;
}
}
本文提出了基于多線程的大批量航跡處理方法,通過合理的配置以及調(diào)度多線程,采用多線程單路處理技術(shù)、多線程分路處理技術(shù)以及以及多線程分區(qū)域融合處理技術(shù),解決了傳統(tǒng)單進(jìn)程大批量航跡處理給服務(wù)器造成負(fù)載過重的瓶頸問題,實(shí)現(xiàn)了高效、實(shí)時的大批量航跡處理。
[1]唐自峰,劉竹旺,閆修林.分布式系統(tǒng)緩存一致性設(shè)計(jì)與應(yīng)用[J].指揮信息系統(tǒng)與技術(shù),2015.
[2]唐靖飚.Unix 平臺下C 語言高級編程指南[M].北京:希望電子出版社,2000.
[3]聶健蓀,游志等.多雷達(dá)數(shù)據(jù)處理(MRDP)[J].計(jì)算機(jī)應(yīng)用,2000.
[4]唐靖飚,周良源.基于多線程機(jī)制的電力數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2015.