一种队列清空方法以及相关设备技术

技术编号:15726967 阅读:104 留言:0更新日期:2017-06-29 22:51
本发明专利技术实施例公开一种队列清空方法以及相关设备,该方法包括:队列清空处理器从队列信息表中扫描有效队列的清空状态,确定队列信息表中清空状态为“将被清空”的目标队列,队列信息表用于记录有效队列的清空状态;队列清空处理器将目标队列的清空状态修改为“启动清空”;队列清空处理器将目标队列清空;其中,当目标队列被清空后,目标队列的清空状态被修改为“清空完成”。实施本发明专利技术实施例无需考虑目标队列的优先级,可以同时扫描多个队列并进行清空,保证队列清空完成时间,进而提高队列批量清空能力。

【技术实现步骤摘要】
一种队列清空方法以及相关设备
本专利技术涉及通信
,尤其涉及一种队列清空方法以及相关设备。
技术介绍
现代通信设备需要提供大容量的数据包缓存来吸收突发的数据包。缓存在通信设备中的数据包按照数据包的包描述符组成队列进行管理,并按照队列的优先级进行调度发送。为了保证一个用户的数据包不被错发给另一个用户,当一个用户下线时,需要将该用户的数据包对应的包描述符组成的队列清空后才能将该队列重新分配给另一用户。现有的队列清空方式为:向流量管理芯片下发针对需要清空队列的队列清空命令;流量管理芯片接收到该队列清空命令之后,等待该需要清空队列被调度出队;在该需要清空队列出队时,清空该需要清空队列中的所有包描述符。当需要清空的队列数量较多时,优先级较低的队列等待被调度出队的时间较长,导致优先级较低的队列会长时间无法被调度出队,优先级较低的队列的清空完成时间无法得到保证。
技术实现思路
本专利技术实施例公开了一种队列清空方法以及相关设备,可以解决当需要清空的队列数量较多时,清空速度较慢的问题。本专利技术实施例第一方面公开一种队列清空方法,包括:队列清空处理器从队列信息表中扫描有效队列的清空状态,确定清空状态为“将被清空”的目标队列,所述队列信息表用于记录包括所述有效队列的清空状态;所述队列清空处理器将所述目标队列的清空状态修改为“启动清空”;所述队列清空处理器将所述目标队列清空;其中,当所述目标队列被清空后,所述目标队列的清空状态被修改为“清空完成”。本专利技术实施例无需考虑目标队列的优先级,可以同时扫描多个队列并进行清空,实现批量清空队列,保证队列的清空完成时间,进而提高队列批量清空能力。可选的,所述队列清空处理器将所述目标队列的清空状态修改为“启动清空”之后,所述方法还包括:所述队列清空处理器判断所述目标队列是否位于调度器的正常队列链表中,所述调度器用于对所述正常队列链表中的队列进行调度;若否,所述队列清空处理器将所述目标队列添加到所述调度器的清空队列链表中,并执行所述将所述目标队列清空的步骤;若是,则执行所述将所述目标队列清空的步骤。不论目标队列是位于调度器的正常队列链表中,还是位于调度器的清空队列链表中,还是一部分目标队列位于调度器的正常队列链表中,另一部分目标队列位于调度器的清空队列链表中,本专利技术实施例都可以将目标队列进行清空。可选的,所述队列清空处理器将所述目标队列清空包括:所述队列清空处理器读取所述正常队列链表和/或所述清空队列链表中当前已入队的所有队列的队列标识;当所述正常队列链表和/或所述清空队列链表中当前已入队的所述所有队列的对列标识均被所述队列清空处理器读取之后,所述队列清空处理器接收所述出队处理器发送的清空完成指示,所述清空完成指示用于指示所述正常队列链表和/或所述清空队列链表中当前已入队的所有需要清空的队列均被清空。队列清空处理器可以将调度器的正常队列链表和/或所述清空队列链表中队列的队列标识读出来并发送给出队处理器进行清空状态检查,通过队列清空处理器和出队处理器完成共同调度器清空扫描。可选的,所述队列清空处理器读取所述正常队列链表和/或所述清空队列链表中当前已入队的所有队列的队列标识包括:所述队列清空处理器读取所述正常队列链表和/或所述清空队列链表中第一队列的第一队列标识,向所述出队处理器发送针对所述第一队列标识的清空检查请求,所述清空检查请求用于请求所述出队处理器检查所述第一队列的清空状态,所述第一队列为所述正常队列链表和/或所述清空队列链表中当前已入队的所有队列中的任一个;所述队列清空处理器接收所述出队处理器发送的清空检查结果,所述清空检查结果用于指示所述第一队列是否需要被清空;若所述清空检查结果指示所述第一队列需要被清空并且所述出队处理器有可用清空引擎对所述第一队列进行清空,所述队列清空处理器将所述第一队列从所述正常队列链表和/或所述清空队列链表中出队,并读取所述正常队列链表和/或所述清空队列链表中所述第一队列的下一个队列的队列标识;若所述清空检查结果指示所述第一队列需要被清空并且所述出队处理器没有可用清空引擎对所述第一队列进行清空,所述队列清空处理器将所述第一队列加入所述清空队列链表中,并读取所述正常队列链表和/或所述清空队列链表中所述第一队列的下一个队列的队列标识;若所述清空检查结果指示所述第一队列不需要被清空,所述队列清空处理器读取所述正常队列链表和/或所述清空队列链表中所述第一队列的下一个队列的队列标识。在启动调度器清空扫描后,对于后续进入正常队列链表中的队列不进行扫描,可以保证调度器清空扫描的完成时间。通过队列清空处理器和出队处理器完成共同调度器清空扫描,可以在不影响调度器的正常调度的情况下完成调度器清空扫描的操作。可选的,所述方法还包括:所述队列清空处理器接收针对至少一个队列的清空命令,在所述队列信息表中记录所述至少一个队列的清空状态为所述“将被清空”。可选的,所述在所述队列信息表中记录所述至少一个队列的清空状态为所述“将被清空”之后,所述方法还包括:当所述至少一个队列中有数据包入队时,所述队列清空处理器将所述数据包丢弃;当接收到针对所述至少一个队列的数据包调度指令时,所述队列清空处理器将所述数据包调度指令丢弃。当队列进入清空流程之后,该队列无法进行入队操作,也无法接收新的数据包调度指令,可以保证队列在清空过程中能够不被新的调度操作的影响。可选的,所述队列清空处理器将所述目标队列清空之后,所述方法还包括:所述队列清空处理器扫描所述队列信息表中所述目标队列的清空状态,检查所述目标队列中是否存在清空状态为所述“启动清空”的队列;若是,所述队列清空处理器将所述目标队列中清空状态为所述“启动清空”的队列修改为所述“清空完成”。由于在调度器清空扫描中有可能会出现一些漏修改队列的清空状态的情况,在调度器清空扫描之后,进行一次清空完成扫描,以保证需要被清空的队列彻底被清空。本专利技术实施例第二方面公开一种队列清空方法,包括:出队处理器接收队列清空处理器发送的针对第一队列标识的清空检查请求;所述出队处理器从队列信息表中读取所述第一队列标识对应的第一队列的清空状态;当所述第一队列的清空状态为“启动清空”时,所述出队处理器向所述队列清空处理器发送清空检查结果,并利用配置的清空引擎将所述第一队列内的包描述符清空并回收,所述清空检查结果用于指示所述第一队列是否需要被清空。出队处理器可以并利用配置的清空引擎将需要清空的目标队列内的包描述符进行清空,无需等待需要清空的目标队列中的包描述符被正常调度出队,出队处理器可以主动利用清空引擎进行队列清空,无需考虑目标队列的优先级,保证目标队列的清空完成时间,进而提高队列清空能力。可选的,所述出队处理器利用配置的清空引擎将所述第一队列内的包描述符清空并回收包括:所述出队处理器利用配置的清空引擎将所述第一队列内的包描述符清空并将所述包描述符从包描述符缓存中回收。将包描述符回收利用,可以将回收的包描述符分配给新入队的数据包,提高包描述符的利用率,由于包描述符包含数据包在包缓存中的地址,回收利用包描述符,即可以重复利用包缓存的存储空间。可选的,所述出队处理器利用配置的清空引擎将所述第一队列内的包描述符清空并将所述包描述符从包描述符缓存中回收之后,所述方法还包括:所述出队处理器将本文档来自技高网...
一种队列清空方法以及相关设备

【技术保护点】
一种队列清空方法,其特征在于,包括:队列清空处理器从队列信息表中扫描有效队列的清空状态,确定清空状态为“将被清空”的目标队列,所述队列信息表用于记录所述有效队列的清空状态;所述队列清空处理器将所述目标队列的清空状态修改为“启动清空”;所述队列清空处理器将所述目标队列清空;其中,当所述目标队列被清空后,所述目标队列的清空状态被修改为“清空完成”。

【技术特征摘要】
1.一种队列清空方法,其特征在于,包括:队列清空处理器从队列信息表中扫描有效队列的清空状态,确定清空状态为“将被清空”的目标队列,所述队列信息表用于记录所述有效队列的清空状态;所述队列清空处理器将所述目标队列的清空状态修改为“启动清空”;所述队列清空处理器将所述目标队列清空;其中,当所述目标队列被清空后,所述目标队列的清空状态被修改为“清空完成”。2.根据权利要求1所述的方法,其特征在于,所述队列清空处理器将所述目标队列的清空状态修改为“启动清空”之后,所述方法还包括:所述队列清空处理器判断所述目标队列是否位于调度器的正常队列链表中,所述调度器用于对所述正常队列链表中的队列进行调度;若否,所述队列清空处理器将所述目标队列添加到所述调度器的清空队列链表中,并执行所述将所述目标队列清空的步骤;若是,则执行所述将所述目标队列清空的步骤。3.根据权利要求2所述的方法,其特征在于,所述队列清空处理器将所述目标队列清空包括:所述队列清空处理器读取所述正常队列链表和/或所述清空队列链表中当前已入队的所有队列的队列标识;当所述正常队列链表和/或所述清空队列链表中当前已入队的所述所有队列的对列标识均被所述队列清空处理器读取之后,所述队列清空处理器接收所述出队处理器发送的清空完成指示,所述清空完成指示用于指示所述正常队列链表和/或所述清空队列链表中当前已入队的所有需要清空的队列均被清空。4.根据权利要求3所述的方法,其特征在于,所述队列清空处理器读取所述正常队列链表和/或所述清空队列链表中当前已入队的所有队列的队列标识包括:所述队列清空处理器读取所述正常队列链表和/或所述清空队列链表中第一队列的第一队列标识,向所述出队处理器发送针对所述第一队列标识的清空检查请求,所述清空检查请求用于请求所述出队处理器检查所述第一队列的清空状态,所述第一队列为所述正常队列链表和/或所述清空队列链表中当前已入队的所有队列中的任一个;所述队列清空处理器接收所述出队处理器发送的清空检查结果,所述清空检查结果用于指示所述第一队列是否需要被清空;若所述清空检查结果指示所述第一队列需要被清空并且所述出队处理器有可用清空引擎对所述第一队列进行清空,所述队列清空处理器将所述第一队列从所述正常队列链表和/或所述清空队列链表中出队,并读取所述正常队列链表和/或所述清空队列链表中所述第一队列的下一个队列的队列标识;若所述清空检查结果指示所述第一队列需要被清空并且所述出队处理器没有可用清空引擎对所述第一队列进行清空,所述队列清空处理器将所述第一队列加入所述清空队列链表中,并读取所述正常队列链表和/或所述清空队列链表中所述第一队列的下一个队列的队列标识;若所述清空检查结果指示所述第一队列不需要被清空,所述队列清空处理器读取所述正常队列链表和/或所述清空队列链表中所述第一队列的下一个队列的队列标识。5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:所述队列清空处理器接收针对至少一个队列的清空命令,在所述队列信息表中记录所述至少一个队列的清空状态为所述“将被清空”。6.根据权利要求5所述的方法,其特征在于,所述在所述队列信息表中记录所述至少一个队列的清空状态为所述“将被清空”之后,所述方法还包括:当所述至少一个队列中有数据包入队时,所述队列清空处理器将所述数据包丢弃;当接收到针对所述至少一个队列的数据包调度指令时,所述队列清空处理器将所述数据包调度指令丢弃。7.根据权利要求1-6任一项所述的方法,其特征在于,所述队列清空处理器将所述目标队列清空之后,所述方法还包括:所述队列清空处理器扫描所述队列信息表中所述目标队列的清空状态,检查所述目标队列中是否存在清空状态为所述“启动清空”的队列;若是,所述队列清空处理器将所述目标队列中清空状态为所述“启动清空”的队列修改为所述“清空完成”。8.一种队列清空方法,其特征在于,包括:出队处理器接收队列清空处理器发送的针对第一队列标识的清空检查请求;所述出队处理器从队列信息表中读取所述第一队列标识对应的第一队列的清空状态;当所述第一队列的清空状态为“启动清空”时,所述出队处理器向所述队列清空处理器发送清空检查结果,并利用配置的清空引擎将所述第一队列内的包描述符清空并回收,所述清空检查结果用于指示所述第一队列是否需要被清空。9.根据权利要求8所述的方法,其特征在于,所述出队处理器利用配置的清空引擎将所述第一队列内的包描述符清空并回收包括:所述出队处理器利用配置的清空引擎将所述第一队列内的包描述符清空并将所述包描述符从包描述符缓存中回收。10.根据权利要求9所述的方法,其特征在于,所述出队处理器利用配置的清空引擎将所述第一队列内的包描述符清空并将所述包描述符从包描述符缓存中回收之后,所述方法还包括:所述出队处理器将所述第一队列的清空状态修改为所述“清空完成”;当所有需要清空的队列都完成清空之后,所述出队处理器向队列清空处理器发送清空完成指示,所述清空完成指示用于指示所述队列清空处理器所述所有需要清空的队列的清空操作已完成。1...

【专利技术属性】
技术研发人员:郑勤屈仁杰
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1