基于多线程的大批量航迹处理方法研究
2018-10-17李璋静周禄华
◆李璋静 周禄华
基于多线程的大批量航迹处理方法研究
◆李璋静1周禄华2
(1.中国电子科技集团公司第二十八研究所 江苏 210007; 2.南京莱斯信息技术股份有限公司 江苏 210014)
在现有指挥信息系统中,单进程的航迹处理方法已经不能满足大批量、更新频率高的航迹处理,本文提出了一种分布式大批量航迹处理方法,具体是涉及在Linux环境下,基于多线程的航迹处理方法,能够快速处理和显示大批量航迹数据。
信息系统;大批量航迹;多线程
0 引言
随着海上运输和航空运输的快速发展,电子信息系统中需要处理的航迹数量越来越多,现有的单进程处理航迹的方法越来越不能满足系统处理能力的要求,只能通过增加硬件配置的方法暂时解决处理上的瓶颈。为了能在不依赖硬件升级的基础上,可以通过对大批量航迹处理方法进行优化创新,采用基于多线程技术,处理大量航迹并发需求,提高处理后的响应速度,为后续航迹显示提供基础。
1 Linux下的多线程技术介绍
在电子信息处理系统中,会根据功能需要在每个处理服务器的Linux 系统上,部署不同的处理功能模块,每个功能模块就是一个进程。在一个进程中,包含一个线程或多个线程,多线程服务器程序在处理不同业务功能是,进程只需要启动一个,再通过该进程中的多个线程,可以处理不同业务的并发需求,提高处理速度。
目前,主流多任务操作系统(如Linux、Unix)大多提供线程机制[2]。利用多线程可将进程的任务划分为多个线程执行,尤其在多核处理器的环境中,线程被调度到不同的处理核上执行,使程序运行效率得到显著提高。线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文,多线程主要是为了节约CPU时间。
使用多线程的优点:使用线程可以把占据长时间的程序中的任务放到后台去处理;用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度;程序的运行速度可能加快;在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了,在这种情况下可以释放一些珍贵的资源如内存占用等。
2 航迹融合处理原理
在航迹融合处理为电子信息系统的核心和关键,能引接并处理系统各种航迹数据信息,实现航迹信息的融合。包括原始航迹的质量分析与监控、单路航迹的平滑处理、航迹的融合处理等。
2.1 原始航迹的质量分析与监控
原始航迹的质量分析与监控就是对进入电子信息系统的雷达信号质量进行分析、监视和控制,并根据监视和控制的结果计算雷达校正因子和各个雷达的融合权系数,该功能可以人工或自动补偿雷达在方位和距离上的偏差,提高雷达探测精度,同时为后续的多雷达跟踪处理提供必要的融合参数。主要是考虑通讯线路的传输质量和雷达的性能等因素,通过统计下列信息,进行各雷达融合权系数的实时计算:
(1)在某个时间段内接收航迹信息的统计;
(2)接收的数据帧中正确和错误数据项的统计;
(3)传输项中必须传输项的丢失统计;
(4)雷达天线周期的估算和统计;
(5)测试目标的位置误差的正确性统计;
(6)测试目标的方位误差统计;
(7)监视源置信度标志统计。
当发现监视的数据异常时,将在系统监控界面上实时告警,当单个或者多个数据源质量异常或者中断时,系统能对其进行隔离,可以使得系统航迹工作正常;系统能根据数据源置信度标志来判断数据的可用性。
对于数据输入,系统地监视数据处理功能和监控功能能提供软件和硬件故障隔离机制。在硬件方面,对于所有串口输入/输出分配器可以通过硬件开关单独控制某一通道的开关,关闭的串口在监视画面上有明显的LED指示。在软件方面,在系统监控席位上可以通过可视化选项单独开关某一通道的输入输出。关断后监控界面能有明显的区别显示。
2.2 单路航迹的平滑处理
系统通过接口设备完成多部雷达其它或者信息系统的综合航迹信息,并且经过前置处理和监视数据处理完成每个单雷达的航迹形成功能,包括雷达信息的解析、目标时空对准、单航迹的配对以及单航迹的跟踪,形成单监视源航迹信息,并且通过系统的网络把这些信息发送到席位上。
在各个席位上都可以显示单雷达点迹、单雷达航迹、多雷达航迹,实时模式和回放模式可同时显示航迹显示,这样维护人员可以进行故障分析。当单监视源航迹形成后,通过监视数据处理形成融合航迹,并且在各自的席位上显示。单个雷达输入信号异常时,系统能保证系统航迹不产生影响。
2.3 多路航迹的融合处理
电子信息系统一般采用多雷达数据跟踪滤波算法,该算法采用交互模型的卡尔曼动态跟踪算法[3],该算法包括三种处理模型:固定速度直线的航空器运动、持续转弯率的航空器运动、持续纵向加速,根据航空器不同的飞行阶段采用不同的模型,每种阶段的模型都需要保证系统航迹输出的稳定和准确。
3 基于多线程的大批量航迹处理方法架构实现
将原始航迹的质量分析与监控、单路航迹的平滑处理和航迹的融合处理之间单个任务能够独立运行。在正常情况下,可以接入32路双通道雷达数据,1000批航迹数据的处理要求,航迹融合处理可以实现按顺序控制流程进行处理,保证系统航迹的连续性和易处理性。当发展到可以接入64路双通道雷达、2048批航迹数据的需求时,原有的处理流程不能完全满足系统要求,此时就需要采用基于多线程的大批量航迹处理方法,合理配置和调度航迹数据处理子线程,达到服务器能够承受的负载范围内取得高效的处理结果。总体设计工作流程图如图1。
如何合理地配置以及调度不同业务的子线程,以达到在服务器能够承受的负荷范围内取得高效的大批量航迹处理效果是本系统的研究难点,本文通过以下方案解决该问题:
3.1 采用多线程单路处理技术
图1 多线程的航迹处理流程图
在原始航迹的质量分析与监控模块中,采用多线程单路处理技术,因为分多少单路的数量与服务器性能有关,现有服务器都是多CPU、多核配置,可以根据以往单CPU、单核的处理经验,并结合实际测试测试情况进行分路处理,具体测试方法如下:
将不同数量的雷达分配各自的线程处理,并模拟输出相当的航迹数据(每路可产生500批航迹),记录机器资源的使用情况,包括内存、CPU 使用率等。然后还可以再进行不断增加每个线程处理的雷达数量,最终应满足在保证系统稳定运行的前提下实现高效的、实时的质量分析与监控工作[4]。通过测试,在CPU2.4,四核的处理机上,分配四个线程、每个线程处理16路雷达时,性能和处理效果最佳。
3.2 多线程多路处理技术
在单路航迹的平滑处理模块中,接收到的每路航迹经过航迹的质量分析和监控,航迹的质量因子也进行区分,因此不需要再进行每路航迹的分析处理,因此在进行单路航航迹平滑处理时,采用多线程多路处理技术,根据之前单进程处理机制,将其分为两个线程,每个线程可以处理32路雷达数据,对单航迹进行跟踪,形成单监视源航迹信息。
3.3 多线程分区域处理技术
在航迹的融合处理模块中,将采用多线程分区域融合处理技术。因为在大批量、大范围的环境中,基本都采用卡尔曼滤波算法,该算法在信息系统领域得到广泛应用以后,也逐渐称为多传感器信息融合系统的主要技术手段之一,在此基础上又设计了联合卡尔曼滤波器。联合卡尔曼滤波器设计的基本思想是先分散处理、再全局融合,即在诸多非相似子系统中选择一个信息全面、输出速率高、可靠性绝对保证的子系统作为公共参考系统,与其它子系统两两结合,形成若干子滤波器。各子滤波器并行运行,获得建立在子滤波器局部量测基础上的局部最优估计,这些局部最优估计在主滤波器内按加权平均融合算法合成,从而获得建立在所有量测基础上的全局估计。该算法可以通过多线程分区域进行处理,每个线程处理一片区域,在该区域中使用卡尔曼滤波算法进行融合处理,减少同时对所有航迹进行融合所占用的资源,而在区域之间的边缘处,在采用融合拼接的算法,对航迹进行处理,达到完整的综合航迹处理效果。具体处理结构图如图2。
图2 多线程分区域处理结构图
3.4 多线程技术的实现
本技术的实现是在Linux平台下使用C语言开发完成,通讯方面使用进程间的消息队列接口。考虑有多个功能模块都采用多线程来实现,在方案中实际需求最多建立4个线程,以及1 个主进程。因此以实现原始航迹的质量分析与监控模块为例,进行多线程技术的实现。为实现线程控制和调度,应对计算机控制中的事件驱动任务和内部时钟进行设计,首先内部时钟线程的优先级高于其他工作任务的线程,因此在中断设置中药实时处理内部时钟线程。具体实现流程图如图3。
图3 多线程技术实现流程图
具体软件代码实现如下:
pthread_t pid[3];
if(pthread_create(&pid[0],NULL,send_ds25,NULL)!=0)
perror(" pthread create error !!");
/*创建时钟同步线程 */
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;
}
}
4 结束语
本文提出了基于多线程的大批量航迹处理方法,通过合理的配置以及调度多线程,采用多线程单路处理技术、多线程分路处理技术以及以及多线程分区域融合处理技术,解决了传统单进程大批量航迹处理给服务器造成负载过重的瓶颈问题,实现了高效、实时的大批量航迹处理。
[1]唐自峰,刘竹旺,闫修林.分布式系统缓存一致性设计与应用[J].指挥信息系统与技术,2015.
[2]唐靖飚.Unix 平台下C 语言高级编程指南[M].北京:希望电子出版社,2000.
[3]聂健荪,游志等.多雷达数据处理(MRDP)[J].计算机应用,2000.
[4]唐靖飚,周良源.基于多线程机制的电力数据采集系统设计与实现[J].计算机应用与软件,2015.