发明内容
本发明实施例提供了一种基于RDMA的通信方法、系统及通信设备,用于解决设备的内存的利用率不高的问题。
第一方面,本发明实施例提供一种基于RDMA的通信方法,包括:
发送设备向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
所述发送设备接收所述接收设备发送的第一内存信息,其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息;
当所述发送设备向所述接收设备发送信息时,所述发送设备根据所述第一地址信息通过RDMA操作将所述信息存放至所述第一接收内存。
在第一方面的第一种可能的实现方式中,所述第一内存信息还包括所述第一接收内存的内存空间信息,所述发送设备接收所述接收设备发送的所述第一内存信息之后,所述方法还包括:
当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时,所述发送设备向所述接收设备发送内存释放消息,所述内存释放消息用于请求释放所述第一接收内存中存放的信息。
结合第一方面,在第一方面的第二种可能的实现方式中,所述第一内存信息还包括所述第一接收内存的内存空间信息,所述发送设备接收所述接收设备发送的所述第一内存信息之后,所述方法还包括:
当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时,所述发送设备向接收设备发送第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息;
所述发送设备接收所述接收设备发送的第二内存信息,其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述第一接收内存与所述第二接收内存的地址连续,所述发送设备根据所述第一地址信息通过RDMA操作将所述信息存放至所述第一接收内存,包括:
当所述第一接收内存的空闲空间不够存放所述信息时,所述发送设备根据所述第一地址信息和所述第二地址信息通过RDMA操作将所述信息存放至连续接收内存,所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
第二方面,本发明实施例提供一种基于RDMA的通信方法,包括:
接收设备接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
所述接收设备根据所述第一申请消息从所述接收设备的内存中选择所述第一接收内存;
所述接收设备向所述发送设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息;
所述接收设备的所述第一接收内存存放信息,所述信息为所述发送设备根据所述第一地址信息通过RDMA操作存放的信息。
在第二方面的第一种可能的实现方式中,所述第一内存信息还包括所述第一接收内存的内存空间信息,所述接收设备向所述发送设备发送第一内存信息之后,所述方法还包括:
所述接收设备接收所述发送设备发送的内存释放消息,所述述内存释放消息用于请求释放所述第一接收内存中存放的信息;所述内存释放消息是当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时发送的消息;
所述接收设备根据所述内存释放消息释放所述第一接收内存中存放的信息。
结合第二方面,在第二方面的第二种可能的实现方式中,所述第一内存信息还包括所述第一接收内存的内存空间信息,所述接收设备向所述发送设备发送第一内存信息之后,所述方法还包括:
所述接收设备接收所述发送设备发送的第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息,所述第二申请消息为当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时发送的消息;
所述接收设备根据所述第二申请消息从所述接收设备的内存中选择所述第二接收内存;
所述接收设备向所述发送设备发送第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第一接收内存与所述第二接收内存的地址连续,所述接收设备的所述第一接收内存存放信息,包括:
所述接收设备的连续接收内存存放信息,所述信息为当所述第一接收内存的空闲空间不够存放所述信息时,为所述发送设备根据所述第一地址信息和所述第二地址信息通过RDMA操作存放的信息;所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
第三方面,本发明实施例提供一种通信设备,包括:第一发送单元、第一接收单元和存放单元,其中:
所述第一发送单元,用于向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
所述第一接收单元,用于接收所述接收设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息;
所述存放单元,用于当所述通信设备需要向所述接收设备发送信息时,根据所述第一地址信息通过RDMA操作将所述信息存放至所述第一接收内存。
在第三方面的第一种可能的实现方式中,所述第一内存信息还包括所述第一接收内存的内存空间信息,所述设备还包括:
第二发送单元,用于当所述通信设备根据所述内存空间信息,以及所述通信设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时,向所述接收设备发送内存释放消息,所述内存释放消息用于请求释放所述第一接收内存中存放的信息。
结合第三方面,在第三方面的第二种可能的实现方式中,所述第一内存信息还包括所述第一接收内存的内存空间信息,所述设备还包括:
第三发送单元,用于当所述通信设备根据所述内存空间信息,以及所述通信设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时,向接收设备发送第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息;
第二接收单元,用于接收所述接收设备发送的第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述第一接收内存与所述第二接收内存的地址连续存;
所述存放发送单元具体用于当所述通信设备需要向所述接收设备发送消息,且所述第一接收内存的空闲空间不够存放所述信息时,根据所述第一地址信息和所述第二地址信息通过RDMA操作将信息存放至连续接收内存,所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
第四方面,本发明实施例提供一种通信设备,包括:第一接收单元、第一选择单元和第一发送单元,其中:
所述第一接收单元,用于接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述通信设备发送的信息;
所述第一选择单元,用于根据所述第一申请消息将从所述通信设备的内存中选择所述第一接收内存;
所述第一发送单元,用于向所述发送设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息;
所述通信设备的所述第一接收内存存放信息,所述信息为所述发送设备根据第一地址信息通过RDMA操作存放的信息。
在第四方面的第一种可能的实现方式中,所述第一内存信息还包括所述第一接收内存的内存空间信息,所述设备还包括:
第二接收单元,用于接收所述发送设备发送的内存释放消息,所述述内存释放消息用于请求释放所述第一接收内存中存放的信息;所述内存释放消息是当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时发送的消息;
释放单元,用于根据所述内存释放消息释放所述第一接收内存中存放的信息。
结合第四方面,在第四方面的第二种可能的实现方式中,所述第一内存信息还包括所述第一接收内存的内存空间信息,所述设备还包括:
第三接收单元,用于接收所述发送设备发送的第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息,所述第二申请消息为当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时发送的消息;
第二选择单元,用于根据所述第二申请消息从所述通信设备的内存中选择所述第二接收内存;
第二发送单元,用于向所述发送设备发送第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述第一接收内存与所述第二接收内存的地址连续,所述通信设备的连续接收内存存放信息,所述信息为当所述第一接收内存的空闲空间不够存放所述信息时,为所述发送设备根据所述第一地址信息和所述第二地址信息通过RDMA操作存放的信息;所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
第五方面,本发明实施例提供一种基于RDMA的通信系统,包括:第一通信设备和第二通信设备,其中:
所述第一通信设备用于向所述向第二通信设备发送第一申请消息,所述第一申请消息用于在所述第二通信设备申请第一接收内存,所述第一接收内存用于存放所述第一通信设备向所述第二通信设备发送的信息;以及接收所述第二通信设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息;当所述第一通信设备需要向所述第二通信设备发送信息时,根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存;
所述第二通信设备用于第二通信设备接收第一通信设备发送的所述第一申请消息;以及根据所述第一申请消息从所述第二通信设备的内存中选择所述第一接收内存;以及向所述第一通信设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息。
上述技术方案中,发送设备向接收设备申请第一接收内存;所述发送设备再根据第一接收内存的地址信息通过RDMA操作将信息存放至所述第一接收内存。这样由于接收设备的接收内存是由发送设备主动申请的,即发送设备可以按需、动态地向接收设备申请接收内存,从而可以提高设备的内存的利用率
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种基于RDMA的通信方法流程示意图,如图1所示,包括以下步骤:
101、发送设备向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息。
即可以理解为发送设备向接收设备申请上述第一接收内存,该第一接收内存用于存放发送设备向接收设备发送的信息。
102、发送设备接收所述接收设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息。
当发送设备向接收设备申请到上述第一接收内存后,发送设备就会接收到接收设备发送的上述第一内存信息,以得知申请的第一接收内存的地址等信息。
103、当所述发送设备需要向所述接收设备发送信息时,所述发送设备根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存。
具体可以是发送设备向接收设备通过RDMA操作将信息存放至所述第一接收内存,具体可以是该RDMA操作中携带有上述第一地址信息,即该RDMA操作根据第一地址信息可以知道上述第一接收内存的地址,从而可以将信息存放至上述第一接收内存中。这样接收设备还可以通过第一地址信息获取第一接收内存中存放的上述信息,例如,接收设备的上层应用通过第一地址信息获取第一接收内存中存放的上述信息,对该信息进行处理。
其中,上述信息具体可以是通知、数据、数据包或者报文等传输信息。
其中,上述发送设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
其中,上述接收设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
上述第一接收内存具体可以是以内存页为单位的内存,例如上述第一接收内存包括至少一个内存页。具体可以是接收设备预先将接收设备包括的一部分或者部分内存划分为至少一个内存页。接收设备再从这至少一个接收内存页中选择一个作为上述第一接收内存。
上述技术方案中,发送设备向接收设备申请第一接收内存;所述发送设备再根据第一接收内存的地址信息通过RDMA操作将信息存放至所述第一接收内存。这样由于接收设备的接收内存是由发送设备主动申请的,即发送设备可以按需、动态地向接收设备申请接收内存,从而可以提高设备的内存的利用率。
图2是本发明实施例提供的另一种基于RDMA的通信方法的流程示意图,如图2所示,包括以下步骤:
201、发送设备向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息。
该步骤中具体可以是根据发送设备需要向接收设备发送的信息所需要的内存空间,向接收设备发送第一申请消息,即第一申请消息申请的第一内存空间可以是大于或者等于发送设备需要向接收设备发送的信息所需要的内存空间,即第一接收内存的空间大小是发送设备需要向接收设备发送的信息所需要的内存空间大小而确定的,这样可以实现按需向接收设备申请接收内存。
还可以是接收设备预先设置至少一个接收内存,其中,上述第一接收内存为该至少一个接收内存中的一个。
202、发送设备接收所述接收设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息和所述第一接收内存的内存空间信息。
上述第一内存信息包括上述第一地址信息和上述内存空间信息,这样发送设备接收到上述第一内存信息后就可以获取到第一内存的地址和空间大小。
203、当所述发送设备需要向所述接收设备发送信息时,所述发送设备根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存。
作为一种可选的实施方式,在步骤202之后,所述方法还可以包括:
204、当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时,所述发送设备向所述接收设备发送内存释放消息,所述内存释放消息用于请求释放所述第一接收内存中存放的信息。
其中,上述第一空闲阈值可以是用户预先设置好的,例如:10个字节或者0个字节等。上述所述第一接收内存的空闲空间小于或者等于第一内存空间值时具体还可以理解为所述第一接收内存的空闲空间不能够存放发送设备向接收设备发送的信息。
该实施方式中,步骤203是可以多次执行的,但每次执行时发送的信息可以是相同的,也可以是不同的。且发送设备向接收设备发送的信息,该信息的大小,即该信息存放时需要占用的内存大小,发送设备是知晓的,这样每执行一次步骤203后,发送设备就可以计算出第一接收内存的空闲空间为多少,当所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时,所述发送设备向所述接收设备发送内存释放消息,所述内存释放消息用于请求释放所述第一接收内存中存放的信息。
该实施方式,可以实现当发送设备识别出第一接收内存的空闲空间小于或者等于第一内存空间值时,发送设备请求接收设备释放第一接收内存,即将第一接收内存中存放的消息转移或者删除,这样第一接收内存就可以继续存放发送设备发送的信息。
需要说明的是,步骤204可以是在步骤203之前执行,也可以是在步骤203之后执行,当步骤204可以是在步骤203之前执行,步骤203中存放上述消息的第一接收内存就为经过步骤204释放后的第一接收内存。
作为一种可选的实施方式,如图4所示,在步骤202之后,所述方法还可以包括:
205、当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时,所述发送设备向接收设备发送第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息。
其中,上述第二空闲阈值可以是用户预先设置好的,例如:10个字节或者20个字节等。上述所述第一接收内存的空闲空间小于或者等于第二空闲阈值时具体还可以理解为所述第一接收内存的空闲空间不能够存放发送设备向接收发送的信息,或者所述第一接收内存的空闲空间不能够存放发送设备向接收发送的多个信息,例如,在执行完步骤203中的消息之后的多个信息。
206、发送设备接收所述接收设备发送的的第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
该实施方式可以实现当上述第一接收内存的空闲空间小于或者等于上述和二空闲阈值时,发送设备向接收设备申请第二接收内存。
该实施方式,所述第一接收内存与所述第二接收内存的地址连续。步骤203具体可以包括:
当所述发送设备需要向所述接收设备发送信息,且所述第一接收内存的空闲空间不够存放所述信息时,所述发送设备根据所述第一地址信息和所述第二地址信息通过RDMA操作将所述信息存放至连续接收内存,所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
即可以实现将信息存放至第一接收内存和第二接收内存,即第一接收内存和第二接收内存共同存放上述信息,例如,第一接收内存存放上述信息的一部分,第二接收内存存放上述信息的另一部分。
具体还可以是发送设备向接收设备申请到第二接收内存后,就可以将第一接收内存和第二接收内存作为一个新的接收内存,新的接收内存的空闲内存等于第一接收内存的空闲内存加上第二接收内存的空闲内存。再通过RDMA操作将信息存放在新的接收内存中。
上述两个实施方式中,发送设备都可以通过所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小识别出第一接收内存的空闲空间,即发送设备可以管理接收设备的第一接收内存,接收设备可以不需要对第一内存进行管理,例如,发送设备向接收设备发送的信息为需要小内存空间的小信息时,发送设备可以申请小空间的第一接收内存,这样可以减少内存碎片,提高内存的有效利用率;发送设备向接收设备发送的信息为需要大内存空间的大信息时,发送设备可以申请大空间的第一接收内存,或者申请多个连续的第一接收内存,这样可以避免额外的分片操作,提高消息传输的效率。
作为一种可选的实施方式,在步骤203之后,所述方法还可以包括将第一接收内存的使用情况进行实时更新。这样可以清楚地知道第一接收内存页的使用情况,以更好地安排以后消息的发送。
作为一种可选的实施方式,上述发送设备具体可以是发送设备包括的主机通道适配器(Host Channel Adapt,HCA)通过交换机与接收设备包括的HCA进行通信,即上述第一申请消息、第二申请消息、第一内存信息、第二内存信息以及RDMA操作都是通过发送设备的HCA、交换机和接收设备的HCA进行传输的,即可以理解为发送设备的HCA通过交换机与接收设备的HCA连接。例如:图5所示的连接关系,其中,上述发送设备和接收设备可以是图5中的任意两个设备,即本实施例还可以支持两个以上的设备进行所述方法的通信。
上述技术方案中,在上面实施例的基础上增加了多种可选的实施方式,且都可以实现提高设备的内存的利用率。
图6是本发明实施提供的另一种基于RDMA的通信方法的流程示意图,如图6所示,包括以下步骤:
301、接收设备接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息。
302、接收设备根据所述第一申请消息从所述接收设备的内存中选择所述第一接收内存。
可以理解为接收设备根据上述第一申请消息将上述第一接收内存分配给发送设备使用,即第一接收内存专用于存放发送设备发送的消息。
具体可以是接收设备预先分配至少一个接收内存,当接收到上述第一请求消息时,就可以从这至少一个接收内存中选择一个作为上述第一接收内存。还可以是上述第一请求消息包括第一接收内存的空间大小信息,接收设备该根据空间大小信息从接收设备的内存中选择该空间大小信息所指示的大小的内存作为上述第一接收内存。
303、接收设备向所述发送设备发送所第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息。
304、接收设备的所述第一接收内存存放信息,所述信息为所述发送设备根据所述第一述第一地址信息通过RDMA操作存放的信息。
具体可以是发送设备根据第一地址信息通过RDMA操作将信息存放至所述第一接收内存,具体可以是该RDMA操作中携带有上述第一地址信息,即该RDMA操作通过第一地址信息可以知道上述第一接收内存的地址,从而可以将信息存放至上述第一接收内存中。这样接收设备还可以通过第一地址信息获取第一接收内存中存放的上述信息,例如,接收设备的上层应用通过第一地址信息获取第一接收内存中存放的上述信息,对该信息进行处理。
其中,上述发送设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
其中,上述接收设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
上述第一接收内存具体可以是以内存页为单位的内存,例如上述第一接收内存包括至少一个内存页。具体可以是接收设备预先将接收设备包括的一部分或者部分内存划分为至少一个内存页。
上述技术方案中,接收设备接收发送设备发送的第一申请消息;接收设备根据所述第一申请消息从所述接收设备的内存中选择所述第一接收内存;接收设备向所述发送设备发送第一内存信息;接收设备的所述第一接收内存存放信息,所述信息为所述发送设备通过RDMA操作存放的信息。这样由于接收设备的接收内存是由发送设备主动申请的,即发送设备可以按需、动态地向接收设备申请接收内存,从而可以提高设备的内存的利用率。
图7是本发明实施例提供的另一种基于RDMA的通信方法的流程示意图,如图7所示,包括以下步骤:
401、接收设备接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息。
上述第一申请消息具体可以是根据发送设备需要向接收设备发送的信息所需要的内存空间,向接收设备发送第一申请消息,即第一申请消息申请的第一内存空间可以是大于或者等于发送设备需要向接收设备发送的信息所需要的内存空间,即第一接收内存的空间大小是发送设备需要向接收设备发送的信息所需要的内存空间大小而确定的,这样可以实现按需向接收设备申请接收内存。
还可以是接收设备预先设置至少一个接收内存,其中,上述第一接收内存为该至少一个接收内存中的一个。
402、接收设备根据所述第一申请消息从所述接收设备的内存中选择所述第一接收内存。
403、接收设备向所述发送设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息和所述第一接收内存的内存空间信息。
上述第一内存信息包括上述第一地址信息和上述内存空间信息,这样发送设备接收到上述第一内存信息后就可以获取到第一内存的地址和空间大小。
404、接收设备的所述第一接收内存存放信息,所述信息为所述发送设备根据所述第一地址信息通过RDMA操作存放的信息。
作为一种可选的实施方式,如图8所示,在步骤403之后,所述方法还可以包括:
405、接收设备接收所述发送设备发送的内存释放消息,所述述内存释放消息用于请求释放所述第一接收内存中存放的信息;所述内存释放消息是当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时发送的消息;
406、接收设备根据所述内存释放消息释放所述第一接收内存中存放的信息。
其中,上述第一空闲阈值可以是用户预先设置好的,例如:10个字节或者0个字节等。上述所述第一接收内存的空闲空间小于或者等于第一空闲阈值时具体还可以理解为所述第一接收内存的空闲空间不能够存放发送设备向接收发送的信息。
该实施方式中,步骤404是可以多次执行的,但每次执行时发送的信息可以是相同的,也可以是不同的。且发送设备向接收设备发送的信息,该信息的大小,即该信息存放时需要占用的内存大小,发送设备是知晓的,这样每执行一次步骤404后,发送设备就可以计算出第一接收内存的空闲空间为多少,当所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时,所述发送设备向所述接收设备发送内存释放消息,所述内存释放消息用于请求释放所述第一接收内存中存放的信息。
需要说明的是,步骤405可以是在步骤404之前执行,也可以是在步骤404之后执行,当步骤405可以是在步骤404之前执行,步骤404中存放上述消息的第一接收内存就为经过步骤406释放后的第一接收内存。
作为一种可选的实施方式,如图9所示,在步骤403之后,所述方法还可以包括:
407、接收设备接收所述发送设备发送的第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息,所述第二申请消息为当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时发送的消息;
408、接收设备根据所述第二申请消息从所述接收设备的内存中选择所述第二接收内存;
409、接收设备向所述发送设备发送第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
其中,上述第二空闲阈值可以是用户预先设置好的,例如:10个字节或者20个字节等。上述所述第一接收内存的空闲空间小于或者等于第二空闲阈值时具体还可以理解为所述第一接收内存的空闲空间不能够存放发送设备向接收发送的消息,或者所述第一接收内存的空闲空间不能够存放发送设备向接收发送的多个信息,例如,在执行完步骤404中的消息之后的多个信息。
该实施方式可以实现当上述第一接收内存的空闲空间小于或者等于上述和二空闲阈值时,发送设备向接收设备申请第二接收内存,即接收设备将上述第二接收内存作为存放发送设备发送的信息的内存。
该实施方式,所述第一接收内存与所述第二接收内存的地址连续。步骤404具体可以包括:
接收设备的连续接收内存存放信息,所述信息为当所述第一接收内存的空闲空间不够存放所述信息时,为所述发送设备根据所述第一地址信息和所述第二地址信息通过RDMA操作存放的信息;所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
即可以实现将信息存放至第一接收内存和第二接收内存,即第一接收内存和第二接收内存共同存放上述信息,例如,第一接收内存存放上述信息的一部分,第二接收内存存放上述信息的另一部分。
作为一种可选的实施方式,上述发送设备具体可以是发送设备包括的HCA通过交换机与接收设备包括的HCA进行通信,即上述第一申请消息、第二申请消息、第一内存信息、第二内存信息以及RDMA操作都是通过发送设备的HCA、交换机和接收设备的HCA进行传输的,即可以理解为发送设备的HCA通过交换机与接收设备的HCA连接。例如:图5所示的连接关系,其中,上述发送设备和接收设备可以是图5中的任意两个设备,即本实施例还可以支持两个以上的设备进行所述方法的通信。
上述技术方案中,在上面实施例的基础上增加了多种可选的实施方式,且都可以实现提高设备的内存的利用率。
图10是本发明实施例提供的另一种基于RDMA的通信方法的示意图,如图10所示,包括以下步骤:
501、发送设备向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息。
502、接收设备根据所述第一申请消息从接收设备的内存中选择所述第一接收内存。
503、接收设备向发送设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息。
504、当所述发送设备需要向所述接收设备发送信息时,所述发送设备根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存。
本实施例中具体的实施例可以参考上面实施例的描述,此处不作重复说明。
上述技术方案中,发送设备向接收设备发送第一申请消息;接收设备根据所述第一申请消息从接收设备的内存中选择所述第一接收内存;接收设备向发送设备发送第一内存信息;当所述发送设备需要向所述接收设备发送信息时,所述发送设备根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存。这样由于接收设备的接收内存是由发送设备主动申请的,即发送设备可以按需、动态地向接收设备申请接收内存,从而可以提高设备的内存的利用率,以及提高RDMA通信的传输效率。
下面以一个具体的实例对上述方法进一步说明:
如图11所示,发送设备61包括:应用层611、发送消息管理612、发送驱动613、发送内存池614、接收消息管理615、接收内存池616和通信代理617;发送设备62包括:应用层621、发送消息管理622、发送驱动623、发送内存池624、接收消息管理625、接收内存池626和通信代理627;其中,消息发送流程如下:
a)、发送设备61和接收设备62分别申请接收内存,并将申请到的接收内存划分为页。具体可以是向本地内存申请接收内存。由于在实际应用中通信都是双向的发送设备61可以是发送方也可以是接收方,接收设备62可以是发送方也可以是接收方。
b)、应用层611通过发送消息管理612发送信息。
c)、发送消息管理612在发送内存池614中申请内存。其中,该步骤具体请见下面描述的内存申请流程。
d)、发送消息管理612将申请到的内存填充至发送内存池614,并将信息发送给发送驱动613。
e)、发送驱动613通过RDMA操作将信息写入接收设备62的接收内存页,并通过接收消息管理622。该RDMA操作中携带有接收内存页的地址信息。
f)、接收消息管理622将接收到的接收内存页的地址信息通知应用层621。
g)、应用层621使用该地址信息获取上述信息。
其中,上述发送内存池614为一个虚拟的内存池,该内存池为用于描述或者管理发送设备61向接收设备62申请到的接收内存页。例如:发送内存池614描述了接收内存页1的内存信息,如空间信息和地址信息等。即发送设备61可以通过发送内存池614管理接收设备62的接收内存池624中的接收内存页1,当也可以发送设备61向接收设备62申请多个接收内存页。由于发送设备61可以通过发送内存池614得知接收设备62的接收内存池624的接收内存页的使用情况,这样可以解决传输小消息时减少内存碎片的问题,例如:发送设备61可以通过发送内存池614得到接收设备62的接收内存池624的接收内存页只存在少量的空闲空间时,发送设备61可以向接收设备62申请与该空闲空间连续的接收内存页,从而可以保证在传输小消息时也可以不产生内存碎片,提高内存的利用率。还可以解决传输大消息时避免额外的分片操作,例如:发送设备61可以通过发送内存池614得到接收设备62的接收内存池624的接收内存页的空闲空间不够存放该大消息时,发送设备61可以向接收设备62申请与该空闲空间连续的接收内存页,这样该大消息就可以存放在这连续的内存中,从而避免额外的分片操作,提高传输效率。
其中,内存申请流程可以如下:
a)、发送消息管理612发起内存页申请。其中,该申请包括申请新的接收内存页,或者申请释放接收内存页。其中,当该申请包括申请新的接收内存页时,该步骤具体可以是在初始化场景下执行的,也可以是在发送内存池614的发送内存页(即预先申请到的接收内存页)的空闲空间少于一定量时执行的。当该申请包括申请释放接收内存页时,该步骤可以是在发送内存池614的发送内存页(即预先申请到的接收内存页)的空闲空间为零或者少于一定量时执行的。
b)、通信代理617将上述申请发送至通信代理627。
c)、通信代理627处理上述申请,通过接收消息管理625为发送设备61分配新的接收内存页或者释放发送设备61已经申请的接收内存页。
d)、接收消息管理625将上述申请的响应返回给通信代理627。其中,响应具体可以是新申请到的接收内存页的内存信息或者释放已经申请的接收内存页的释放结果信息。
e)、通信代理627将上述申请的响应返回给通信代理617。
f)、通信代理617将上述申请的响应发送给发送消息管理612。
g)、发送消息管理612更新发送内存池614。其中,更新发送内存池614包括将新申请的接收内存页加入发送内存池,或者将已经申请的接收内存页的释放结果更新。
需要说明的是,上述应用层、发送消息管理、发送驱动、发送内存池、接收消息管理和通信代理都可以是软件虚拟模块。
下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至五实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一、实施例二、实施例三、实施例四和实施例五。
图12是本发明实施例提供的一种通信设备的结构示意图,如图12所示,包括:第一发送单元71、第一接收单元72和存放单元73,其中:
第一发送单元71,用于向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息。
即可以理解为第一单元71向接收设备申请上述第一接收内存,该第一接收内存用于存放所述通信设备向接收设备发送的信息。
第一接收单元72,用于接收所述接收设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息。
存放单元73,用于当所述通信设备需要向所述接收设备发送信息时,根据所述第一地址信息通过RDMA操作将所述信息存放至所述第一接收内存。
具体可以是通信设备向接收设备通过RDMA操作将信息存放至所述第一接收内存,具体可以是该RDMA操作中携带有上述第一地址信息,即该RDMA操作根据第一地址信息可以知道上述第一接收内存的地址,从而可以将信息存放至上述第一接收内存中。这样接收设备还可以通过第一地址信息获取第一接收内存中存放的上述信息,例如,接收设备的上层应用通过第一地址信息获取第一接收内存中存放的上述信息,对该信息进行处理。
其中,上述信息具体可以是通知、数据、数据包或者报文等传输信息。
其中,上述通信设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
其中,上述接收设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
上述第一接收内存具体可以是以内存页为单位的内存,例如上述第一接收内存包括至少一个内存页。具体可以是接收设备预先将接收设备包括的一部分或者部分内存划分为至少一个内存页。接收设备再从这至少一个接收内存页中选择一个作为上述第一接收内存。
上述技术方案中,通信设备向接收设备发送申请第一接收内存;所述通信设备再根据第一接收内存的地址信息通过RDMA操作将信息存放至所述第一接收内存。这样由于接收设备的接收内存是由通信设备主动申请的,即通信设备可以按需、动态地向接收设备申请接收内存,从而可以提高设备的内存的利用率,以及提高RDMA通信的传输效率。
图13是本发明实施例提供的另一种通信设备的结构示意图,如图13所示,包括:第一发送单元81、第一接收单元82和存放单元83,其中:
第一发送单元81,用于向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息。
第一单元81具体可以是根据通信设备需要向接收设备发送的信息所需要的内存空间,向接收设备发送第一申请消息,即第一申请消息申请的第一内存空间可以是大于或者等于通信设备需要向接收设备发送的信息所需要的内存空间,即第一接收内存的空间大小是通信设备需要向接收设备发送的信息所需要的内存空间大小而确定的,这样可以实现按需向接收设备申请接收内存。
还可以是接收设备预先设置至少一个接收内存,其中,上述第一接收内存为该至少一个接收内存中的一个。
第一接收单元82,用于接收所述接收设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息和所述第一接收内存的内存空间信息。
上述第一内存信息包括上述第一地址信息和上述内存空间信息,这样通信设备接收到上述第一内存信息后就可以获取到第一内存的地址和空间大小。
存放单元83,用于当所述通信设备需要向所述接收设备发送信息时,根据所述第一地址信息通过RDMA操作将所述信息存放至所述第一接收内存。
作为一种可选的实施方式,所述设备还可以包括:
第二发送单元84,用于当所述通信设备根据所述内存空间信息,以及所述通信设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时,向所述接收设备发送内存释放消息,所述内存释放消息用于请求释放所述第一接收内存中存放的信息。
该实施方式,可以实现当通信设备识别出第一接收内存的空闲空间小于或者等于第一内存空间值时,通信设备请求接收设备释放第一接收内存,即将第一接收内存中存放的消息转移或者删除,这样第一接收内存就可以继续存放通信设备发送的信息。
需要说明的是,存放单元83中存放上述消息的第一接收内存就为经过第二发送单元84释放后的第一接收内存,还可以是未经常释放前的第一接收内存。
作为一种可选的实施方式,如图14所示,所述设备还可以包括:
第三发送单元85,用于当所述通信设备根据所述内存空间信息,以及所述通信设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时,向接收设备发送第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息;
第二接收单元86,用于接收所述接收设备发送的第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
该实施方式可以实现当上述第一接收内存的空闲空间小于或者等于上述和二空闲阈值时,通信设备向接收设备申请第二接收内存。
该实施方式,所述第一接收内存与所述第二接收内存的地址连续。存放单元83具体还可以用于当所述第一接收内存的空闲空间不够存放所述信息时,根据所述第一地址信息和所述第二地址信息通过RDMA操作将所述信息存放至连续接收内存,所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
具体还可以是通信设备向接收设备申请到第二接收内存后,就可以将第一接收内存和第二接收内存作为一个新的接收内存,新的接收内存的空闲内存等于第一接收内存的空闲内存加上第二接收内存的空闲内存。再通过RDMA操作将信息存放在新的接收内存中。
作为一种可选的实施方式,所述通信设备还可以将第一接收内存的使用情况进行实时更新。这样可以清楚地知道第一接收内存页的使用情况,以更好地安排以后消息的发送。
作为一种可选的实施方式,上述通信设备具体可以是通信设备包括的HCA通过交换机与接收设备包括的HCA进行通信,即上述第一申请消息、第二申请消息、第一内存信息、第二内存信息以及RDMA操作都是通过通信设备的HCA、交换机和接收设备的HCA进行传输的,即可以理解为通信设备的HCA通过交换机与接收设备的HCA连接。例如:图5所示的连接关系,其中,上述通信设备和接收设备可以是图5中的任意两个设备,即本实施例还可以支持两个以上的设备进行所述方法的通信。
上述技术方案中,在上面实施例的基础上增加了多种可选的实施方式,且都可以实现提高设备的内存的利用率。
图15是本发明实施例提供的另一种通信设备的结构示意图,如图15所示,包括:第一接收单元91、第一选择单元92和第一发送单元93,其中:
第一接收单元91,用于接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述通信设备发送的信息。
第一选择单元92,用于根据所述第一申请消息将从所述通信设备的内存中选择所述第一接收内存。
可以理解为通信设备根据上述第一申请消息将上述第一接收内存分配给发送设备使用,即第一接收内存专用于存放发送设备发送的消息。
具体可以是通信设备预先分配至少一个接收内存,当接收到上述第一请求消息时,就可以从这至少一个接收内存中选择一个作为上述第一接收内存。还可以是上述第一请求消息包括第一接收内存的空间大小信息,第一选择单元92该根据空间大小信息从接收设备的内存中选择该空间大小信息所指示的大小的内存作为上述第一接收内存。
第一发送单元93,用于向所述发送设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息。
所述通信设备的所述第一接收内存存放信息,所述信息为所述发送设备根据第一地址信息通过RDMA操作存放的信息。
具体可以是发送设备向通信设备根据第一地址信息通过RDMA操作将信息存放至所述第一接收内存,具体可以是该RDMA操作中携带有上述第一地址信息,即该RDMA操作通过第一地址信息可以知道上述第一接收内存的地址,从而可以将消息存放至上述第一接收内存中。这样通信设备还可以通过第一地址信息获取第一接收内存中存放的上述信息,例如,通信设备的上层应用通过第一地址信息获取第一接收内存中存放的上述信息,对该信息进行处理。
其中,上述发送设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
其中,上述通信设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
上述第一接收内存具体可以是以内存页为单位的内存,例如上述第一接收内存包括至少一个内存页。具体可以是通信设备预先将通信设备包括的一部分或者部分内存划分为至少一个内存页。
上述技术方案中,通信设备接收发送设备发送的第一申请消息;通信设备根据所述第一申请消息从通信设备的内存中选择所述第一接收内存;通信设备向所述发送设备发送第一内存信息;通信设备的所述第一接收内存存放信息,所述消息为所述发送设备通过RDMA操作存放的信息。这样由于通信设备的接收内存是由发送设备主动申请的,即发送设备可以按需、动态地向通信设备申请接收内存,从而可以提高设备的内存的利用率。
图16是本发明实施例提供的另一种通信设备的结构示意图,如图16所示,包括:第一接收单元101、第一选择单元102和第一发送单元103,其中:
第一接收单元101,用于接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述通信设备发送的信息。
上述第一申请消息具体可以是根据发送设备需要向通信设备发送的消息所需要的内存空间,向通信设备发送第一申请消息,即第一申请消息申请的第一内存空间可以是大于或者等于发送设备需要向通信设备发送的消息所需要的内存空间,即第一接收内存的空间大小是发送设备需要向通信设备发送的信息所需要的内存空间大小而确定的,这样可以实现按需向通信设备申请接收内存。
还可以是接收设备预先设置至少一个接收内存,其中,上述第一接收内存为该至少一个接收内存中的一个。
第一选择单元102,用于根据所述第一申请消息将从所述通信设备的内存中选择所述第一接收内存。
第一发送单元103,用于向所述发送设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息和所述第一接收内存的内存空间信息。
上述第一内存信息包括上述第一地址信息和上述内存空间信息,这样发送设备接收到上述第一内存信息后就可以获取到第一内存的地址和空间大小。
所述通信设备的所述第一接收内存存放消息,所述消息为所述发送设备通过携带所述第一地址信息的RDMA操作存放的消息。
作为一种可选的实施方式,所述设备还可以包括:
第二接收单元104,用于接收所述发送设备发送的内存释放消息,所述述内存释放消息用于请求释放所述第一接收内存中存放的信息;所述内存释放消息是当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时发送的消息;
释放单元105,用于根据所述内存释放消息释放所述第一接收内存中存放的信息。
需要说明的是,所述第一接收内存存放的消息具体可以是存放经过释放单元105释放后的第一接收内存中,还可以是存放在未经过释放单元105释放后的第一接收内存中。
作为一种可选的实施方式,如图17所示,所述设备还可以包括:
第三接收单元106,用于接收所述发送设备发送的第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息,所述第二申请消息为当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时发送的消息;
第二选择单元107,用于根据所述第二申请消息从所述通信设备的内存中选择所述第二接收内存;
第二发送单元108,用于向所述发送设备发送第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
该实施方式可以实现当上述第一接收内存的空闲空间小于或者等于上述和二空闲阈值时,发送设备向通信设备申请第二接收内存,即通信设备将上述第二接收内存作为存放发送设备发送的信息的内存。
该实施方式,所述第一接收内存与所述第二接收内存的地址连续。所述通信设备的连续接收内存存放信息,所述信息为当所述第一接收内存的空闲空间不够存放所述信息时,为所述发送设备根据所述第一地址信息和所述第二地址信息通过RDMA操作存放的信息;所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
即可以实现将信息存放至第一接收内存和第二接收内存,即第一接收内存和第二接收内存共同存放上述信息,例如,第一接收内存存放上述信息的一部分,第二接收内存存放上述信息的另一部分。
作为一种可选的实施方式,上述发送设备具体可以是发送设备包括的HCA通过交换机与通信设备包括的HCA进行通信,即上述第一申请消息、第二申请消息、第一内存信息、第二内存信息以及RDMA操作都是通过发送设备的HCA、交换机和通信设备的HCA进行传输的,即可以理解为发送设备的HCA通过交换机与通信设备的HCA连接。例如:图5所示的连接关系,其中,上述发送设备和通信设备可以是图5中的任意两个设备,即本实施例还可以支持两个以上的设备进行所述方法的通信。
上述技术方案中,在上面实施例的基础上增加了多种可选的实施方式,且都可以实现提高设备的内存的利用率。
图18是本发明实施例提供的一种基于RDMA的通信系统的结构示意图,如图18所示,包括:第一通信设备111和第二通信设备112,其中:
第一通信设备111用于向所述向第二通信设备112发送第一申请消息,所述第一申请消息用于在所述第二通信设备112申请第一接收内存,所述第一接收内存用于存放所述第一通信设备111向所述第二通信设备112发送的信息;以及接收所述第二通信设备112发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息;当所述第一通信设备111需要向所述第二通信设备112发送信息时,根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存;
所述第二通信设备112用于第二通信设备112接收第一通信设备111发送的第一申请消息;以及根据所述第一申请消息从所述第二通信设备112的内存中选择所述第一接收内存;以及向所述第一通信设备111发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息。
作为一种可选的实施方式,第一通信设备111可以是图12至图14所示的实施例中任一实施方式的通信设备。
作为一种可选的实施方式,第二通信设备112可以是图15至图17所示的实施例中任一实施方式的通信设备。
上述技术方案中,第一通信设备向第二通信设备申请第一接收内存;所述第一通信设备接收所述第二通信设备发送的第一内存信息;当所述第一通信设备需要向所述第二通信设备发送信息时,所述第一通信设备通过RDMA操作将信息存放至所述第一接收内存。这样由于第二通信设备的接收内存是由第一通信设备主动申请的,即第一通信设备可以按需、动态地向第二通信设备申请接收内存,从而可以提高设备的内存的利用率,以及提高RDMA通信的传输效率。
图19是本发明实施例提供的另一种通信设备的结构示意图,如图19所示,包括:通信接口121和存储器122,以及与所述通信接口121和所述存储器122连接的处理器123,所述存储器122存储一组程序代码,所述处理器123用于调用所述存储器122存储的程序执行如下操作:
向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
接收所述接收设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息;
当所述发送设备需要向所述接收设备发送信息时,根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存。
在另一个实施例中,处理器123还可以用于执行如下操作:
向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
接收所述接收设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息和所述第一接收内存的内存空间信息;
当所述发送设备需要向所述接收设备发送信息时,根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存;
当所述通信设备根据所述内存空间信息,以及所述通信设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时,向所述接收设备发送内存释放消息,所述内存释放消息用于请求释放所述第一接收内存中存放的信息。
该实施方式,可以实现当通信设备识别出第一接收内存的空闲空间小于或者等于第一内存空间值时,通信设备请求接收设备释放第一接收内存,即将第一接收内存中存放的消息转移或者删除,这样第一接收内存就可以继续存放通信设备发送的信息。
需要说明的是,当所述通信设备所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小识别出所述第一接收内存的空闲空间小于或者等于第一内存空间值时,所述通信设备向所述接收设备发送内存释放消息的操作可以是在当所述通信设备需要向所述接收设备发送信息时,所述通信设备根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存之前执行,也可以是在当所述通信设备需要向所述接收设备发送信息时,所述通信设备根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存之后执行,即处理器123向RDMA操作将消息存放至所述第一接收内存可以为经过释放后的第一接收内存,也可以为未释放后的第一接收内存。
在另一个实施例中,处理器123还可以用于执行如下操作:
向接收设备发送第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
接收所述接收设备发送的第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息和所述第一接收内存的内存空间信息;
当所述通信设备需要向所述接收设备发送信息时,根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存;
当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时,所述发送设备向接收设备发送第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息;
接收所述接收设备发送的的第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
该实施方式可以实现当上述第一接收内存的空闲空间小于或者等于上述和二空闲阈值时,通信设备向接收设备申请第二接收内存。
该实施方式,所述第一接收内存与所述第二接收内存的地址连续。处理器123执行的当所述通信设备需要向所述接收设备发送信息时,根据所述第一地址信息通过RDMA操作将信息存放至所述第一接收内存的操作可以包括:
当所述通信设备需要向所述接收设备发送信息,且所述第一接收内存的空闲空间不够存放所述信息时,根据所述第一地址信息和所述第二地址信息通过RDMA操作将所述信息存放至连续接收内存,所述连续接收内存包括所述第一接收内存中的空闲内存和所述第二接收内存中与所述空闲内存连续的内存。
即可以实现将信息存放至第一接收内存和第二接收内存,即第一接收内存和第二接收内存共同存放上述信息,例如,第一接收内存存放上述信息的一部分,第二接收内存存放上述信息的另一部分。
其中,上述网络接口131具体可以是HCA。
其中,上述通信设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
其中,上述接收设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
上述第一接收内存具体可以是以内存页为单位的内存,例如上述第一接收内存包括至少一个内存页。具体可以是接收设备预先将接收设备包括的一部分或者部分内存划分为至少一个内存页。
上述技术方案中,通信设备向接收设备申请第一接收内存;所述通信设备再根据第一接收内存的地址信息通过RDMA操作将信息存放至所述第一接收内存。这样由于接收设备的接收内存是由发送设备主动申请的,即发送设备可以按需、动态地向接收设备申请接收内存,从而可以提高设备的内存的利用率。
图20是本发明实施例提供的另一种通信设备的结构示意图,如图20所示,包括:通信接口131和存储器132,以及与所述通信接口131和所述存储器132连接的处理器133,所述存储器132存储一组程序代码,所述处理器133用于调用所述存储器存储的程序执行如下操作:
接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
根据所述第一申请消息从所述接收设备的内存中选择所述第一接收内存;
向所述发送设备发送所第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息;
通信设备的所述第一接收内存存放信息,所述信息为所述发送设备根据所述第一述第一地址信息通过RDMA操作存放的信息。
在另一个实施例中,处理器123还可以用于执行如下操作:
接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
根据所述第一申请消息从所述接收设备的内存中选择所述第一接收内存;
向所述发送设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息和所述第一接收内存的内存空间信息;
通信设备的所述第一接收内存存放信息,所述信息为所述发送设备根据所述第一述第一地址信息通过RDMA操作存放的信息;
接收所述发送设备发送的内存释放消息,所述述内存释放消息用于请求释放所述第一接收内存中存放的信息;所述内存释放消息是当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第一内存空闲阈值时发送的消息;
根据所述内存释放消息释放所述第一接收内存中存放的信息。
该实施方式,可以实现当发送设备识别出第一接收内存的空闲空间小于或者等于第一内存空间值时,发送设备请求通信设备释放第一接收内存,即将第一接收内存中存放的消息转移或者删除,这样第一接收内存就可以继续存放发送设备发送的消息。
在另一个实施例中,处理器133还可以执行如下操作:
接收发送设备发送的第一申请消息,所述第一申请消息用于在所述接收设备申请第一接收内存,所述第一接收内存用于存放所述发送设备向所述接收设备发送的信息;
根据所述第一申请消息从所述接收设备的内存中选择所述第一接收内存;
向所述发送设备发送第一内存信息;其中,所述第一内存信息至少包含所述第一接收内存的第一地址信息和所述第一接收内存的内存空间信息;
通信设备的所述第一接收内存存放信息,所述信息为所述发送设备根据所述第一述第一地址信息通过RDMA操作存放的信息;
接收所述发送设备发送的第二申请消息,所述第二申请消息用于在所述接收设备申请第二接收内存,所述第二接收内存用于存放所述发送设备向所述接收设备发送的信息,所述第二申请消息为当所述发送设备根据所述内存空间信息,以及所述发送设备通过RDMA操作在所述第一接收内存中已存放信息的大小,确定所述第一接收内存的空闲空间小于或者等于第二内存空闲阈值时发送的消息;
根据所述第二申请消息从所述接收设备的内存中选择所述第二接收内存;
向所述发送设备发送第二内存信息;其中,所述第二内存信息至少包含所述第二接收内存的第二地址信息。
其中,上述网络接口131具体可以是HCA。
其中,上述发送设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
其中,上述通信设备可以是任何可以支持RDMA通信的设备,例如:基站、计算机或服务器等可以支持RDMA通信的设备。
上述第一接收内存具体可以是以内存页为单位的内存,例如上述第一接收内存包括至少一个内存页。具体可以是通信设备预先将通信设备包括的一部分或者部分内存划分为至少一个内存页。
上述技术方案中,通信设备接收发送设备发送的第一申请消息;通信设备根据所述第一申请消息从所述接收设备的内存中选择所述第一接收内存;通信设备向所述发送设备发送第一内存信息;通信设备的所述第一接收内存存放信息,所述信息为所述发送设备通过RDMA操作存放的信息。这样由于通信设备的接收内存是由发送设备主动申请的,即发送设备可以按需、动态地向通信设备申请接收内存,从而可以提高设备的内存的利用率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器(Random Access Memory,简称RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。