CN107846328B - 基于并发无锁环形队列的网络速率实时统计方法 - Google Patents
基于并发无锁环形队列的网络速率实时统计方法 Download PDFInfo
- Publication number
- CN107846328B CN107846328B CN201711246363.3A CN201711246363A CN107846328B CN 107846328 B CN107846328 B CN 107846328B CN 201711246363 A CN201711246363 A CN 201711246363A CN 107846328 B CN107846328 B CN 107846328B
- Authority
- CN
- China
- Prior art keywords
- data
- queue
- circular queue
- real
- uplink
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0894—Packet rate
Abstract
本发明涉及基于并发无锁环形队列的网络速率实时统计方法,该方法通过使用环形缓冲区,提供一个无边界的字节流服务,存储网络速率数据。采用了该发明中的基于并发无锁环形队列的网络速率实时统计方法,使用环形缓冲区来实现,提供一个无边界的字节流服务,其优点在于,当一个数据元素被用掉后,其余数据元素不需要移动其存储位置,从而减少拷贝提高效率;该方法采用了并行无锁技术,实现单生产单消费模式的共享队列,不需要加锁同步;该方法使用自生产自消费的方法保证缓冲区数据的实时更新。
Description
技术领域
本发明网络通信领域,尤其涉及网络速率统计领域,具体是指一种基于并发无锁环形队列的网络速率实时统计方法。
背景技术
网络是现代人生活必不可少的工具,网关设备在其中起着至关重要的作用。随着互联网的发展,网络的功能已经涵盖到人们生活的方方面面,各种网络应用越来越多,功能越来越强,网络数据传输量也越来越大,这些应用都在时时占用着有限的网络带宽,用户需要知道网关设备的实时网络流量,做相应的处理,以保证用户关心的网络应用得到必要的带宽保证。
发明内容
本发明的目的是克服了上述现有技术提及的至少一个缺点,提供了一种高效统计速率的基于并发无锁环形队列的网络速率实时统计方法。
为了实现上述目的,本发明的基于并发无锁环形队列的网络速率实时统计方法如下:
该基于并发无锁环形队列的网络速率实时统计方法,其主要特点是,所述的方法包括以下步骤:
(1)启动主程序,并申请环形队列缓冲区;
(2)根据设定时间间隔,循环获取网关设备的网络上下行字节数,并根据此次的第一上下行字节数和上一次记录的第二上下行字节数计算得出此时的上下行网络速率;
(3)将计算得到的网关设备的上下行网络速率持续写入所述的环形队列缓冲区,并在所述的环形队列缓冲区刚满时取出此时位于环形队列缓冲区的第一个数据元素;
(4)web页面访问所述的网关设备,并查看所述的网关设备中的上下行网络速率,同时向所述的网关设备发送数据查询请求;
(5)所述的网关设备接收所述的数据查询请求,并从所述的环形队列缓冲区读取数据。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(1)中,所述的环形队列缓冲区的长度为2的幂次方。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(1)中,所述的环形队列缓冲区为无锁环形队列缓冲区。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(1)中,所述的环形队列缓冲区设有内存屏障单元。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(2)之前还包括以下步骤:
(2.0)创建定时器。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(2)中,所述的设定时间间隔为1秒。
该基于并发无锁环形队列的网络速率实时统计方法的环形队列缓冲区为无锁环形队列缓冲区。
该基于并发无锁环形队列的网络速率实时统计方法,有以下有益效果:
A、环形队列提供一个无边界的字节流服务,巧妙利用位运算和无符号整型数溢出特点,提高数据长度运算及拷贝效率;
B、环形队列使用内存屏障机制,所有在设置读写屏障之前发起的内存访问,必须先于在设置屏障之后发起的内存访问之前完成,保障在数据读写操作时,内存访问按照程序的顺序完成;
C、该数据统计方法使用自生产自消费的方法使环形队列中统计数据按指定时间间隔更新;
D、该数据统计方法将网络上下行字节数转换为实时上下行速率,为外部提供方便的统计接口。
采用了该发明中的基于并发无锁环形队列的网络速率实时统计方法,使用环形缓冲区来实现,提供一个无边界的字节流服务,其优点在于,当一个数据元素被用掉后,其余数据元素不需要移动其存储位置,从而减少拷贝提高效率;该方法采用了并行无锁技术,实现单生产单消费模式的共享队列,不需要加锁同步;该方法使用自生产自消费的方法保证缓冲区数据的实时更新。
附图说明
图1为本发明的环形队列缓冲区中无符号整型数溢出的示意图。
图2为本发明的基于并发无锁环形队列的网络速率实时统计方法的实现原理图。
具体实施方式
为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。
请参阅图1所示,其为本发明的环形队列缓冲区中无符号整型数溢出的示意图。该环形队列提供一个无边界的字节流服务,巧妙利用位运算和无符号整型数溢出特点,提高数据长度运算及拷贝效率。
请参阅图2,其为本发明的基于并发无锁环形队列的网络速率实时统计方法的实现原理图。该基于并发无锁环形队列的网络速率实时统计方法,其中所述的方法包括以下步骤:
(1)启动主程序,并申请环形队列缓冲区;
(2)根据设定时间间隔,循环获取网关设备的网络上下行字节数,并根据此次的第一上下行字节数和上一次记录的第二上下行字节数计算得出此时的上下行网络速率;
(3)将计算得到的网关设备的上下行网络速率持续写入所述的环形队列缓冲区,并在所述的环形队列缓冲区刚满时取出此时位于环形队列缓冲区的第一个数据元素;
(4)web页面访问所述的网关设备,并查看所述的网关设备中的上下行网络速率,同时向所述的网关设备发送数据查询请求;
(5)所述的网关设备接收所述的数据查询请求,并从所述的环形队列缓冲区读取数据。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(1)中,所述的环形队列缓冲区的长度为2的幂次方。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(1)中,所述的环形队列缓冲区为无锁环形队列缓冲区。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(1)中,所述的环形队列缓冲区设有内存屏障单元。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(2)之前还包括以下步骤:
(2.0)创建定时器。
该基于并发无锁环形队列的网络速率实时统计方法的步骤(2)中,所述的设定时间间隔为1秒。
该基于并发无锁环形队列的网络速率实时统计方法的环形队列缓冲区为无锁环形队列缓冲区。
采用了该发明中的基于并发无锁环形队列的网络速率实时统计方法,使用环形缓冲区来实现,提供一个无边界的字节流服务,其优点在于,当一个数据元素被用掉后,其余数据元素不需要移动其存储位置,从而减少拷贝提高效率;该方法采用了并行无锁技术,实现单生产单消费模式的共享队列,不需要加锁同步;该方法使用自生产自消费的方法保证缓冲区数据的实时更新。
在实际应用中,该基于并发无锁环形队列的网络速率实时统计方法的具体实现步骤如下:
1、主程序jis启动时,申请长度为2的幂次方的内存作为环形队列的缓冲区。
2、创建定时器,每隔一秒钟从进程cmc中获取网络上下行字节数,并保存上一次获取的网络上下行字节数,根据前后两次的数据计算得到上下行网络速率。
3、查看环形队列缓冲区使用情况,如果环形队列还有剩余空间,则将本次计算出的上下行网络速率写入环形队列,如果环形队列数据已满,则从环形队列中取出一个元素的数据,然后再将上下行的网络数据写入环形队列。
4、电脑与网关设备连接,并在电脑浏览器上访问网关设备的web页面,在web页面上查看网关设备的网络速率数据,web页面向网关设备发送数据查询请求。
5、网关设备的http进程收到请求后,将请求发送到jis进程。
6、jis进程收到请求后,从环形队列中读取数据,实际读取数据的个数取请求个数与环形队列中数据个数两者最小值,读取的数据不出队列,即缓冲区的out指针不移动。
7、环形队列最终写满后,每次收到定时器消息,jis都会让队列中最早写入的数据元素出列,然后将新的网络速率数据写入队列,实现环形队列数据的不断更新。
该基于并发无锁环形队列的网络速率实时统计方法,有以下有益效果:
A、环形队列提供一个无边界的字节流服务,巧妙利用位运算和无符号整型数溢出特点,提高数据长度运算及拷贝效率;
B、环形队列使用内存屏障机制,所有在设置读写屏障之前发起的内存访问,必须先于在设置屏障之后发起的内存访问之前完成,保障在数据读写操作时,内存访问按照程序的顺序完成;
C、该数据统计方法使用自生产自消费的方法使环形队列中统计数据按指定时间间隔更新;
D、该数据统计方法将网络上下行字节数转换为实时上下行速率,为外部提供方便的统计接口。
采用了该发明中的基于并发无锁环形队列的网络速率实时统计方法,使用环形缓冲区来实现,提供一个无边界的字节流服务,其优点在于,当一个数据元素被用掉后,其余数据元素不需要移动其存储位置,从而减少拷贝提高效率;该方法采用了并行无锁技术,实现单生产单消费模式的共享队列,不需要加锁同步;该方法使用自生产自消费的方法保证缓冲区数据的实时更新。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
Claims (7)
1.一种基于并发无锁环形队列的网络速率实时统计方法,其特征在于,所述的方法包括以下步骤:
(1)启动主程序,并申请环形队列缓冲区;
(2)根据设定时间间隔,循环获取网关设备的网络上下行字节数,并根据此次的第一上下行字节数和上一次记录的第二上下行字节数计算得出此时的上下行网络速率;
(3)将计算得到的网关设备的上下行网络速率持续写入所述的环形队列缓冲区,并在所述的环形队列缓冲区刚满时取出此时位于环形队列缓冲区的第一个数据元素;
(4)web页面访问所述的网关设备,并查看所述的网关设备中的上下行网络速率,同时向所述的网关设备发送数据查询请求;
(5)所述的网关设备接收所述的数据查询请求,并从所述的环形队列缓冲区读取数据;
所述的步骤(5)具体包括以下步骤:
(5.1)网关设备的http进程收到请求后,将请求发送至jis进程;
(5.2)从环形队列中读取数据,实际读取数据的个数取请求个数与环形队列中数据个数两者最小值,读取的数据不出队列,即缓冲区的out指针不移动;
(5.3)在环形队列写满后,每次收到定时器消息,jis进程让队列中最早写入的数据元素出列,将新的网络速率数据写入队列,实现环形队列数据的不断更新。
2.根据权利要求1所述的基于并发无锁环形队列的网络速率实时统计方法,其特征在于,所述的步骤(1)中,所述的环形队列缓冲区的长度为2的幂次方。
3.根据权利要求1所述的基于并发无锁环形队列的网络速率实时统计方法,其特征在于,所述的步骤(1)中,所述的环形队列缓冲区为无锁环形队列缓冲区。
4.根据权利要求1所述的基于并发无锁环形队列的网络速率实时统计方法,其特征在于,所述的步骤(1)中,所述的环形队列缓冲区设有内存屏障单元。
5.根据权利要求1所述的基于并发无锁环形队列的网络速率实时统计方法,其特征在于,所述的步骤(2)之前还包括以下步骤:
(2.0)创建定时器。
6.根据权利要求1所述的基于并发无锁环形队列的网络速率实时统计方法,其特征在于,所述的步骤(2)中,所述的设定时间间隔为1秒。
7.根据权利要求1所述的基于并发无锁环形队列的网络速率实时统计方法,其特征在于,所述的环形队列缓冲区为无锁环形队列缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711246363.3A CN107846328B (zh) | 2017-12-01 | 2017-12-01 | 基于并发无锁环形队列的网络速率实时统计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711246363.3A CN107846328B (zh) | 2017-12-01 | 2017-12-01 | 基于并发无锁环形队列的网络速率实时统计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107846328A CN107846328A (zh) | 2018-03-27 |
CN107846328B true CN107846328B (zh) | 2021-03-12 |
Family
ID=61663442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711246363.3A Active CN107846328B (zh) | 2017-12-01 | 2017-12-01 | 基于并发无锁环形队列的网络速率实时统计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107846328B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767154A (zh) * | 2020-06-19 | 2020-10-13 | 北京思特奇信息技术股份有限公司 | 用于无阻塞通讯的无锁环形队列实现方法 |
CN112416816A (zh) * | 2020-12-08 | 2021-02-26 | 上证所信息网络有限公司 | 一种一写多读高并发无锁环形缓存及其实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101155086A (zh) * | 2006-09-26 | 2008-04-02 | 中兴通讯股份有限公司 | 宽窄带综合接入设备的网络流量统计方法 |
CN103024533A (zh) * | 2012-11-29 | 2013-04-03 | 广州金视网络信息工程有限公司 | Cm宽带接入速率检测方法及系统 |
CN104125013A (zh) * | 2014-08-13 | 2014-10-29 | 烽火通信科技股份有限公司 | 无源光网络性能数据采集装置及处理方法 |
CN106790599A (zh) * | 2016-12-29 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 一种基于多核无锁环形缓冲区的共生虚拟机通信方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5753476B2 (ja) * | 2011-10-27 | 2015-07-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データをシーケンシャルに記録する記憶装置 |
-
2017
- 2017-12-01 CN CN201711246363.3A patent/CN107846328B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101155086A (zh) * | 2006-09-26 | 2008-04-02 | 中兴通讯股份有限公司 | 宽窄带综合接入设备的网络流量统计方法 |
CN103024533A (zh) * | 2012-11-29 | 2013-04-03 | 广州金视网络信息工程有限公司 | Cm宽带接入速率检测方法及系统 |
CN104125013A (zh) * | 2014-08-13 | 2014-10-29 | 烽火通信科技股份有限公司 | 无源光网络性能数据采集装置及处理方法 |
CN106790599A (zh) * | 2016-12-29 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 一种基于多核无锁环形缓冲区的共生虚拟机通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107846328A (zh) | 2018-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7751404B2 (en) | Method, system, and computer program product for high performance bonding resequencing | |
US10043220B2 (en) | Method, device and storage medium for data processing | |
CN111327603B (zh) | 数据传输方法、装置和系统 | |
WO2016011811A1 (zh) | 一种内存管理方法、装置及存储介质 | |
CN108600053B (zh) | 一种基于零拷贝技术的无线网络数据包捕获方法 | |
US8595401B2 (en) | Input output bridging | |
JP6340481B2 (ja) | データキャッシング方法、装置及び記憶媒体 | |
CN107846328B (zh) | 基于并发无锁环形队列的网络速率实时统计方法 | |
WO2020026018A1 (zh) | 文件的下载方法、装置、设备/终端/服务器及存储介质 | |
WO2019024763A1 (zh) | 报文处理 | |
WO2014146468A1 (zh) | 一种数据包调度和缓存的方法、装置和计算机存储介质 | |
CN108259998A (zh) | 播放器及播放控制方法、装置、电子设备及播放系统 | |
CN102882809B (zh) | 一种基于报文缓存的网络限速方法及装置 | |
WO2018000820A1 (zh) | 一种队列管理方法和装置 | |
US8117356B1 (en) | Direct memory access (DMA) transfer of network interface statistics | |
CN111949422B (zh) | 基于mq和异步io的数据多级缓存与高速传输记录方法 | |
CN103856558A (zh) | 一种用于终端应用的数据处理方法和装置 | |
CN107168710B (zh) | 一种基于阻塞接收机制的嵌入式Linux串口驱动开发方法 | |
CN103442091B (zh) | 一种数据传输方法及装置 | |
WO2023231723A1 (zh) | 流媒体数据处理方法及系统 | |
CN104052831A (zh) | 一种基于队列的数据传输方法、装置及通信系统 | |
CN108521611B (zh) | 一种抗抖动视频数据存取方法以及计算机设备 | |
CN102902593A (zh) | 基于缓存机制的协议分发处理系统 | |
CN115866331A (zh) | 视频抽帧分析方法、装置、设备及存储介质 | |
CN110096456A (zh) | 一种高速率大容量缓存方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |