首页 资讯 招标 项目 展会 更多

位置:首页 > 新闻频道 > 技术动态


基于IOCP模型的地震勘探服务器系统设计

2016-05-12 10:48:11 安装信息网

相关链接: 中国安全网 中国质量网 中国论文网 中国资讯网

 谢俊宇,周  严

 (南京理工大学机械工程学院,江苏南京210094)

摘要:针对地震勘探中网络传输系统遇到的数据量大、传输速度慢、地震勘探服务器性能不足的问题,设计了基于IOCP传输模型的地震勘探服务器系统。通过对IOCP传输模型的深入分析,设计了多个地震采集道的并发高速传输的服务器软件系统。最后,利用实际的地震采集道进行传输性能测试,测试表明,采用IOCP传输模型的服务器系统可以在原有的硬件基础上大幅度提高网络传输速度,并且稳定性更高,能够满足地震勘探过程中对网络传输的要求。

 关键词:地震勘探;网络传输;完成端口

 中图分类号:TP39文章编号:1006 - 2394( 2016) 04 - 0018  - 04

0引言

 地震勘探是目前最主要的油气资源勘探方法,地震采集数据的传输主要基于有线或者无线以太网进行数据传输,在中等规模的地震勘探采集系统中,采集道的数目通常维持在几百到上千的数量级别,这些采集道由中央工作站进行统一控制,中央工作站作为服务器通常需要承担管理众多采集道的功能。

 在目前采用的传统的C/S(服务器/客户端)编程模型中,通常采用“一个线程对应一个客户端”的服务器方案,这种方案一方面会极大地消耗服务器的资源,另一方面会加大服务器的处理负担,服务器需要不停的在各个线程中进行切换,一旦切换失败,就会导致服务器系统的崩溃。

 本文针对地震勘探中地震采集道众多的特点,采用IOCP(完成端口)机制合理地处理客户端的并发和传输问题,使得服务器的资源可以被合理应用和调度,有效解决地震勘探系统中服务器压力问题,大幅度提高地震勘探服务器的运行效率。

1地震勘探网络传输系统的构成

 本文研究的地震勘探系统主要由中央工作站和采集节点组成,中央工作站和采集节点之间通过无线网络进行通信,无线通信采用802.11 b/g/n标准。采集节点部署在测线上,每条测线部署一定数量的采集节点,采集节点包含检波器、采集设备、无线传输设备、GPS设备等部分,测线由拖曳车辆牵引。在网络系统中部署一定数量的AP设备,所有的采集节点就近接入AP形成无线传输网络,所有的AP设备和中央工作站都接入交换机组成有线传输网络;网络拓扑模型为星型网络,避免了因为采集点的单点故障造成整个网络系统的瘫痪。系统的结构图如图1所示。

 中央工作站是网络控制的核心,所有的地震采集客户端都需要连接至中央工作站,中央工作站服务器系统承担着协调各个地震采集道进行传输和指令控制的功能。 

 如图2所示为地震勘探服务器的总体组成结构,其中采集模块、指令包解析模块等都建立在IOCP通信模块的基础上;IOCP通信模块是整个服务器系统中最关键的组成模块,IOCP通信模块主要负责进行地震采集道的连接以及地震采集道和服务器之间的数据通信,本文将主要对IOCP通信模块的原理和实现进行探索。

2地震勘探网络服务器系统设计和实现

2.1完成端口(IOCP)的通信框架

 IOCP(IO Completion Port,完成端口)是一种重叠I/O模型,在微软引入IOCP之前,服务器程序的其他设计方式通常为使用并发模型,所谓并发模型是指服务器在启动时首先建立监听线程,此监听线程专门用于等待客户端的连接请求,每当有一个新的客户端连接请求到达时,监听线程将会创建一个新的线程服务该请求。在响应该服务请求的同时,监听线程将继续等待下一个客户连接请求,即当存在多个客户端连接时,就会存在多个线程每个线程服务于一个连接。

 在通常地震勘探中,采集道的规模至少在100道以上,大型的勘探系统甚至含有数万的采集道。在本文设计的拖曳式地震勘探系统中,地震道的规模在100~1 000道之间,中央工作站为4核心的CPU,采集道作为客户端不断地对中央工作站发起网络请求,可见,本文设计的服务器系统中,客户端的规模远远大于CPU的核心数,如果仍然采用并发模型,服务器系统的性能将会急剧下降,不仅影响网络传输的可靠性,也会影响网络传输的速度。

 IOCP模型即用来解决并发模型的缺陷,IOCP是一种特殊的内核对象,它用于在异步I/O操作完成时通知应用程序。一个IOCP内核对象可以和多个设备对象关联,即IOCP对象可以监控多个套接字上的多个网络I/O请求。一个IOCP对象会包含四个队列,即所监控设备的队列、当前所有完成通知的队列、等待线程队列、运行线程队列,如图3所示。

 由图3可以看出IOCP的工作方式:每当针对某个设备的一个异步1/0操作完成以后,系统会把一个完成通知添加到通知队列,然后再从等待线程队列中唤醒一个线程,让该线程处理完成通知,同时把该线程从等待队列中转移到运行线程。

2.2基于IOCP模型的服务器系统软件设计

2.2.1IOCP模型的建立步骤

 由前面的论述可知,IOCP模型主要由主线程和工作线程组成,本文在研究IOCP的原理的基础上分别对IOCP的主线程和工作线程进行设计,使得服务器系统能够满足地震勘探的要求。

 1)主线程设计

 主线程是IOCP模型的主要组成部分,主线程主要完成对IOCP内核对象的初始化和绑定等操作。

 ①创建完成端口

 使用IOCP模型的第一步是创建IOCP内核对象,在服务器程序中,调用CreateIoCompletionPort函数完成内核对象的创建。

  ②创建工作者线程

  工作者线程池由等待线程队列和运行线程组成,主要用于处理网络中出现各种异步I/O请求。为了保证线程调度的高效性,通常将工作者线程池中的线程数目设置为CPU数目的两倍,任意时刻,一个线程一定位于等待线程队列或者运行线程队列,服务器实现创建工作者线程的函数为CreateThread。

 ③创建监听套接字

 监听套接字需要完成对地震采集道的监听操作,该监听套接字需要与IOCP内核对象进行绑定才能完成监听操作。核心实现代码为:

 2)工作线程设计

 工作者线程池由等待线程队列和运行线程组成,主要用于处理网络中出现各种异步I/O请求。在本文设计的工作者线程中主要完成处理网络接收和发送的请求,线程同步和线程的安全退出的功能。其主要实现如下:

 ①处理网络的接收和发送

 在IOCP模型中,所有的网络接收和发送请求都通过调用WSARecv和WSASend完成。其主要实现逻辑如下:

 在WSARecv和WSASend的函数参数中,p _wbuf存储数据的缓冲区,用来给重叠操作传递参数,p_ol是OVERLAPPED类型的结构体指针,用来在异步I/O操作时传递参数。

  ②工作线程的安全退出

  在关闭服务器的时候,需要合理地退出工作线程,并释放相应的Socket资源,从而避免造成内存泄露,为此,本文设计的代码不采用TerminateThread之类的强制停止线程的函数,而采用PostQueuedCompletion-Status函数,通过向完成通知队列中添加完成通知项,线程在收到完成通知项的通知后退出线程执行函数。关键代码如下所示:

2.2.2 IOCP模型的运行流程

 根据IOCP的运行和建立步骤,得到如图4所示的IOCP服务器模型的主要运行流程,由图中可以看出,在IOCP的两种线程模型中,主线程只进行IOCP的初始化连接工作,而工作者线程负责处理所有的网络10请求操作。

3系统测试

 为了验证本文设计的IOCP(完成端口)的通信模型的正确性,在已有的地震采集道的基础上进行了传输性能测试。运行WireShark监控软件检测网络传输流量,地震采集道的采集频率设置为4 kHz,采集时长设置为10 min,分别采用传统的“一个客户端对应一个线程”的传输模型和IOCP的传输模型进行网络传输的速度对比测试,采用不同传输模型的网络流量图的对比如图5所示。

 在图5中,横坐标代表传输时间,单位为s,纵坐标表示传输速度,单位为Byte,上图是采用传统的“一个客户端对应一个线程”的地震勘探传输模型方式得到的网络传输速度图,下图为采用本文设计的IOCP传输模型得到的网络传输速度图,两者对比可以发现,采用传统的传输模型得到的传输速度慢,并且速度十分不稳定,平均速度维持在25 KByte/s,这表明系统耗费了大量的时间在进行线程切换而不是数据接收。而在采用IOCP的传输模型中,速度是传统传输模型的5~6倍,高达1.6 MByte/s,并且传输速度十分稳定。可以看见,采用IOCP模型之后的地震传输网络在传输速度和传输的稳定性方面都得到了理想地提高。在

此基础上进行传输的可靠性验证,如图6所示。

 在图6中横坐标代表采样时间,单位为s,纵坐标代表波形幅度,单位为V,由图中可得,采用IOCP模型的服务器系统不仅可以保证可靠的传输速度,也可以保证地震波在传输过程中不发生失真,充分验证了本系统的传输可靠性。

4结论

 本文针对制约地震勘探系统发展的网络传输问题,设计了一种基于IOCP模型的服务器系统,在原有硬件条件不变的情况下,相对于传统的地震勘探服务器模型,网络的传输速度和可靠性得到了理想的提高,可以有效解决目前地震勘探系统中的网络传输问题,系统的主要特点为网络传输高速可靠,符合现代低成本、高效地震勘探的发展方向。

关键字:

上一篇:基于C8051F040单片机的开关电源设计

下一篇:基于Lab VIEW和Web服务器的光纤气体传感器监控系统

行业资讯月点击排行

展会信息月点击排行

招商信息月点击排行

首页 资讯 招标 项目 展会
关于我们 | 广告服务 | 友情连接 | 联系我们
触屏版 电脑版
安装信息网 www.36qyk.cn.