System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理器,特别是涉及一种数据重放方法、数据处理器、网络接口卡、计算机设备和计算机可读存储介质。
技术介绍
1、数据处理器(data processing unit,dpu)中,若spdk(storage performancedevelopment kit,存储性能开发套件,以下简称“存储栈”)服务异常退出或者需要升级,会引起已经从主机侧的驱动队列读取到dpu内的io(输入输出)请求无法正常处理。dpu中存储栈被重新拉起后需要重放这些io请求,恢复主机侧被中断的数据路径。
2、传统的数据重放方式中,由于存储栈被重新拉起后,其进程空间和内存均被初始化,dpu需要分析中断前的驱动队列的上下文信息,并利用dma(direct memory access,存储器直接访问)从主机侧重新读取需要重放的io请求,完成后续的io处理流程。这种方式需要二次通过dma读取需要重放的io请求,将导致存储数据路径的中断时间过长,影响主机侧的数据存储效率。在一些dpu内还设计有硬件加解密流程,在从主机侧重新读取需要重放的io请求时,利用硬件的加解密流程,将进一步增加存储数据路径的中断时长。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种数据重放方法、数据处理器、网络接口卡、计算机设备和计算机可读存储介质,能够缩短主机侧的存储数据路径的中断时长,提升主机侧的数据存储效率。
2、第一方面,本申请提供了一种数据重放方法,所述数据重放方法应用于数据处理器,包括:
>3、在存储栈重启的情况下,从持久化内存中获取待重放的请求队列;待重放的请求队列为针对传输缓冲区在持久化内存中进行映射得到的队列,传输缓冲区用于从主机侧接收请求;
4、根据待重放的请求队列,从持久化内存中获取待重放请求;
5、将待重放请求重新发送至指向存储设备的目标加速组件中,以指示存储设备对持久化内存中与待重放请求对应的目标数据进行存储。
6、在其中一个实施例中,根据待重放的请求队列,从持久化内存中获取待重放请求,包括:
7、从持久化内存中,获取待重放的请求队列中各元素所指向的各目标请求;
8、读取各目标请求的状态;
9、将状态为初始状态或处理状态的目标请求,确定为待重放请求;初始状态用于表征目标请求未提交至指向存储设备的目标加速组件,处理状态用于表征目标请求已提交至指向存储设备的目标加速组件。
10、在其中一个实施例中,从持久化内存中获取待重放的请求队列,包括:
11、从持久化内存中,获取各请求队列对应的游标信息;游标信息包括队头游标信息、队尾游标信息和中间游标信息;
12、将队头游标信息与中间游标信息不一致的请求队列,确定为待重放的请求队列;
13、从持久化内存中,获取待重放的请求队列中各元素所指向的各目标请求,包括:
14、根据待重放的请求队列对应的队头游标信息和中间游标信息,从待重放的请求队列中,获取至少一个目标元素;
15、从持久化内存中,获取至少一个目标元素所指向的各目标请求。
16、在其中一个实施例中,持久化内存包括数据缓存区和请求存放区,所述方法还包括:
17、按照设定尺寸分别对数据缓存区和请求存放区进行拆分,得到数据段和请求段;
18、利用数据平面开发套件的数据内存池,对数据段的地址信息进行管理;
19、利用数据平面开发套件的请求内存池,对请求段的地址信息进行管理;
20、在针对传输缓冲区进行初始化的过程中,利用数据内存池为传输缓冲区中各元素分配目标数据段,并利用请求内存池为传输缓冲区中各元素分配目标请求段;
21、根据目标数据段的地址信息,将传输缓冲区中各元素对应的数据,存储至数据缓存区中;
22、根据目标请求段的地址信息,将传输缓冲区中各元素对应的请求,存储至请求存放区中。
23、在其中一个实施例中,根据待重放的请求队列,从持久化内存中获取待重放请求之后,所述方法还包括:
24、从数据内存池中移除与待重放请求对应的数据段的地址信息;
25、从请求内存池中移除与待重放请求对应的请求段的地址信息。
26、在其中一个实施例中,将待重放请求重新发送至指向存储设备的目标加速组件中,以指示存储设备对持久化内存中与待重放请求对应的目标数据进行存储之后,所述方法还包括:
27、若接收到针对待重放请求的响应,则将响应放入接收缓冲区中;
28、若检测到主机侧已完成与响应对应的操作,则从待重放的请求队列中,移除待重放请求对应的元素。
29、在其中一个实施例中,持久化内存中存储的请求的状态包括初始状态、处理状态、等待状态和完成状态中的任意一项;所述方法还包括:
30、在将传输缓冲区中各元素对应的请求,存储至持久化内存之后,将持久化内存中请求的状态设置为初始状态;初始状态用于表征请求未提交至指向存储设备的目标加速组件;
31、在将待重放请求重新发送至指向存储设备的目标加速组件之后,将待重放请求的状态更新为处理状态;处理状态用于表征请求已提交至指向存储设备的目标加速组件;
32、在接收到针对待重放请求的响应之后,将待重放请求的状态更新为等待状态;等待状态用于表征存储设备已响应、主机侧未响应;
33、在检测到主机侧已完成与响应对应的操作之后,将待重放请求的状态更新为完成状态;完成状态用于表征主机侧已响应;
34、从待重放的请求队列中,移除待重放请求对应的元素,包括:
35、若待重放的请求队列还包括位于第一元素之前的至少一个第二元素,则确定至少一个第二元素所指向的请求的状态;第一元素为待重放请求对应的元素;
36、若至少一个第二元素所指向的请求的状态均为完成状态,则从待重放的请求队列中,移除第一元素和至少一个第二元素。
37、第二方面,本申请还提供了一种数据处理器,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
38、在存储栈重启的情况下,从持久化内存中获取待重放的请求队列;待重放的请求队列为针对传输缓冲区在持久化内存中进行映射得到的队列,传输缓冲区用于从主机侧接收请求;
39、根据待重放的请求队列,从持久化内存中获取待重放请求;
40、将待重放请求重新发送至指向存储设备的目标加速组件中,以指示存储设备对持久化内存中与待重放请求对应的目标数据进行存储。
41、第三方面,本申请还提供了一种网络接口卡,包括如上所述数据处理器和多个接口,数据处理器通过接口对外通信。
42、第四方面,本申请还提供了一种计算机设备,包括中央处理器和如上所述的数据处理器,数据处理器用于将报文调度给中央处理器或数据处理器自身处理,中央处理器用于处理数据处理器调本文档来自技高网...
【技术保护点】
1.一种数据重放方法,其特征在于,所述数据重放方法应用于数据处理器,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述待重放的请求队列,从所述持久化内存中获取待重放请求,包括:
3.根据权利要求2所述的方法,其特征在于,所述从持久化内存中获取待重放的请求队列,包括:
4.根据权利要求1所述的方法,其特征在于,所述持久化内存包括数据缓存区和请求存放区,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述待重放的请求队列,从所述持久化内存中获取待重放请求之后,所述方法还包括:
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述将所述待重放请求重新发送至指向存储设备的目标加速组件中,以指示所述存储设备对所述持久化内存中与所述待重放请求对应的目标数据进行存储之后,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述持久化内存中存储的请求的状态包括初始状态、处理状态、等待状态和完成状态中的任意一项;所述方法还包括:
8.一种数据处理器,包括存储器
9.一种网络接口卡,其特征在于,包括如权利要求8所述数据处理器和多个接口,所述数据处理器通过所述接口对外通信。
10.一种计算机设备,其特征在于,包括中央处理器和如权利要求8所述数据处理器,所述数据处理器用于将报文调度给所述中央处理器或所述数据处理器自身处理,所述中央处理器用于处理所述数据处理器调度过来的报文。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种数据重放方法,其特征在于,所述数据重放方法应用于数据处理器,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述待重放的请求队列,从所述持久化内存中获取待重放请求,包括:
3.根据权利要求2所述的方法,其特征在于,所述从持久化内存中获取待重放的请求队列,包括:
4.根据权利要求1所述的方法,其特征在于,所述持久化内存包括数据缓存区和请求存放区,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述待重放的请求队列,从所述持久化内存中获取待重放请求之后,所述方法还包括:
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述将所述待重放请求重新发送至指向存储设备的目标加速组件中,以指示所述存储设备对所述持久化内存中与所述待重放请求对应的目标数据进行存储之后,所述方法还包括:
...
【专利技术属性】
技术研发人员:刘静涛,刘坤,张明礼,陶平,顾正国,
申请(专利权)人:云豹创芯南京智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。