System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种加速互联总线网络通信的方法技术_技高网

一种加速互联总线网络通信的方法技术

技术编号:43356339 阅读:15 留言:0更新日期:2024-11-19 17:42
本发明专利技术涉及一种加速互联总线网络通信的方法,属于网络通信技术领域,该方法包括:将共享内存映射到各线程中,将共享内存划分为线程管理区和段管理区;各线程在线程管理区抢占到各线程的TLS结构体区域,把共享内存在各线程的映射首地址记录到TLS结构体区域中;各线程在段管理区中申请内存块,判断第一线程的内存块是否需要给其它线程使用;若内存块需要给其它线程使用,发送第一线程的内存块相对于共享内存首地址的差值至其它线程;其它线程接收到差值后,根据差值和各线程的映射首地址确定内存块在各线程中使用的虚拟地址。本发明专利技术通过分布式内存管理和语义感知的内存页面迁移提升了网络传输数据的效率。

【技术实现步骤摘要】

本专利技术属于网络通信应用,尤其涉及一种加速互联总线网络通信的方法


技术介绍

1、对于网络通信来说,目前有一种使用互联总线来使同机架内的机器以及虚拟机通过直接读写共享内存的方式来进行通信,这种方式可以去掉网络传输时数据由用户态到内核态的转换,来提高网络通信的效率。即使有些研究方法已经把网络传输时的数据转换都搬移到了用户态,但是最终数据传输时仍然需要通过网卡进行传输,还是依赖于网络的传输速度限制,而且数据在这期间需要多次的进行拷贝。这都表明,使用互联总线直接读写内存的方式来进行替换传统网络是一种非常有利的方式。传统的使用共享内存传递数据的作法是划分一个共享的区域作为消息队列,然后将数据写入从共享内存中申请的内存块中,将这个块的地址写入到消息队列中,读端从消息队列中取出这个地址,进行读取。

2、虽然直接使用互联总线读写内存的方式进行通信替代传统网络可以提升通信效率,但是如果每次在需要存储数据到共享内存时只是简单的从共享内存中进行简单线性递增法分配一块内存,毫无内存管理能力,时间久了会使共享内存中的内存无法再进一步的使用,已经释放的内存也无法高效的进行二次利用。由于使用基于互联总线的共享内存的设备可以是不同的进程,甚至可以分布在不同的宿主机中,传统的内存管理方案都是针对单个进程进行的,因此需要一种针对互联总线共享内存的专门的内存管理方法,这样才能更加优化基于互联总线的通信方式。

3、基于互联总线直接读写内存的通信方式中,对于数据的流转分为三部分,写端将需要发送的数据写入到本地buffer(本地dram)中,然后从本地dram中拷贝到互联总线共享内存中;读端从互联总线共享内存中拷贝数据到本地dram(程序申请的buffer)中。由此可以看出在写入数据时,同样的数据需要进行两次拷贝,当数据较大时这也会成为性能的瓶颈问题,如果能够进行自动的页面迁移使得能够将数据写入用户buffer中时就能够直接写入互联总线共享内存中,那么就可以减少一次拷贝,实现零拷贝技术,使得性能得到提升。


技术实现思路

1、鉴于以上现有技术的不足,专利技术的目的在于提供一种加速互联总线网络通信的方法、电子设备和存储介质中的分布式内存管理方法,既解决了多进程/多机同时从共享内存申请内存时的竞争问题,也解决了互相之间读写同一块内存时虚拟地址不通用的问题,非常适用于对互联网络共享内存进行管理,有效提高了使用互联网络进行网络传输的效率;而语义感知的内存页面迁移方法对于传输大数据时,可以实现数据零拷贝,显著的提升了互联总线通信时传输大数据的效率。

2、本专利技术的第一方面,提出了一种加速互联总线网络通信的方法,应用于分布式共享内存管理,包括:

3、将共享内存映射到各线程中,将共享内存划分为线程管理区和段管理区;

4、各线程在线程管理区抢占到各线程的tls结构体区域,把共享内存在各线程的映射首地址记录到tls结构体区域中;

5、各线程在段管理区中申请内存块,判断第一线程的内存块是否需要给除第一线程外的其它线程使用;

6、若判断结果为第一线程的内存块需要给除第一线程外的其它线程使用,发送第一线程的内存块相对于共享内存首地址的差值至除第一线程外的其它线程;

7、除第一线程外的其它线程接收到第一线程的内存块相对于共享内存首地址的差值后,根据所述差值和各线程的映射首地址确定内存块在各线程中使用的虚拟地址。

8、进一步地,上述一种加速互联总线网络通信的方法中,各线程在线程管理区抢占到各线程的tls结构体区域,包括:

9、在线程内存管理区中通过依次跳转tls结构体大小,以cas的方式抢占填充线程id到tls结构体中的特定位,标识抢占了各线程的tls结构体区域;

10、其中,所述tls结构体区域用于存储各线程的一些内存分配信息。

11、进一步地,上述一种加速互联总线网络通信的方法中,各线程在段管理区中申请内存块,之前还包括:

12、在段管理区抢占一个字节,根据字节在段管理区中的位置确定段id;

13、根据线程管理区和段管理区的总大小和段id确定此次申请的段的起始地址;

14、将申请到的段划分为多个页;

15、将多个页按照块大小划分为未使用的块来提供。

16、进一步地,上述一种加速互联总线网络通信的方法中,将多个页按照块大小划分为未使用的块,包括:

17、将页大于8字节小于1520字节划分为小块;

18、将页大于1520字节小于65507字节划分为大块。

19、进一步地,上述一种加速互联总线网络通信的方法中,根据线程管理区和段管理区的总大小和段id确定此次申请的段的起始地址,是通过如下公式确定的:

20、线程管理区和段管理区的总大小+段id*每段大小。

21、本专利技术的第二方面,还提出了一种加速互联总线网络通信的方法,应用于语义感知的内存页面迁移,包括:

22、首次拦截sendmsg函数将dram中的数据拷贝到第一共享内存块中;

23、从共享内存中申请一块与第一共享内存块大小相等的第二共享内存块,将原始内存块页表中对应的物理地址修改为第二共享内存块的物理地址;

24、将原始内存块的虚拟地址和物理地址添加到预先申请的链表头中,将链表中原始内存块信息的状态置为已使用;

25、将第二共享内存块的物理地址和虚拟地址添加到链表中,将第二共享内存块的状态设置为待使用;

26、再次拦截sendmsg函数,从链表中获取到状态为待使用的第二共享内存块,将第二共享内存块的页表修改为row,将第二共享内存块的地址注册到userfaultd函数中进行监控写时复制事件;

27、接收方获取到第二共享内存块的地址后进行数据接收,读取完数据之后,将第二共享内存块的页表的row去掉,状态修改为待使用。

28、进一步地,上述一种加速互联总线网络通信的方法,还包括:

29、如果接收方还未读取共享内存中的数据,应用程序再次向原始共享内存块中写入数据,触发写时复制的情况进入到userfaultfd的事件处理函数,重新从共享内存中申请第三共享内存块,将原始内存块页表中对应的物理地址改为第三共享内存块的物理地址;

30、将第三共享内存块的物理地址和虚拟地址添加到链表中,将第三共享内存块的状态设置为待使用,将链表中的第二共享内存块的状态由已使用设置为可删除。

31、进一步地,上述一种加速互联总线网络通信的方法,还包括:

32、如果在应用程序中释放了原始内存块,从链表中查找原始内存块虚拟地址对应的共享内存块有无已使用/可删除状态;

33、如果没有已使用/可删除状态,所有的内存块都可以进行释放,将原始内存块页表中对应的物理地址修改为原始的物理地址,将原始内存块的链表进行清理,调用原始libc中的free函数进行原始内存块的释放;

...

【技术保护点】

1.一种加速互联总线网络通信的方法,其特征在于,应用于分布式共享内存管理,包括:

2.根据权利要求1所述的一种加速互联总线网络通信的方法,其特征在于,所述各线程在线程管理区抢占到各线程的TLS结构体区域,包括:

3.根据权利要求1所述的一种加速互联总线网络通信的方法,其特征在于,所述各线程在段管理区中申请内存块,之前还包括:

4.根据权利要求3所述的一种加速互联总线网络通信的方法,其特征在于,将多个页按照块大小划分为未使用的块,包括:

5.根据权利要求3所述的一种加速互联总线网络通信的方法,其特征在于,所述根据线程管理区和段管理区的总大小和段ID确定此次申请的段的起始地址,是通过如下公式确定的:

6.一种加速互联总线网络通信的方法,其特征在于,应用于语义感知的内存页面迁移,包括:

7.根据权利要求6所述的一种加速互联总线网络通信的方法,其特征在于,所述方法还包括:

8.根据权利要求6所述的一种加速互联总线网络通信的方法,其特征在于,所述方法还包括:

9.一种电子设备,其特征在于,包括:处理器和存储器;

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至8任一项所述一种加速互联总线网络通信的方法。

...

【技术特征摘要】

1.一种加速互联总线网络通信的方法,其特征在于,应用于分布式共享内存管理,包括:

2.根据权利要求1所述的一种加速互联总线网络通信的方法,其特征在于,所述各线程在线程管理区抢占到各线程的tls结构体区域,包括:

3.根据权利要求1所述的一种加速互联总线网络通信的方法,其特征在于,所述各线程在段管理区中申请内存块,之前还包括:

4.根据权利要求3所述的一种加速互联总线网络通信的方法,其特征在于,将多个页按照块大小划分为未使用的块,包括:

5.根据权利要求3所述的一种加速互联总线网络通信的方法,其特征在于,所述根据线程管理区和段管理区的总大小和...

【专利技术属性】
技术研发人员:韩莹汤闻达艾天翔李光辉余斌
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1