本技术涉及信息,具体涉及一种队列逃逸方法及装置。
背景技术:
1、为达到片上存储资源的有效利用,在数据报文高速存储和转发的应用下,通常会采用共享存储方式来对片上存储资源做统一管理。共享存储的方式就会存在多端口同时读写访问的问题,而当长时间多端口写入速度大于读出速度的时候,就会有队列拥塞和溢出的问题发生。为了避免上述问题发生,共享存储单元会分别管理入队列和出队列。
2、目前,在出队列发生拥堵时,通常根据隐形链表,逐包读取存储数据并进行逃逸。然而,这种方式仅适用于速度处理不是很快的交换设备,如千兆的交换机,而对于万兆的或者更高速率的交换机来说,这种逐包逃逸数据的方式,在数据发生拥塞时会存在数据逃逸速度不够快的问题,由此会导致出现输入端口一直有大量数据进入,而输出端口因为忙于数据逃逸却没有数据输出的异常情况。
技术实现思路
1、有鉴于此,本技术提供了一种队列逃逸方法及装置,主要在于能够提高数据逃逸速度,从而能够保证输出端口数据的正常输出。
2、根本发明的第一个方面,提供一种队列逃逸方法,包括:
3、获取共享存储单元的端口写入速度、端口读出速度和端口数量;
4、根据所述端口写入速度、所述端口读出速度和所述端口数量,确定存储队列的读指针和写指针之间的最小安全距离;
5、若当前所述读指针与所述写指针之间的位置距离小于所述最小安全距离,则根据所述最小安全距离和所述写指针的当前位置查询所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址,其中,所述逃逸队列为预先构建的描述所述存储队列中数据属性的位图;
6、将所述读指针跳转到所述逃逸地址,完成逃逸动作。
7、可选地,在所述根据所述最小安全距离和所述写指针的当前位置查询所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址之前,所述方法还包括:
8、构建所述存储队列对应的逃逸队列,其中,所述逃逸队列中的地址空间与所述存储队列中的地址空间一一对应;
9、当报文数据被写入存储队列时,根据所述报文数据中各拍数据的属性,确定所述存储队列相应地址空间中的数据。
10、可选地,所述构建所述存储队列对应的逃逸队列,包括:
11、分别设定所述逃逸队列对应的ram的写入宽度、读出宽度和写入深度,其中,所述ram的写入深度与所述存储队列的写入深度相等;
12、根据所述写入宽度、所述读出宽度和所述写入深度,构建所述逃逸队列。
13、可选地,所述根据所述报文数据中各拍数据的属性,确定所述存储队列相应地址空间中的数据,包括:
14、针对所述各拍数据中的目标数据,若所述目标数据是所述报文数据的第一拍数据,则在所述存储队列相应地址空间中写入第一数值;
15、若所述目标数据不是所述报文数据的第一拍数据,则在所述存储队列相应地址空间中写入第二数值。
16、可选地,所述根据所述最小安全距离和所述写指针的当前位置查询所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址,包括:
17、根据所述写指针的当前位置和所述最小安全距离,确定所述读指针的最小逃逸地址;
18、根据所述最小逃逸地址和所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址。
19、可选地,所述根据所述最小逃逸地址和所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址,包括:
20、依此读取所述逃逸队列中大于所述最小逃逸地址的地址空间中的内容,并确定首次读取内容为所述第一数值的的报文头部地址;
21、将所述报文头部地址确定为所述存储队列的逃逸地址。
22、根据本发明的第二个方面,提供一种队列逃逸装置,包括:
23、获取单元,用于获取共享存储单元的端口写入速度、端口读出速度和端口数量;
24、确定单元,用于根据所述端口写入速度、所述端口读出速度和所述端口数量,确定存储队列的读指针和写指针之间的最小安全距离;
25、所述确定单元,还用于若当前所述读指针与所述写指针之间的位置距离小于所述最小安全距离,则根据所述最小安全距离和所述写指针的当前位置查询所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址,其中,所述逃逸队列为预先构建的描述所述存储队列中数据属性的位图;
26、逃逸单元,用于将所述读指针跳转到所述逃逸地址,完成逃逸动作。
27、可选地,所述装置还包括:构建单元,
28、所述构建单元,用于构建所述存储队列对应的逃逸队列,其中,所述逃逸队列中的地址空间与所述存储队列中的地址空间一一对应;
29、所述确定单元,还用于当报文数据被写入存储队列时,根据所述报文数据中各拍数据的属性,确定所述存储队列相应地址空间中的数据。
30、可选地,所述构建单元,具体用于分别设定所述逃逸队列对应的ram的写入宽度、读出宽度和写入深度,其中,所述ram的写入深度与所述存储队列的写入深度相等;根据所述写入宽度、所述读出宽度和所述写入深度,构建所述逃逸队列。
31、可选地,所述确定单元,具体用于针对所述各拍数据中的目标数据,若所述目标数据是所述报文数据的第一拍数据,则在所述存储队列相应地址空间中写入第一数值;
32、若所述目标数据不是所述报文数据的第一拍数据,则在所述存储队列相应地址空间中写入第二数值。
33、可选地,所述确定单元,包括:第一确定模块和第二确定模块,
34、所述第一确定模块,用于根据所述写指针的当前位置和所述最小安全距离,确定所述读指针的最小逃逸地址;
35、所述第二确定模块,用于根据所述最小逃逸地址和所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址。
36、可选地,所述第二确定模块,具体用于依此读取所述逃逸队列中大于所述最小逃逸地址的地址空间中的内容,并确定首次读取内容为所述第一数值的报文头部地址;将所述报文头部地址确定为所述存储队列的逃逸地址。
37、根据本发明的第三个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
38、获取共享存储单元的端口写入速度、端口读出速度和端口数量;
39、根据所述端口写入速度、所述端口读出速度和所述端口数量,确定存储队列的读指针和写指针之间的最小安全距离;
40、若当前所述读指针与所述写指针之间的位置距离小于所述最小安全距离,则根据所述最小安全距离和所述写指针的当前位置查询所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址,其中,所述逃逸队列为预先构建的描述所述存储队列中数据属性的位图;
41、将所述读指针跳转到所述逃逸地址,完成逃逸动作。
42、根据本发明的第四个方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
43、获取共享存储单元的端口写入速度、端口读出速度和端口数量;
44、根据所述端口写入速度、所述端口读出速度和所述端口数量,确定存储队列的读指针和写指针之间的最小安全距离;
45、若当前所述读指针与所述写指针之间的位置距离小于所述最小安全距离,则根据所述最小安全距离和所述写指针的当前位置查询所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址,其中,所述逃逸队列为预先构建的描述所述存储队列中数据属性的位图;
46、将所述读指针跳转到所述逃逸地址,完成逃逸动作。
47、第五方面,本技术提供了一种车辆,包括:如第四方面所述的电子设备。
48、本发明提供的一种队列逃逸方法及装置,与现有技术在数据发生拥塞时逐包逃逸数据的方式相比,能够获取共享存储单元的端口写入速度、端口读出速度和端口数量;并根据所述端口写入速度、所述端口读出速度和所述端口数量,确定存储队列的读指针和写指针之间的最小安全距离;若当前所述读指针与所述写指针之间的位置距离小于所述最小安全距离,则根据所述最小安全距离和所述写指针的当前位置查询所述存储队列对应的逃逸队列,确定所述存储队列的逃逸地址,其中,所述逃逸队列为预先构建的描述所述存储队列中数据属性的位图,最终将所述读指针跳转到所述逃逸地址,完成逃逸动作。由于本发明在数据发生拥塞时,能够根据读指针和写指针之间的最小安全距离,确定存储队列的逃逸地址,并将读指针直接跳转至逃逸地址完成逃逸动作,因此能够直接将存储队列中被读指针跳过的大块报文数据数无效掉,相比于现有技术逐包逃逸报文数据的方式,本发明能够提高数据逃逸速度,进而本发明能够防止大量调度被浪费在数据逃逸上,避免存储单元输入端口一直有大量数据进入,而输出端口忙于数据逃逸,却没有数据输出的异常情况出现。
49、上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。