[发明专利]一种从多缓冲区收取数据的优化轮询系统和方法有效
申请号: | 201110384059.1 | 申请日: | 2011-11-28 |
公开(公告)号: | CN102521149A | 公开(公告)日: | 2012-06-27 |
发明(设计)人: | 刘朝辉;李锋伟;窦晓光;姬乃军 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 缓冲区 收取 数据 优化 系统 方法 | ||
技术领域
本发明属于网络数据处理领域,具体涉及一种从多缓冲区收取数据的优化轮询系统和方法。
背景技术
网络数据采集系统中,经常需要在一台处理设备上安装多块数据采集卡,每个采集卡有自己的数据缓冲区,或者一个采集卡上有多个数据缓冲区,也就需要软件从多个缓冲区轮询收取数据。
现有技术的一般系统的轮询方式有两种:
第一种方式是贪婪访问;软件从第一个缓冲区开始,依次轮询每个缓冲区,不论缓冲区有多少数据,都读取出来,直到读空一个缓冲区后,再去访问下一个缓冲区。比如假设有三个缓冲区,软件先从第一个缓冲区读取数据,直到第一个缓冲区的所有数据被取空后,再查看第二个缓冲区,读取数据,读空第二个缓冲区后,再读第三个缓冲区,读空第三个缓冲区后,再从第一个缓冲区读取数据。
第二种方式是平均访问;软件从第一个缓冲区开始,依次轮询每个缓冲区,如果缓冲区有数据,不论缓冲区有多少数据,只读取一个数据,就去访问下一个缓冲区。比如假设有三个缓冲区,软件先查看第一个缓冲区,如果有数据,就读取一个数据出来,然后直接查看第二个缓冲区,如果有数据,也是只读一个,然后再读第三个缓冲区,再回到第一个缓冲区。
现有技术的轮询方式存在以下问题:
采用第一种贪婪访问的方式,在一个时间段内处理一个缓冲区的数据,会导致缓冲区对应的处理cpu的负载不平衡,也就是说,假设每个缓冲区内都有较多数据,按照贪婪访问方式,软件会把一个缓冲区的数据全部处理完才去处理下一个缓冲区内的数据,在这个处理过程中,与当前处理缓冲区所对应的cpu负载很大,同时其他缓冲区所对应的cpu是空闲的,cpu负载不均衡会导致整个系统的性能低下。
采用第二种平均访问的方式,当多个缓冲区之间的负载不均衡时,会导致软件频繁的查看空缓冲区,也就是说,假设多个缓冲区中只有一个缓冲区中有大量数据,其他都是空缓冲区,按照平均访问方式,软件会轮流查看每个缓冲区,对有数据的缓冲区,每次访问只取一个数据,对没有数据的缓冲区,每次也要去查看,查看缓冲区时需要软件切换缓冲区,其中包括连接缓冲区,取出缓冲区读写指针,进行比较判断等操作,如果多数缓冲区是空的,频繁的缓冲区切换带来的开销会导致不必要的系统性能损失。
一般系统实现中,缓冲区轮询采用的贪婪访问和平均访问模式,每次启动缓冲区访问,都是按缓冲区编号依次轮询的,也没有考虑到缓冲区不平衡的情况。假设有n个缓冲区,只有最后一个,即第n个缓冲区有数据,前面n-1个缓冲区都是空的,那么,每次启动轮询都要从第1个缓冲区开始,都要访问n-1个空缓冲区,也会带来不必要的额外开销。
发明内容
为克服上述缺陷,本发明提供了一种从多缓冲区收取数据的优化轮询系统和方法,在轮询多缓冲区时,在尽量保证多缓冲区之间的负载均衡的同时,又尽量减少查看空缓冲区的额外开销。
为实现上述目的,本发明提供一种从多缓冲区收取数据的优化轮询系统,所述轮询系统包括:缓冲区和访问所述缓冲区的轮询控制模块;其改进之处在于,所述轮询控制模块包括步长数组和静态变量;所述步长数组和所述静态变量分别对所述缓冲区进行轮询访问。
本发明提供的优选技术方案中,所述缓冲区数量为n个。
本发明提供的第二优选技术方案中,所述步长数组,在每个缓冲区设置一个步长,所述步长表示每次轮询到该缓冲区时,每次最多从缓冲区内读取的数据长度。
本发明提供的第三优选技术方案中,所述静态变量记录每次轮询起始的缓冲区编号,在每次启动轮询时,从所述静态变量记录的上次轮询到的、有数据的缓冲区开始。
本发明提供的第四优选技术方案中,所述缓冲区步长最小为1。
本发明提供的第五优选技术方案中,提供一种从多缓冲区收取数据的优化轮询方法,其改进之处在于,所述方法包括如下步骤:
(1).初始化所述轮询控制模块,其中把所述静态变量的起始缓冲区编号初始化为0,并把所述步长数组的每个缓冲区的步长初始化为1;
(2).轮询所述静态变量获得当前开始轮询的缓冲区编号,从所述步长数组中获得当前缓冲区的步长;
(3).按照步长,从当前缓冲区中读取相应长度的数据;
(4).如果当前缓冲区内的数据长度超过了它的步长,则把该缓冲区对应的步长加一,起始缓冲区编号保持不变;否则把该缓冲区的步长减一,且修改起始缓冲区编号。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110384059.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:双凸轮弹簧装置
- 下一篇:基于虚拟机的GPU集群管理系统
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置