CN103248583B - 一种基于有限深度的先进先出报文队列管理方法及装置 - Google Patents
一种基于有限深度的先进先出报文队列管理方法及装置 Download PDFInfo
- Publication number
- CN103248583B CN103248583B CN201210028540.1A CN201210028540A CN103248583B CN 103248583 B CN103248583 B CN 103248583B CN 201210028540 A CN201210028540 A CN 201210028540A CN 103248583 B CN103248583 B CN 103248583B
- Authority
- CN
- China
- Prior art keywords
- task
- message
- team
- queue
- joining
- 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
Abstract
本发明涉及计算机通信领域,其公开了一种基于有限深度的先进先出报文队列管理方法,解决传统技术中可能因为队列满而丢弃报文及入队任务、出队任务频繁切换而影响系统性能的问题。其技术方案的要点可概括为:将出队任务和入队任务设置为同一优先级,在处理大量报文的情况下,避免在入队任务和出队任务之间的频繁切换,而影响系统性能;同时,设置调度出队任务的缓存报文阈值,对报文队列中的缓存报文个数进行监控,一旦超出阈值,立即加快出队任务的调度,避免因为队列满而丢弃报文的情况。此外,本发明还公开了一种基于有限深度的先进先出报文队列管理装置。本发明适用于对报文的管理。
Description
技术领域
本发明涉及计算机通信领域,具体的说,是涉及一种基于有限深度的先进先出报文队列的管理方法及管理装置。
背景技术
在有限深度(队列深度可以是队列能够缓存的最大报文数或者字节数)的FIFO(Firstin,Firstout,先进先出)报文队列管理中,现有技术中的通用处理方法为:入队任务的优先级低于出队任务的优先级,入队任务将报文入队后,出队任务将会被立即唤醒,进行报文出队处理。因此,不会出现因为队列满而丢弃报文的情形,但这样每处理一个报文都将引起入队任务和出队任务之间切换一次,而操作系统中任务切换的开销是比较大的,因此,这样的队列管理方法的效率并不高。
而如果把入队任务和出队任务的优先级设置成一样,入队任务连续将大量报文入队时,入队任务虽然每入队一个报文有唤醒出队任务的动作,但不能立即唤醒出队任务,当连续入队的报文个数大于队列的最大深度时,必然导致队列满而丢弃部分报文。
如果在队列缓存的报文个数还没有达到队列的最大深度时就强制操作系统调度出队任务,出队任务被调度后连续对多个报文进行出队处理,则可以解决上述因为队列满而丢报文的问题,同时也解决了频繁的入队任务和出队任务切换影响系统性能的问题。
发明内容
本发明所要解决的技术问题是:提出一种基于有限深度的先进先出报文队列管理方法及装置,在队列缓存的报文个数还没有达到队列的最大深度时就强制操作系统调度出队任务对报文进行出队处理,解决传统技术中可能因为队列满而丢弃报文及入队任务、出队任务频繁切换而影响系统性能的问题。
本发明解决上述技术问题所采用的方案是:一种基于有限深度的先进先出报文队列管理方法,包括以下步骤:
a.系统生成有限深度的先进先出报文队列、一个出队任务及至少一个入队任务,设置强制调度出队任务的缓存报文阈值,所述出队任务和入队任务具有相同优先级;
b.当某个入队任务将报文入队时,首先计算当前报文队列中缓存的报文个数,若判断报文队列中有空闲则将报文入队,否则将报文丢弃;
c.所述入队任务唤醒出队任务;
d.所述入队任务判断当前报文队列中缓存的报文个数是否大于缓存报文阈值,如是,则进入步骤e,否则结束本流程;
e.将所述入队任务放入对应优先级的就绪任务队列的队尾。
进一步,所述缓存报文阈值大于所述报文队列深度的一半,小于所述报文队列深度的四分之三经验值。
进一步,所述方法还包括步骤:
f.当出队任务得到调度时,对报文队列中的多个报文进行出队处理。
进一步,所述入队任务的个数小于所述报文队列的深度。
本发明的另一个目的是提供一种基于有限深度的先进先出报文队列管理装置,包括:
队列管理模块,用于生成有限深度的先进先出报文队列,并设置用于调度出队任务的缓存报文阈值;
任务管理模块,用于根据业务情况生成一个出队任务及至少一个入队任务,并设置所述出队任务和入队任务具有相同优先级;并在某个入队任务将报文入队时,计算当前报文队列中缓存的报文个数,当判断报文队列中有空闲时将报文入队,否则将报文丢弃;当判断当前报文队列中缓存的报文个数大于缓存报文阈值时,将所述入队任务放入对应优先级的就绪任务队列的队尾;
任务调度模块,用于调度就绪任务队列中的任务。
本发明的有益效果是:将出队任务和入队任务设置为同一优先级,在处理大量报文的情况下,避免在入队任务和出队任务之间的频繁切换,而影响系统性能;同时,设置调度出队任务的缓存报文阈值,对报文队列中的缓存报文个数进行监控,一旦超出阈值,立即加快出队任务的调度,避免因为队列满而丢弃报文的情况。
附图说明
图1为本发明中的报文队列管理方法的流程图。
图2为本发明中的报文队列管理装置结构框图。
具体实施方式
针对传统技术中对FIFO报文队列的管理方式中存在的可能因队列满而丢弃报文或者由于在入队任务、出队任务之间频繁切换而影响系统性能的弊端,本发明提出了一种基于有限深度的先进先出报文队列管理方法,该方法将出队任务和入队任务设置为同一优先级,在处理大量报文的情况下,避免在入队任务和出队任务之间的频繁切换,而影响系统性能;同时,设置强制调度出队任务的缓存报文阈值,对报文队列中的缓存报文个数进行监控,一旦超出阈值,立即强制调度出队任务,避免因为队列满而丢弃报文的情况。
如图1所示,为本发明报文队列管理方法的流程图,包括:
a.系统生成有限深度的先进先出报文队列、一个出队任务及至少一个入队任务,设置强制调度出队任务的缓存报文阈值,所述出队任务和入队任务具有相同优先级。本发明中,可以根据经验设置缓存报文阈值大于所述报文队列深度的一半,小于所述报文队列深度的四分之三,例如可以设置为队列深度的一半。
b.当某个入队任务将报文入队时,首先计算当前报文队列中缓存的报文个数,若判断报文队列中有空闲则将报文入队,否则将报文丢弃。本步骤中,入队任务首先需要将待入队报文入队,然后再判断是否需要加快调度出队任务;极端情况下如果就绪任务队列中的入队任务比较多时,出队任务一直得不到调度,则报文队列满时则将报文丢弃。
c.所述入队任务唤醒出队任务。在本发明中入队任务每调度一次,则入队任务要唤醒出队任务一次,但出队任务是否得到调度要看其在就绪任务队列中的位置。
d.所述入队任务判断当前报文队列中缓存的报文个数是否大于缓存报文阈值,如是,则进入步骤e,否则结束本流程。
e.将所述入队任务放入对应优先级的就绪任务队列的队尾。本步骤是加快调度入队任务的关键,即通过将已经调度一次的入队任务放入就绪任务队列的队尾。所以本发明中,要保证所有入队任务的个数小于所述报文队列的深度。当出队任务得到调度时,对报文队列中的多个报文进行出队处理。
实施例
下面结合附图及实施例对本发明的方案作进一步的描述。
以vxWorks操作系统中的实现本发明为例(但其基本思想不限于vxWorks操作系统):
报文队列管理系统生成一个FIFO队列Queue,队列深度设置为MAX_QUEUE_NUM个报文(也可以是字节数),多个入队任务和一个出队任务。设置入队任务和出队任务具有相同的优先级为P,并设置调度出队任务的缓存报文个数(也可以是报文字节数)的阈值为schedQThreshold,schedQThreshold设为报文队列深度的二分之一。
设某个时刻FIFO队列中队头指针为QHEAD,队尾指针为QTAIL,则队列中缓存的报文个数为:
(MAX_QUEUE_NUM+QTAIL-QHEAD)%MAX_QUEUE_NUM
上述公式为队列中缓存报文个数的通用计算方法,在此不再赘述。
当某个入队任务进行报文入队时,计算队列Queue中缓存的报文个数,若判断报文队列中有空闲则将报文入队,否则将报文丢弃;同时该入队任务会作唤醒出队任务的操作,但唤醒不一定能够使得出队任务得到调度;判断队列Queue中缓存报个文数大于schedQThreshold时,则加快操作系统调度出队任务,特别的,在vxWorks操作系统中则是通知操作操作系统把入队任务放在优先级为P的就绪任务队列的队尾。因为唤醒出队列任务后,出队任务将排在优先级为P的就绪队列中,如果接着将入队任务排在优先级为P的就绪队列末尾,则可以保证出队任务先于该入队任务得到调度。在调度出队任务后,出队任务将对多个报文进行出队处理,极限情形为,出队任务得到调度后将缓存的报文全部出队,这样就避免了系统处理一个报文就发生一次入队任务和出队列任务之间的切换,减少了系统开销。
本发明实施例还提供一种实施上述报文队列管理方法的装置,如图2所示为所述装置的结构框图,具体包括:
队列管理模块,用于生成有限深度的先进先出报文队列,并设置用于调度出队任务的缓存报文阈值;
任务管理模块,用于根据业务情况生成一个出队任务及至少一个入队任务,并设置所述出队任务和入队任务具有相同优先级;并在某个入队任务将报文入队时,计算当前报文队列中缓存的报文个数,当判断报文队列中有空闲时将报文入队,否则将报文丢弃;当判断当前报文队列中缓存的报文个数大于缓存报文阈值时,将所述入队任务放入对应优先级的就绪任务队列的队尾;
任务调度模块,用于调度就绪任务队列中的任务。
由于相关技术细节在上述方法中已经进行详细说明,此处不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (4)
1.一种基于有限深度的先进先出报文队列管理方法,其特征在于,包括以下步骤:
a.系统生成有限深度的先进先出报文队列、一个出队任务及至少一个入队任务,设置强制调度出队任务的缓存报文阈值,所述出队任务和入队任务具有相同优先级;所述入队任务的个数小于所述报文队列的深度;
b.当某个入队任务将报文入队时,首先计算当前报文队列中缓存的报文个数,若判断报文队列中有空闲则将报文入队,否则将报文丢弃;
c.所述入队任务唤醒出队任务;
d.所述入队任务判断当前报文队列中缓存的报文个数是否大于缓存报文阈值,如是,则进入步骤e,否则结束本流程;
e.将所述入队任务放入对应优先级的就绪任务队列的队尾;
f.当出队任务得到调度时,对报文队列中的多个报文进行出队处理。
2.如权利要求1所述的一种基于有限深度的先进先出报文队列管理方法,其特征在于,所述缓存报文阈值大于所述报文队列深度的一半,小于所述报文队列深度的四分之三。
3.一种基于有限深度的先进先出报文队列管理装置,其特征在于,包括:
队列管理模块,用于生成有限深度的先进先出报文队列,并设置用于调度出队任务的缓存报文阈值;
任务管理模块,用于根据业务情况生成一个出队任务及至少一个入队任务,并设置所述出队任务和入队任务具有相同优先级;并在某个入队任务将报文入队时,计算当前报文队列中缓存的报文个数,当判断报文队列中有空闲时将报文入队,否则将报文丢弃;当判断当前报文队列中缓存的报文个数大于缓存报文阈值时,将所述入队任务放入对应优先级的就绪任务队列的队尾;所述入队任务的个数小于所述报文队列的深度;
所述任务管理模块还用于当出队任务得到调度时,对报文队列中的多个报文进行出队处理;
任务调度模块,用于调度就绪任务队列中的任务。
4.如权利要求3所述的一种基于有限深度的先进先出报文队列管理装置,其特征在于,所述缓存报文阈值大于所述报文队列深度的一般,小于所述报文队列深度的四分之三。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210028540.1A CN103248583B (zh) | 2012-02-09 | 2012-02-09 | 一种基于有限深度的先进先出报文队列管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210028540.1A CN103248583B (zh) | 2012-02-09 | 2012-02-09 | 一种基于有限深度的先进先出报文队列管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103248583A CN103248583A (zh) | 2013-08-14 |
CN103248583B true CN103248583B (zh) | 2016-04-13 |
Family
ID=48927809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210028540.1A Active CN103248583B (zh) | 2012-02-09 | 2012-02-09 | 一种基于有限深度的先进先出报文队列管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103248583B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685062A (zh) * | 2013-12-02 | 2014-03-26 | 华为技术有限公司 | 缓存管理方法及装置 |
CN106713171B (zh) * | 2015-07-28 | 2020-04-03 | 腾讯科技(深圳)有限公司 | 服务器、基于延时队列的限流保护系统及方法 |
CN107852336A (zh) * | 2015-09-21 | 2018-03-27 | 华为技术有限公司 | 一种统计报文拥塞的方法和装置 |
CN106130930B (zh) * | 2016-06-24 | 2019-04-19 | 西安电子科技大学 | 一种数据帧预入队处理的装置及方法 |
CN116418757A (zh) * | 2018-12-12 | 2023-07-11 | 深圳市中兴微电子技术有限公司 | 拥塞控制方法及装置、网络设备及存储介质 |
CN111294116B (zh) * | 2019-11-26 | 2022-04-12 | 北京航天长征飞行器研究所 | 一种线性调频信号处理方法、装置及设备 |
CN111294117B (zh) * | 2019-11-26 | 2022-04-29 | 北京航天长征飞行器研究所 | 一种相位编码信号处理方法、装置及设备 |
CN112130974B (zh) * | 2020-09-10 | 2022-10-25 | 厦门市美亚柏科信息股份有限公司 | 云计算资源配置方法、装置、电子设备与存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101924687A (zh) * | 2009-06-12 | 2010-12-22 | 中兴通讯股份有限公司 | 一种用于交换网流量控制的方法和装置 |
CN102263701A (zh) * | 2011-08-19 | 2011-11-30 | 中兴通讯股份有限公司 | 队列调整方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060200597A1 (en) * | 2005-03-03 | 2006-09-07 | Christenson Bruce A | Method, system, and apparatus for memory controller utilization of an AMB write FIFO to improve FBD memory channel efficiency |
US8412866B2 (en) * | 2008-11-24 | 2013-04-02 | Via Technologies, Inc. | System and method of dynamically switching queue threshold |
-
2012
- 2012-02-09 CN CN201210028540.1A patent/CN103248583B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101924687A (zh) * | 2009-06-12 | 2010-12-22 | 中兴通讯股份有限公司 | 一种用于交换网流量控制的方法和装置 |
CN102263701A (zh) * | 2011-08-19 | 2011-11-30 | 中兴通讯股份有限公司 | 队列调整方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103248583A (zh) | 2013-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103248583B (zh) | 一种基于有限深度的先进先出报文队列管理方法及装置 | |
CN102970244B (zh) | 一种多cpu核间负载均衡的网络报文处理方法 | |
CN102377685B (zh) | 一种订阅消息的发送系统以及订阅消息的发送方法 | |
CN102110022B (zh) | 基于优先级调度的传感器网络嵌入式操作系统 | |
CN102185801A (zh) | 一种即时通讯中的信息处理方法和即时通讯工具 | |
GB2502235A (en) | Link layer reservation of switch queue capacity | |
CN105117284A (zh) | 一种基于优先级比例队列的工作线程的调度方法 | |
CN102523561B (zh) | 手机、群组管理系统以及群组管理方法 | |
CN102984083A (zh) | 队列管理方法及装置 | |
CN101442439B (zh) | 一种上报中断的方法和pci总线系统 | |
CN107645455A (zh) | 一种can总线的消息传输调度方法 | |
CN105094990A (zh) | 一种高效的实现大规模数据交换的系统及其方法 | |
CN107370689B (zh) | 一种1553b总线的消息负载均衡方法 | |
CN101841490A (zh) | 一种即时通讯系统中共享信息的发布方法及系统 | |
CN102595565A (zh) | 集群通信系统及该系统的寻呼方法、网络侧设备及终端 | |
CN101917687B (zh) | 一种短信下发方法和短信中心 | |
CN108462650B (zh) | 一种基于tte交换机的输出单元 | |
EP2477366A1 (en) | Data transmission method, apparatus and system | |
CN103179051B (zh) | 一种流媒体的转发方法和系统 | |
US20160179627A1 (en) | Method and system for checkpointing a global state of a distributed system | |
CN105530196A (zh) | 一种afdx终端系统基于子虚链路的调度方法 | |
CN102104487B (zh) | 一种消息处理方法及其设备 | |
CN108834204A (zh) | 寻呼方法、系统及网络设备 | |
CN102647344B (zh) | 嵌入式分布式系统中报文发送方法 | |
CN105264499B (zh) | 一种共享队列中的消息处理方法、装置及接收核 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |