System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别是涉及一种数据的传输方法、装置、计算机设备和可读存储介质。
技术介绍
1、远程直接内存访问技术(remote direct memoryaccess,rdma)是一种直接存储器访问技术。rdma让计算机可以直接存取其他计算机的内存,而不需要经过处理器的处理。rdma将数据从一个系统快速移动到远程系统的内存中,而不对操作系统造成任何影响。
2、在实际应用中,用户系统通常会使用多种网络通讯方式访问存储系统,当用户系统使用rdma方式访问存储系统时,需要缓存模块运行在用户态。相关技术中,rdma通讯需要存储系统预先将需要通讯用的内存注册给rdma网卡,rdma网卡在收到相应的网络请求后,会将数据直接写入网络请求指定的内存地址。但是,相关技术中,将数据写入网络请求指定的内存地址并不能保证该数据准确地写入rdma网卡的注册地址中,则需要将数据再次拷贝至注册地址,造成重复的数据拷贝,会降低缓存模块的缓存效率。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高缓存模块的缓存效率的数据的传输方法、装置、计算机设备和可读存储介质。
2、第一方面,本申请提供了一种数据的传输方法,包括:
3、响应于缓存申请请求,确定满足预设空闲条件的用户态的第一内存页面,以及确定所述第一内存页面的起始地址;
4、基于所述起始地址,得到访问报文,并将所述访问报文发送至访问网卡中;以通过所述访问网卡将所述缓存申请请求对应的第一目标数据,
5、在本实施例中,通过响应于缓存申请请求,确定满足预设空闲条件的第一内存页面,并确定第一内存页面的起始地址;基于起始地址确定访问报文,将访问报文发送至访问网卡;访问网卡将缓存申请请求对应的第一目标数据写入至目标内存,通过访问网卡将第一目标数据发送至用户系统,实现数据的传输,通过采用起始地址确定访问报文,使第一目标数据能直接存储至访问网卡的目标内存中,提高了系统的缓存效率。
6、在其中一个实施例中,所述用户态包括多个内存项,每个内存项包括索引项区和页面项区,所述索引项区包括多个索引项,所述页面项区包括多个内存页面,每个索引项对应一个内存页面;所述确定所述第一内存页面的起始地址,包括:
7、基于所述第一内存页面的目标索引项包含的字节数目,以及所述目标索引项的索引项编号,确定所述目标索引项在所述索引项区的位置;
8、基于内存页面的页面大小和所述目标索引项的页面编号,确定所述第一内存页面的偏移量;
9、基于初始索引项的地址、所述目标索引项在内存项的位置以及所述第一内存页面的偏移量,计算所述第一内存页面的起始地址。
10、在本实施例中,通过第一内存页面的目标索引项包含的字节数据、索引项编号、内存页面的页面大小、目标索引项的页面标号和初始索引项的地址,确定第一内存页面的起始地址,提高了内存页面的起始地址的准确性,为后续提高向rdma网卡传输数据的准确性。
11、在其中一个实施例中,所述响应于缓存申请请求,确定满足预设空闲条件的用户态的第一内存页面,包括:
12、响应于所述缓存申请请求后,添加密码标识至所述用户态的任意一个内存项,以及确定满足预设空闲条件的用户态的第一内存页面,并删除所述第一内存页面对应的内存项的密码标识。
13、在本实施例中,通过在响应于缓存申请请求时,对内存项添加密码标识,使其他的缓存申请请求不能同时访问该内存项,提高缓存的准确性。另外,在确定第一内存页面之后删除第一内存页面的内存项的密码标识,可以使其他的缓存申请请求在该内存项上识别其他的内存页面,便于后续对内存页面的合理利用。
14、在其中一个实施例中,所述缓存申请请求还包括写入请求,环形队列至少包括从内核态向所述用户态发送消息的第一队列,所述环形队列包括操作码,所述操作码用于指示所述内存页面所要执行的操作;所述方法还包括:
15、响应于所述写入请求,确定满足所述预设空闲条件的内核态的第二内存页面,通过所述第二内存页面,将所述写入请求对应的第二目标数据写入共享物理内存;
16、通过所述第一队列中的操作码,将所述写入请求从所述内核态发送至所述用户态;
17、基于所述用户态确定与所述第二内存页面对应的第三内存页面,通过所述第三内存页面在所述共享物理内存中读取第二目标数据,并输出所述第三内存页面中的第二目标数据。
18、在本实施例中,通过使用环形队列,仅将写入请求从内核态传输至用户态,保证内核态中的数据不需要进行重复拷贝被用户态读取,提高了存储系统对cpu的利用能力。
19、在其中一个实施例中,所述方法还包括:
20、响应于所述写入请求,通过所述访问网卡将所述写入请求发送至用户态,以及确定满足所述预设空闲条件的所述用户态的第四内存页面;
21、将所述写入请求对应的第三目标数据写入至所述第四内存页面,并输出所述第四内存页面中的第三目标数据。
22、在本实施例中,采用rdma方式访问存储系统,并借助rdma网卡,使用户系统的写入请求的数据直接通过用户态写入硬盘端,减少了内存数据的拷贝,提升了存储系统的性能。
23、在其中一个实施例中,所述缓存申请请求还包括读取请求,所述环形队列还包括从所述用户态向所述内核态发送消息的第二队列,所述方法还包括:
24、响应于所述读取请求,确定满足所述预设空闲条件的所述内核态的第五内存页面,通过所述第一队列中的所述操作码将所述读取请求从所述内核态发送至所述用户态;
25、在所述用户态中,确定与所述第五内存页面对应的第六内存页面;通过所述第六内存页面,将从所述硬盘端读取到的,且与所述读取请求对应的第四目标数据写入所述共享物理内存中;
26、通过所述第二队列中的操作码,将写入所述共享物理内存的第四目标数据的信息发送至所述内核态,并通过所述内核态,基于所述信息从所述共享物理内存中读取所述第四目标数据,并基于第一网络协议发送至用户系统。
27、在本实施例中,通过环形队列实现从内核态向用户态发送请求消息,用户态向内核态发送消息,且不需要重复的复制数据,保证在通讯的过程中,仅传递页面编码,提高了通讯性能。
28、在其中一个实施例中,所述缓存申请请求还包括借用内存请求,所述方法还包括:
29、响应于所述借用内存请求,并通过所述第二队列将所述借用内存请求从所述用户态发送至所述内核态;
30、通过所述内核态,确定满足预设空闲状态的所述内核态的第七内存页面;如果所述第七内存页面的内存不满足所述借用内存请求的内存,则删除所述第七内存页面中的冷数据,以使所述第七内存页面满足所述借用内存请求。
31、在本实施例中,考虑到了在存储系统中的其他模块内存压力大时,可以通过发送借用内存请求向内核态借用内存,提高了存储系统本文档来自技高网...
【技术保护点】
1.一种数据的传输方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述用户态包括多个内存项,每个内存项包括索引项区和页面项区,所述索引项区包括多个索引项,所述页面项区包括多个内存页面,每个索引项对应一个内存页面;所述确定所述第一内存页面的起始地址,包括:
3.根据权利要求2所述的方法,其特征在于,所述响应于缓存申请请求,确定满足预设空闲条件的用户态的第一内存页面,包括:
4.根据权利要求1所述的方法,其特征在于,所述缓存申请请求还包括写入请求,环形队列至少包括从内核态向所述用户态发送消息的第一队列,所述环形队列包括操作码,所述操作码用于指示所述内存页面所要执行的操作;所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求4所述的方法,其特征在于,所述缓存申请请求还包括读取请求,所述环形队列还包括从所述用户态向所述内核态发送消息的第二队列,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述缓存申请请求还包括借用内存请求,所述方法还
8.一种数据的传输装置,其特征在于,所述装置包括:
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种数据的传输方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述用户态包括多个内存项,每个内存项包括索引项区和页面项区,所述索引项区包括多个索引项,所述页面项区包括多个内存页面,每个索引项对应一个内存页面;所述确定所述第一内存页面的起始地址,包括:
3.根据权利要求2所述的方法,其特征在于,所述响应于缓存申请请求,确定满足预设空闲条件的用户态的第一内存页面,包括:
4.根据权利要求1所述的方法,其特征在于,所述缓存申请请求还包括写入请求,环形队列至少包括从内核态向所述用户态发送消息的第一队列,所述环形队列包括操作码,所述操作码用于指示所述内存页面所要执行的操作;所述方法还包括:
5.根据权利要求4所述的...
【专利技术属性】
技术研发人员:桑垚,邓立辉,刘吉庆,王文冬,张敬涛,
申请(专利权)人:天津中科曙光存储科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。