欢迎来到天天文库
浏览记录
ID:54983424
大小:232.82 KB
页数:2页
时间:2020-05-07
《基于IOCP机制的负控管理系统研究-论文.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、电力科技基于IOCP机制的负控管理系统研究巢琪(常州供电公司,江苏常州213004)【摘要】针对电力负控管理系统的客户端连接数量多、数据客户端的连入一般采用Accept方式,而采用AcceptEx方式接收和发送频繁的现状,提出一种基于I/O完成端口(IOCP:I/0可以使性能进一步优化。采用Ac—ceptEx方式的工作流程如图2completionport)机制的大规模负控管理系统体系结构。研究了引入所示。传统的Accept函数接收客户端时,Accept函数需要创建一IOCP机制的通信模块的基本原理、实现方案和关键问题解决方法。个新的socket
2、作为返回值,分配给接入的客户端:客户端断开连【关键词】大规模电力管理系统;负控软件;完成端口接时,创建的socket会被销毁。创建socket是一个浪费系统资源的操作:如果短时间内并发连接的客户端不多的话,用Accept和1负控管理系统体系结构AcceptEx性能上区别不大,但是当并发数目增多时,如果使用负控管理系统是一个着眼于全面加强电力信息管理的,集负荷Accept方式,系统会出现WSAENOBUFS问题,这是由于系统不能及控制、远程抄表、电量数据分析和监测以及电力营销管理等多种功时为客户端创建socket造成的。而AcceptEx函数把事先
3、创建好能于一体的综合性分析与处理系统。负控管理系统分为3层结构:的socket对象,分配给接收到的客户端,其原理为:首先创建好主站层、通信层和采集设备层,其系统结构如图1所示。在大规模一定数量的socket对象,形成一个连接池,当接收到客户端的连的负控管理系统中,具有众多的远程采集终端设备和c/s客户端,接请求时,从连接池中取出空闲的socket对象,分配给该客户端,远程采集终端负责采集海量的设备信息,并定时上送至主站。c/s客断开连接时,再将socket放回连接队列。连接池的设计减少了客户端进行日常电费收缴、用户查询、报表打印等工作,并能实现对
4、户端socket的不断创建与销毁,节省了大量的系统资源。用户电表的管理与控制功能,其并发访问服务器的概率较大。这都对服务器的网络通信性能提出了较高要求。为此,在软件开发中,通过在网络通信模块中引入IOCP机制,以优化软件系统中服务器的网络通信性能,进而增强系统的稳定性。2IOCP网络通信模块2.1I/O完成端口IOCP是一个通知队列,操作系统把已经完成的重叠i/o请求消息放入其中,某项I/O操作一旦完成,对该操作结果进行处理的工作者线程就会收到通知,完成对操作的后续处理。API函数createIoc0mp1etionPort将一个I/0完成端口与
5、一个或多个客户端套接字发生关联。当与一个完成端口相关的套接字启动的异步I/0操作完成时,相应的i/o完成包就会进入到该I/O完成端口队列中:对于多个套接字来说,此机制可以将多个I/0的完成包放入单个队列中。API函数GetQueuedc0Ⅲp1etionstatus将线程与某个指定的I/0完成端口建立联系,此线程会阻塞它的运行于完成端口,直至有I/O完成包进入到完成端口队列中。客户端套接字在被创建后,可以在任何时候与I/O完成端口进行关联。完成端口通信模型充分利用内核对象的调度,只使用少量的几个线程来处理和客户端的所有通信,消除图2AcceptE
6、x方式工作基本流程了无谓的线程上/下文切换,最大限度地提高了网络通信的性能。I2.3IOCP通信模块难点解析/O完成端口最重要的特性是并发量。该并发量限制了与该完成端口IOCP机制虽然具有诸多优点,但实际使用中需要解决许多棘手相关联的可运行线程数目,当与该完成端口相关联的可运行线程数的问题,如信息定位、内存资源管理、恶意客户连接及完成包排序目达到了该并发量,系统就会阻塞任何与该完成端口。等。在大规模负控管理系统中客户端并发量大,远程终端设备定时上传数据期间数据量巨大,GPRS连接线路掉线频繁,这都使得上述问题尤为明显。2.3.1信息定位在大规模负
7、控管理系统中,必定有大量的远程终端和客户端并发访问服务器,如何在工作线程中获取从完成端口中读取的I/O完成包相关的客户端信息以及数据信息是一个难点。函数GetQueuedc0珂p1etionstatus传递给工作者线程的参数中具有两个“伸缩”作用的参数,一个是指向“完成键”(CompletionKey)的PULONGPTR类型指针IpCompietionKey,它所指向的“完成键”其m墨嚣曼穗甏实是函数CreateloCompletionPort(在客户端套接字与完成端口相关联时调用)传入的Com—pletionKey参数,此参数可以是自定-义的
8、结构体:另一个是指向Overlapped结构体类型的指针,它其实是指向在投递I/0请求时传入的Overlapped结构体的参数,操作者可
此文档下载收益归作者所有