一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

通信方法、装置及系统与流程

2022-08-17 11:49:56 来源:中国专利 TAG:
1.本技术涉及通信领域,并且更具体地,涉及一种通信方法、装置及系统。
背景技术
::2.在主机(例如,服务器等)中,通常包括计算、内存(memory)和存储(storage)等资源。主机中所有应用程序都需要运行在内存中。但是,主机中的内存一般都是事先配置好的,这使得在应用程序运行的过程中,可能会出现内存不足的情况,从而影响应用程序的运行性能。3.在主机出现内存不足时,通常会通过访问主机中的存储(例如,硬盘)来获得内存空间,但访问存储的时延(可达毫秒级)远大于直接访问内存(100纳秒)的时延,这样会造成应用程序运行性能的大幅下降。4.因此,如何提高主机中应用程序的运行性能是亟需解决的技术问题。技术实现要素:5.本技术提供一种通信方法、装置及系统,能够提高主机中应用程序的运行性能。6.第一方面,提供了一种通信方法。第一主机接收网络设备发送的内存访问地址,该内存访问地址指向第一内存池中的存储单元,该网络设备与该第一主机连接,该网络设备用于交换和转发该第一主机的业务,该网络设备还用于管理该第一内存池;在该第一主机的内存满足预设条件时,该第一主机根据该内存访问地址访问该存储单元。7.应理解,现有与主机连接且能够对主机的业务进行交换和转发的网络设备中通常不包括内存管理功能,也就意味着在本技术中,需要预先在网络设备中部署内存管理功能。8.应理解,网络设备对第一内存池的管理,包括实现地址隔离、访问控制、消息分发、流量控制、访问冲突处理等功能,而这些功能正是网络设备所擅长的,因而能够降低第一内存池的管理难度和成本。9.在本技术提供的通信方法中,第一主机可以接收网络设备发送的内存访问地址,其中,内存访问地址指向第一内存池中的存储单元,以便在第一主机的内存满足预设条件时,第一主机能够根据内存访问地址访问第一内存池中的存储单元,从而能够扩展第一主机的内存,提高第一主机中应用程序的运行性能;并且,由网络设备做第一内存池的管理时,能够降低第一内存池的管理难度和成本。10.结合第一方面,在第一方面的一种实现方式中,该网络设备还与至少一个第二主机连接,该网络设备用于交换和转发该至少一个第二主机的业务,该至少一个第二主机提供第二内存池,该第一内存池包括该第二内存池。11.其中,该至少一个第二主机提供第二内存池,换句话来讲,是指:第二内存池可以是一个或多个第二主机的内存形成的逻辑上的内存池。12.应理解,第一内存池由网络设备进行管理,第一内存池包括第二内存池,意味着本技术中第二内存池也由网络设备进行管理。13.在本技术实施例中,第一内存池可以包括第二内存池,第二内存池是一个或多个第二主机的内存形成的逻辑上的内存池,使得第一主机在内存满足预设条件时,可以根据内存访问地址访问第二主机的内存,从而能够扩展第一主机的内存,提高第一主机中应用程序的运行性能;并且,能够提高第二主机的内存利用率;并且,由网络设备管理第二主机的第二内存池,能够降低第二内存池的管理难度和成本。14.结合第一方面,在第一方面的一种实现方式中,该网络设备包括第三内存池,该第一内存池包括该第三内存池。15.应理解,现有与主机连接且能够对主机的业务进行交换和转发的网络设备中通常不包括内存池,也就意味着在该实现方式中,还需要预先在网络设备中部署内存池。16.在本技术实施例中,第一内存池可以包括第三内存池,第三内存池为网络设备的内存池,使得第一主机在内存满足预设条件时,可以根据内存访问地址访问网络设备的第三内存池,从而能够扩展第一主机的内存,提高第一主机中应用程序的运行性能;且相较于访问第二主机的内存(即访问第二内存池的内存)而言能够缩短内存的访问路径,从而能够降低内存的访问时延;并且,由网络设备做第三内存池的管理时,能够降低第三内存池的管理难度和成本。17.可选地,实际操作中,第一内存池可以仅包括第二内存池,或者可以仅包括第三内存池,或者可以同时包括第二内存池和第三内存池(即第一内存池是包括第二内存池和第三内存池的逻辑内存池)。并且,由网络设备管理第一内存池,既可以扩展第一主机的内存,又可以降低内存池的管理难度和成本。18.结合第一方面,在第一方面的一种实现方式中,在该第一主机接收网络设备发送的内存访问地址之前,该方法还包括:在该第一主机的内存满足该预设条件时,该第一主机向该网络设备发送请求消息,该请求消息用于请求该第一内存池中的内存。19.结合第一方面,在第一方面的一种实现方式中,该预设条件为以下任意一种:该第一主机的内存使用率大于第一阈值;该第一主机的内存剩余空间小于第二阈值;该第一主机的内存剩余空间小于该第一主机在未来目标时间段处理业务所需的内存空间;或者,该第一主机的内存使用策略为优先使用该第一内存池。20.可选地,上述第一阈值或第二阈值可以是具体数值也可以是百分比。21.示例性地,预设条件为第一主机的内存使用率大于第一阈值时,该第一阈值可以为百分比,例如:可以是80%、90%、98%等,本技术对此不做限定。应理解,第一主机的内存使用率大于第一阈值时,表示第一主机中应用程序已占用较多内存空间。22.示例性地,预设条件为第一主机的内存剩余空间小于第二阈值时,该第二阈值可以是具体数值,例如,0g、5g、8g等具体数值;也可以是百分比,例如:可以是0%、10%、20%等,本技术对此不做限定。应理解,第一主机的内存剩余空间小于第二阈值时,表示第一主机中剩余较少的内存空间可以供应用程序使用。23.可选地,若预设条件为该第一主机的内存剩余空间小于该第一主机在未来目标时间段处理业务所需的内存空间。上述方法还包括:预测对第一主机在未来目标时间段处理业务(即运行应用程序)所需的内存空间。24.意味着,本技术可以预先预测第一主机在未来目标时间段处理业务所需的内存空间,然后在第一主机的内存满足预设条件时(即第一主机内存剩余空间比第一主机在未来目标时间段处理业务所需的内存空间小时),就根据内存访问地址预先访问第一内存池,从而能够避免第一主机内存用完再去向网络设备请求内存所带来的时延问题,可以进一步提高第一主机中应用程序的运行性能。25.结合第一方面,在第一方面的一种实现方式中,该第一主机包括网卡,该第一主机与该网络设备通过远程直接内存访问rdma协议通信。26.结合第一方面,在第一方面的一种实现方式中,该第一主机包括总线接口,该第一主机与该网络设备通过高速外围组件互联pcie总线或计算快速链路cxl通信。27.结合第一方面,在第一方面的一种实现方式中,当该第一主机不再需要使用该存储单元时,该方法还包括:该第一主机向该网络设备发送通知消息,该通知消息包括该内存访问地址,以使该网络设备释放该存储单元。28.可选地,本技术中第一内存池还可以作为多个主机的共享内存池。29.在本技术实施例中,在第一主机不再需要使用网络设备中的存储单元时,可以通过第一主机向网络设备发送通知消息,以使网络设备释放该存储单元,以供其他主机使用。30.应理解,释放存储单元包括将存储单元从使用状态修改为空闲状态。31.第二方面,提供了一种通信方法。网络设备接收第一主机发送的请求消息,该请求消息用于请求第一内存池中的内存,该网络设备与该第一主机连接,该网络设备用于交换和转发该第一主机的业务,该网络设备还用于管理该第一内存池;该网络设备向该第一主机发送内存访问地址,该内存访问地址指向该第一内存池中的存储单元。32.应理解,网络设备向第一主机发送内存访问地址,具体是指网络设备根据请求消息向第一主机发送内存访问地址。33.结合第二方面,在第二方面的一种实现方式中,该网络设备还与至少一个第二主机连接,该网络设备用于交换和转发该至少一个第二主机的业务,该至少一个第二主机提供第二内存池,该第一内存池包括该第二内存池。34.结合第二方面,在第二方面的一种实现方式中,该网络设备包括第三内存池,该第一内存池包括该第三内存池。35.结合第二方面,在第二方面的一种实现方式中,该第一主机与该网络设备通过远程直接内存访问rdma协议通信。36.结合第二方面,在第二方面的一种实现方式中,该第一主机与该网络设备通过高速外围组件互联pcie总线或计算快速链路cxl通信。37.结合第二方面,在第二方面的一种实现方式中,该网络设备向该第一主机发送内存访问地址包括:该网络设备确定该第一内存池中的空闲存储单元;该网络设备向该第一主机发送该空闲存储单元对应的内存访问地址,以使该第一主机使用该空闲存储单元。38.结合第二方面,在第二方面的一种实现方式中,该方法还包括:该网络设备记录该第一内存池中的各存储单元的状态,该状态包括空闲或使用。39.应理解,状态为使用是指存储单元的内存空间被占用,状态为空闲是指存储单元的内存空间没有被占用。40.结合第二方面,在第二方面的一种实现方式中,该方法还包括:该网络设备接收该第一主机发送的通知消息,该通知消息包括该内存访问地址;该网络设备根据该通知消息释放该存储单元。41.可选地,本技术中第一内存池还可以作为多个主机的共享内存池。42.在本技术实施例中,网络设备可以接收第一主机发送的通知消息,该通知消息包括内存访问地址,然后根据通知消息释放内存访问地址对应的存储单元,以供其他主机使用。43.应理解,释放存储单元包括将存储单元从使用状态修改为空闲状态。44.第三方面,提供了一种通信装置,该通信装置应用于第一主机,该通信装置包括:接收模块,用于接收网络设备发送的内存访问地址,该内存访问地址指向第一内存池中的存储单元,该网络设备与该第一主机连接,该网络设备用于交换和转发该第一主机的业务,该网络设备还用于管理该第一内存池;处理模块,用于在该第一主机的内存满足预设条件时,根据该内存访问地址访问该存储单元。45.结合第三方面,在第三方面的一种实现方式中,该网络设备还与至少一个第二主机连接,该网络设备用于交换和转发该至少一个第二主机的业务,该至少一个第二主机提供第二内存池,该第一内存池包括该第二内存池。46.结合第三方面,在第三方面的一种实现方式中,该网络设备包括第三内存池,该第一内存池包括该第三内存池。47.结合第三方面,在第三方面的一种实现方式中,该通信装置还包括:发送模块,用于在该第一主机的内存满足该预设条件时,向该网络设备发送请求消息,该请求消息用于请求该第一内存池中的内存。48.结合第三方面,在第三方面的一种实现方式中,该预设条件为以下任意一种:该第一主机的内存使用率大于第一阈值;该第一主机的内存剩余空间小于第二阈值;该第一主机的内存剩余空间小于该第一主机在未来目标时间段处理业务所需的内存空间;或者,该第一主机的内存使用策略为优先使用该第一内存池。49.结合第三方面,在第三方面的一种实现方式中,该第一主机包括网卡,该第一主机与该网络设备通过远程直接内存访问rdma协议通信。50.结合第三方面,在第三方面的一种实现方式中,该第一主机包括总线接口,该第一主机与该网络设备通过高速外围组件互联pcie总线或计算快速链路cxl通信。51.结合第三方面,在第三方面的一种实现方式中,当该第一主机不再需要使用该存储单元时,该发送模块还用于,向该网络设备发送通知消息,该通知消息包括该内存访问地址,以使该网络设备释放该存储单元。52.第四方面,提供了一种通信装置,该通信装置应用于网络设备,该通信装置包括:接收模块,用于接收第一主机发送的请求消息,该请求消息用于请求第一内存池中的内存,该网络设备与该第一主机连接,该网络设备用于交换和转发该第一主机的业务,该网络设备还用于管理该第一内存池;发送模块,用于向该第一主机发送内存访问地址,该内存访问地址指向该第一内存池中的存储单元。53.结合第四方面,在第四方面的一种实现方式中,该网络设备还与至少一个第二主机连接,该网络设备用于交换和转发该至少一个第二主机的业务,该至少一个第二主机提供第二内存池,该第一内存池包括该第二内存池。54.结合第四方面,在第四方面的一种实现方式中,该网络设备包括第三内存池,该第一内存池包括该第三内存池。55.结合第四方面,在第四方面的一种实现方式中,该第一主机与该网络设备通过远程直接内存访问rdma协议通信。56.结合第四方面,在第四方面的一种实现方式中,该第一主机与该网络设备通过高速外围组件互联pcie总线或计算快速链路cxl通信。57.结合第四方面,在第四方面的一种实现方式中,该通信装置还包括:处理模块,用于确定该第一内存池中的空闲存储单元;该发送模块还用于,向该第一主机发送该空闲存储单元对应的内存访问地址,以使该第一主机使用该空闲存储单元。58.结合第四方面,在第四方面的一种实现方式中,该处理模块还用于,记录该第一内存池中的各存储单元的状态,该状态包括空闲或使用。59.结合第四方面,在第四方面的一种实现方式中,该接收模块还用于,接收该第一主机发送的通知消息,该通知消息包括所述内存访问地址;该处理模块还用于,根据该通知消息释放该存储单元。60.第五方面,提供了一种通信系统,包括:如第三方面或者第三方面的任一可能的实现方式中的通信装置以及如第四方面或者第四方面的任一可能的实现方式中的通信装置。61.第六方面,提供了一种通信装置,包括处理器和存储器;所述处理器运行所述存储器中的指令,使得所述通信装置执行如第一方面或者第一方面的任一可能的实现方式中的通信方法;和/或,执行如第二方面或者第二方面的任一可能的实现方式中的通信方法。62.第七方面,提供了一种计算设备,包括:至少一个处理器和存储器,所述至少一个处理器与所述存储器耦合,用于读取并执行所述存储器中的指令,以执行如第一方面或者第一方面的任一可能的实现方式中的通信方法;和/或,执行如第二方面或者第二方面的任一可能的实现方式中的通信方法。63.第八方面,提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如第一方面或者第一方面的任一可能的实现方式中的通信方法;和/或,执行如第二方面或者第二方面的任一可能的实现方式中的通信方法。。64.第九方面,提供了一种计算机可读存储介质,其特征在于,包括指令;所述指令用于实现如第一方面或者第一方面的任一可能的实现方式中的通信方法;和/或,实现如第二方面或者第二方面的任一可能的实现方式中的通信方法。65.第十方面,提供了一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行如第一方面或者第一方面的任一可能的实现方式中的通信方法;和/或,执行如第二方面或者第二方面的任一可能的实现方式中的通信方法。66.可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行如第一方面或者第一方面的任一可能的实现方式中的通信方法;和/或,执行如第二方面或者第二方面的任一可能的实现方式中的通信方法。67.第十一方面,提供了一种芯片系统,该芯片系统包括至少一个处理器,用于支持实现上述第一方面或第一方面的某些实现中所涉及的功能;和/或,实现上述第二方面或第二方面的某些实现中所涉及的功能,例如接收或处理上述方法中所涉及的数据和/或信息。68.在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存程序指令和数据,存储器位于处理器之内或处理器之外。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。69.本技术第二至第十一方面的有益效果可以参考对第一方面及其各实施方式中的有益效果的描述。附图说明70.图1是一种传统dcn架构示例图;71.图2是本技术实施例提供的一种应用在服务器内的内存访问流程示例图;72.图3是本技术实施例提供的一种通信方法示例图;73.图4是本技术实施例提供的一种第一内存池的构成示例图;74.图5是本技术实施例提供的一种dcn架构示例图;75.图6是本技术实施例提供的一种基于tor的内存池化架构示例图;76.图7是本技术实施例提供的另一种基于tor的内存池化架构示例图;77.图8是本技术实施例提供的通信装置800的示例图;78.图9是本技术实施例提供的通信装置900的示例图;79.图10是本技术实施例提供的通信系统1000的示例图;80.图11是本技术实施例提供的通信装置1100的硬件结构示例性框图。具体实施方式81.下文将先对本技术所涉及的
背景技术
:进行详细介绍。82.上述提到,在主机(例如,服务器等)中,通常包括计算、内存和存储等资源。主机中所有应用程序的运行都需要在内存中进行。但是,主机中的内存一般都是事先配置好的,这使得在应用程序运行的过程中,可能会出现内存不足的情况,从而影响应用程序的运行性能。83.在主机出现内存不足时,可以通过访问主机中的存储(例如,硬盘)来获得内存空间。下面结合图1和图2,以传统数据中心网络(datacenternetwork,dcn)架构中的服务器为例对服务器出现内存不足时的内存访问流程进行介绍。84.图1是一种传统dcn架构示例图。如图1所示,传统数据中心主要基于以服务器为中心(server-centric)的架构,在这种架构中,每个服务器内有固定数量的计算(即中央处理器(centralprocessingunit,cpu))、内存(memory)和存储(storage,例如,固态硬盘(solidstatedrive,ssd)、机械硬盘(harddiskdrive,hdd)等)资源。同一个机架(rack)内的服务器之间不直接互连,而是通过对应的架顶(topofrack,tor)交换机实现互联。tor交换机(以下简称为tor)也可以称为接入交换机或者叶(leaf)交换机。tor与tor之间通过汇聚交换机通信。因而,在此架构下,不同机架内的服务器之间可通过tor和汇聚交换机通信。85.在传统dcn架构中,当服务器内的内存被用完时,其无法访问其他服务器的内存。86.dcn内的每个服务器都可以看作是一个独立的数据处理单元。下面结合附图2,介绍应用在服务器内的内存访问流程。87.如图2所示,在传统dcn架构中,应用在服务器内的内存访问流程主要包括如下步骤:88.1)对于每一个应用,服务器中的操作系统会分配虚拟地址,虚拟地址包含页号和地址偏移信息。89.2)cpu内的内存管理单元(memorymanagementunit,mmu)根据页表(pagetable)内的地址映射信息,将虚拟地址转换成物理地址,从而实现应用处理时对物理内存的访问。90.3)如果在步骤2)中,分配的虚拟地址在页表中找不到其对应的物理地址信息(例如物理内存不足),系统会产生缺页(pagefault),此时系统会通过交换(swap)的方式,从服务器存储处获得地址空间。91.4)在物理内存被使用的过程中,为了优化访问流程,系统会自带简易的冷热数据替换功能,将内存中的一部分冷数据放到存储中,从而使内存空闲出来给更多应用使用。92.可见,在服务器出现内存不足时,系统会从服务器自身的存储获得地址空间,从而保证应用程序的正常运行。但是,通常访问存储的时延(可达毫秒级)远大于直接访问内存(100纳秒)的时延,这样会造成应用程序运行性能的大幅下降。93.基于此,本技术提出一种通信方法,使得在主机的内存满足预设条件时,主机可以访问网络设备管控的内存池中的内存。从而不仅能够实现主机内存扩展,还可以实现内存的快速访问,进而能够提高主机中应用程序的运行性能;且能够降低内存池的管理难度和成本。94.下面结合附图对本技术方案进行详细介绍。95.图3是本技术实施例提供的一种通信方法示例图。如图3所示,方法300可以包括s310和s320,下面对方法300中的各个步骤进行详细描述。96.s310,网络设备向第一主机发送内存访问地址。97.相应地,第一主机接收网络设备发送的内存访问地址。其中,内存访问地址指向第一内存池中的存储单元,网络设备与第一主机连接,网络设备用于交换和转发第一主机的业务,网络设备还用于管理第一内存池。98.应理解,本技术实施例所涉及的主机(包括第一主机和下文中的第二主机)可以为任何计算设备,如服务器、计算机、台式计算机、虚拟机或其他用户设备等等中的任意一项,本技术对此不做限定。应理解,主机可以通过网络与分布式存储系统通信,且主机中安装有操作系统以及其他应用程序。为便于描述,在下文实施例中,将以服务器为例描述主机的各项功能,参见图5至图7部分。99.应理解,本技术实施例所涉及的网络设备与主机连接(可以是直接连接,也可以是间接连接),且能够交换和转发主机的业务。可选地,网络设备可以是接入交换机、智能交换机、汇聚交换机或其他具有交换功能的网络设备形态等中的任意一项,本技术对此不做限定。为便于描述,在下文实施例中,将以tor为例进行描述。100.应理解,本技术实施例中的网络设备和主机可以进行端到端的数据交互,且在网络设备处可以实现通信协议的终结(即对接收的数据报文执行该通信协议相关的处理,而不仅仅是转发)。101.还应理解,现有与主机连接且能够对主机的业务进行交换和转发的网络设备中通常不包括内存管理功能,也就意味着在本技术中,需要预先在网络设备中部署内存管理功能。102.应理解,网络设备对第一内存池的管理,包括实现地址隔离、访问控制、消息分发、流量控制、访问冲突处理等功能,而这些功能正是网络设备所擅长的,因而能够降低第一内存池的管理难度和成本。103.可选地,第一内存池可以是t级内存池,也可以是g级内存池,本技术对此不做限定。其中,t和g为内存的单位。104.可选地,网络设备还可以记录第一内存池中的各存储单元的状态,其中,状态包括空闲或使用。当一个存储单元被分配给某个主机后,网络设备可以将该存储单元的状态设置为使用,当该存储单元没有被分配时,网络设备可以将该存储单元的状态设置为空闲。例如,网络设备可以为每个存储单元设置一个状态标志位,该状态标志位的不同取值可以表示该存储单元的不同状态。105.可选地,网络设备向第一主机发送内存访问地址包括:网络设备确定第一内存池中的空闲存储单元;网络设备向第一主机发送空闲存储单元对应的内存访问地址,以使第一主机使用该空闲存储单元。106.可选地,在网络设备向第一主机发送内存访问地址(相应地,在第一主机接收网络设备发送的内存访问地址)之前,方法300还可以包括步骤s330,在第一主机的内存满足预设条件时,第一主机向网络设备发送请求消息,该请求消息用于请求第一内存池中的内存。相应地,网络设备接收第一主机发送的请求消息。这种情况下,网络设备向第一主机发送内存访问地址,实际是指网络设备根据请求消息向第一主机发送内存访问地址。107.步骤s330还可以替换为以下实现过程:网络设备通过第一主机或其他内存监测设备得知第一主机内的内存使用情况,然后网络设备根据第一主机内的内存使用情况向第一主机发送内存访问地址。例如,网络设备可以在第一主机内存使用率较大、或第一主机剩余内存较少或第一主机剩余内存无法满足后期需求等的情况下,向第一主机发送内存访问地址。应理解,本技术不限定触发网络设备向第一主机发送内存访问地址的条件。108.可选地,上述预设条件包括但不限于以下任意一种:第一主机的内存使用率大于第一阈值;第一主机的内存剩余空间小于第二阈值;第一主机的内存剩余空间小于第一主机在未来目标时间段处理业务所需的内存空间;或者,第一主机的内存使用策略为优先使用第一内存池。109.可选地,上述第一阈值和第二阈值可以是具体数值也可以是百分比。110.示例性地,预设条件为第一主机的内存使用率大于第一阈值时,该第一阈值可以为百分比,例如:可以是80%、90%、98%等,本技术对此不做限定。应理解,第一主机的内存使用率大于第一阈值时,表示第一主机中应用程序运行已占用较多内存空间。111.示例性地,预设条件为第一主机的内存剩余空间小于第二阈值时,该第二阈值可以是具体数值,例如,0g、5g、8g等具体数值;也可以是百分比,例如:可以是0%、10%、20%等,本技术对此不做限定。应理解,第一主机的内存剩余空间小于第二阈值时,表示第一主机中剩余较少的内存空间可以供应用程序的运行使用。112.可选地,若预设条件为该第一主机的内存剩余空间小于该第一主机在未来目标时间段处理业务所需的内存空间。方法300还可以包括:预测第一主机在未来目标时间段处理业务(即运行应用程序)所需的内存空间。意味着,本技术可以预先预测第一主机在未来目标时间段处理业务所需的内存空间,然后在第一主机的内存满足预设条件时(即第一主机内存剩余空间比第一主机在未来目标时间段处理业务所需的内存空间小时),第一主机就根据内存访问地址预先访问第一内存池的内存,以避免第一主机内存用完再去向网络设备请求内存所带来的时延问题,从而能够进一步提高第一主机中应用程序的运行性能。113.s320,在第一主机的内存满足上述预设条件时,第一主机根据内存访问地址访问存储单元。114.应理解,预设条件的介绍可参见上文,此处不再赘述。115.在本技术提供的通信方法中,网络设备可以向第一主机发送内存访问地址,其中,内存访问地址指向第一内存池中的存储单元,以便在第一主机的内存满足预设条件时,第一主机能够根据该内存访问地址访问网络设备第一内存池中的存储单元,从而能够扩展第一主机的内存,提高第一主机中应用程序的运行性能;并且,由网络设备做第一内存池的管理时,能够降低第一内存池的管理难度和成本。116.下面结合图4详细介绍本技术实施例所涉及的第一内存池的构成。如图4所示:117.在第一种可选方式中,网络设备还可以与至少一个第二主机(图4中示出了2个)连接,网络设备用于交换和转发该至少一个第二主机的业务。其中,该至少一个第二主机提供第二内存池,该第一内存池包括该第二内存池。可选地,第一内存池可以仅包括第二内存池。118.其中,该至少一个第二主机提供第二内存池,换句话来讲,第二内存池可以是一个或多个第二主机的内存形成的逻辑上的内存池。可选地,第二内存池中的内存是随着各个主机上的内存的使用情况动态变化的。因此,在第一主机上运行的应用程序较少时,第一主机上的剩余内存也可以属于该第二内存池。119.应理解,第一内存池由网络设备进行管理,第一内存池包括第二内存池,意味着本技术中第二内存池也由网络设备进行管理。120.应理解,在本技术中,每个主机(包括第一主机和第二主机)上的内存都可以包括多个存储单元,意味着由一个或多个第二主机提供的逻辑上的第二内存池也可以包括多个存储单元。可选地,每个主机上的多个存储单元可以全由动态随机存取存储器(dynamicrandomaccessmemory,dram)组成,也可以全由储存级内存(storageclassmemory,scm)(例如,非易失性内存(non-volatilememory,nvm)、相变化内存(phase-changememory,pcm)、因特尔持久化内存(apachepass,aep)等)组成,还可以由高带宽内存(highbandwidthmemory,hbm)、dram、scm等混合组成,本技术对每个主机中存储单元的类型以及组成方式不做限定,意味着本技术对于由一个或多个第二主机构成的逻辑上的第二内存池所包括的多个存储单元的类型以及组成方式也不做限定。121.应理解,在这种可选方式中,网络设备连接的各个主机需要实时或间隔向网络设备注册内存,即将自身可用内存空间信息提供给网络设备。网络设备收集所有信息,并进行维护、管理和分配。当第一主机(可以是网络设备连接的任意一个主机)需要从内存池获取内存(即达到预设条件)时,第一主机可向网络设备申请,网络设备根据掌握的内存池信息给第一主机分配内存地址,然后第一主机直接去访问分配到的内存。122.在这种情况下,内存的访问路径为:第二主机内存-(第二主机网卡)-网络设备-(第一主机网卡)-第一主机内存-第一主机cpu。123.在本技术实施例中,第一内存池可以包括第二内存池,第二内存池是一个或多个第二主机的内存形成的逻辑上的内存池,使得第一主机在内存满足预设条件时,可以根据内存访问地址访问第二主机的内存,从而能够扩展第一主机的内存,提高第一主机中应用程序的运行性能;并且,能够提高第二主机的内存利用率;此外,由网络设备做第二主机的第二内存池的管理时,能够降低第二内存池的管理难度和成本。124.在第二种可选方式中,网络设备可以包括第三内存池,这种情况下,第一内存池可以包括第三内存池。可选地,第一内存池可以仅包括第三内存池。125.应理解,现有与主机连接且能够交换和转发主机的业务的网络设备中通常不包括内存池,也就意味着在该实现方式中,还需要预先在网络设备中部署内存池。126.在这种情况下,内存的访问路径为:网络设备内存-(第一主机网卡)-第一主机内存‑ꢀ第一主机cpu。127.应理解,网络设备所提供的第三内存池可以包括多个存储单元。可选地,第三内存池中的多个存储单元可以全部由dram组成,也可以全由scm(例如,nvm、pcm、aep等)组成,还可以由hbm、dram、scm等混合组成,本技术对第三内存池中存储单元的类型以及组成方式不做限定。还应理解,在上述混合组成的情况下,网络设备还需要对第三内存池做层次化管理。128.可选地,第三内存池中的多个存储单元可以通过多种方式部署(即接入)在网络设备中。例如,可以通过网络设备中的芯片(例如,特定应用集成电路(application-specificintegratedcircuit,asic)芯片)直接提供的内存接口接入多个存储单元,并由该芯片对多个存储单元进行内存管理;也可以在网络设备中引入其他新的芯片(含多个cpu核)提供交换芯片功能,并且该芯片可以支持内存管理和接口,该接口用于接入多个存储单元;还可以通过网络设备内置现场可编程逻辑门阵列(field-programmablegatearray,fpga),其中,fpga做内存管理,并且提供内存接口,该接口用于接入多个存储单元;还可以通过网络设备外挂fpga,fpga做内存管理,并且提供内存接口,该接口用于接入多个存储单元,总之,本技术不限定多个存储单元的接入方式。还应理解,内存管理可以通过上述方式实现,也可以通过其他新增的内存管理模块或处理模块来实现,本技术对此不做限定。129.在本技术实施例中,第一内存池可以包括第三内存池,第三内存池为网络设备的内存池,使得第一主机在内存满足预设条件时,可以根据内存访问地址访问网络设备的第三内存池,从而能够扩展第一主机的内存,提高第一主机中应用程序的运行性能;且相较于访问第二主机的内存(即访问第二内存池的内存)而言能够缩短内存的访问路径,从而能够降低内存的访问时延;此外,由网络设备做第三内存池的管理时,能够降低第三内存池的管理难度和成本。130.在第三种可选方式中,第一内存池可以包括上述第二内存池和上述第三内存池(即第一内存池是包括第二内存池和第三内存池的逻辑内存池),并由网络设备管理第一内存池。131.应理解,在该可选方式中,第一主机在访问第一内存池中的内存时,可以先访问第二内存池中的内存,即可以先访问第二主机的内存,也可以先访问网络设备中的第三内存池中的内存,本技术不限定内存的访问顺序。132.另外,为便于描述,在下文实施例中(图5至图7部分),均以第一内存池仅包括网络设备中的第三内存池为例进行描述。133.可选地,本技术中第一内存池可以作为多个主机的共享内存池,以使得任意一个与网络设备相连接的主机的内存在达到预设条件时,都可以请求访问第一内存池中的内存。134.可选地,当第一主机不再需要使用存储单元时,方法300还可以包括:第一主机向网络设备发送通知消息。该通知消息包括该存储单元的内存访问地址,以使网络设备释放该存储单元。相应地,网络设备接收第一主机发送的通知消息;网络设备根据通知消息释放该内存访问地址对应的存储单元。应理解,释放存储单元包括将存储单元从使用状态修改为空闲状态。135.在本技术实施例中,在第一主机不再需要使用网络设备中的存储单元时,可以通过第一主机向网络设备发送通知消息,以使网络设备根据通知消息释放对应的存储单元,以供其他主机使用。136.应理解,第一主机与网络设备之间可以采用高速的通信方式。137.示例性地,第一主机与网络设备之间可以通过远程直接内存访问(remotedirectmemoryaccess,rdma)协议等通信。具体可以通过简化rdma协议或标准rdma协议通信。其中,简化rdma协议包括对现有rdma协议在功能上进行删减或优化之后所得到的一种通信协议,本实施例对此不做限定。应理解,由于标准的rdma协议过于复杂,因而在下文实施例中,优选的通信方式为简化rdma协议,可参见图6。应理解,第一主机与网络设备之间通过rdma协议通信时,需要通过第一主机上的网卡和网络设备上的通信模块来实现。138.示例性地,第一主机与网络设备还可以通过高速外围组件互联(peripheralcomponentinterconnectexpress,pcie)总线或计算快速链路(computeexpresslink,cxl)等总线方式通信,可参见图7。在这种情况下,第一内存池的内存可以直接通过同步内存语义或直接内存访问(directmemoryaccess,dma)的方式被访问,加快了远程访问速度。应理解,第一主机和网络设备之间的通信需要由第一主机上的总线接口和网络设备上的通信模块实现。还应理解,在这种情况下,网络设备上需要增加pcie/cxl等引擎和dma引擎。139.应理解,本技术对方法300的应用场景不做限定。可选地,作为一个示例,方法300可以应用于图5所示的dcn架构中。140.图5是本技术实施例提供的一种dcn架构示例图。如图5所示,该架构主要是在图1所示传统dcn架构的基础上,在tor交换机(即网络设备)中接入了内存池(即第三内存池,且在该示例中,以第一内存池仅包括第三内存池为例进行描述),并且tor交换机中也部署了相应的功能模块(内存管理模块)以管理内存池中的内存。除此之外,还部署了通信模块(未示出)以便实现tor交换机与服务器(即第一主机)之间的端到端数据交互,并在tor交换机处实现通信协议的终结(即对接收的报文执行该通信协议相关的处理),从而使得服务器可以访问tor交换机上的内存。141.进一步地,下面结合图6和图7对本技术实施例所提供的dcn架构以及基于该架构的应用处理流程进行示例性介绍。在该示例中,tor交换机的内存池以dram池为例,存储以ssd为例。应理解,图6和图7仅为一种示例,不构成对本技术的限定。142.图6是本技术实施例提供的一种基于tor的内存池化架构示例图。如图6所示,tor内包括dram池,并且tor还可以提供内存管理功能。应理解,关于dram的接入方式和内存管理功能的实现模块可参见上文描述。143.在该示例中,需要在tor上实现标准/简化rdma协议栈。使得当服务器侧内存不足时,服务器可以通过高速网络访问tor上的内存。在实际操作中,如图6所示,数据传输流程可分为两种:一种是:当服务器要访问对应tor上的内存时,可以直接通过简化rdma的方式实现,这种情况下的通信流程为:tor内存-服务器网卡-服务器本地内存-服务器本地cpu。其中,简化rdma为对现有rdma在功能上进行删减或优化之后所得到的一种通信协议,本实施例对此不做限定。另一种是:tor与tor之间可通过标准rdma通信。144.作为一种实现方式,在图6所示架构中,服务器可以不包括预取模块。145.基于服务器不包括预取模块的架构,应用处理流程如下:146.1)对于每一个应用,服务器内的操作系统会分配虚拟地址,虚拟地址包含页号和地址偏移信息。147.2)cpu内的mmu根据页表内的地址映射信息,将虚拟地址转换成物理地址,从而实现应用处理时对物理内存的访问。148.3)在步骤2)中,系统会优先使用本地内存(即服务器内的内存),当本地内存不足时,系统会尝试访问对应tor上的内存。作为一个示例,具体流程如下:149.a)首先,在系统配置时,服务器内操作系统的内核模块和tor上的内存管理模块会建立联系,使服务器能感知tor侧内存的存在。150.b)当服务器本地内存满足预设条件(例如,剩余内存不足)时,服务器将向tor请求使用tor的内存,tor上的内存管理模块在接收到请求后将分配一部分内存空间给该服务器,并向服务器发送所分配内存空间的内存访问地址。151.c)服务器获得内存访问地址后,可以通过rdma等方式(例如,图6所示的简化rdma)访问tor上的内存。152.在此步骤中,服务器和对应tor的通信由服务器上的网卡和tor上的通信模块实现。153.4)当本地内存和tor侧内存均不足的情况下,系统可以通过标准rdma等方式访问另外机架(rack)内的tor上的内存,也可以通过交换的方式,从本地服务器内的ssd处获得地址空间,不做限定。154.应理解,通常在dcn架构中,每个服务器内所运行的应用不同,使得dcn架构内不同服务器对应的cpu和内存的需求不是固定的,且该比例波动范围很大,难以与固定的资源配比相匹配。那么对于图1所示的传统dcn架构而言,由于服务器无法突破服务器的界限去访问其他服务器的内存。使得当有些服务器内cpu被用完(例如有2个cpu内核,该2个cpu内核均被使用)时,剩余的内存资源将被浪费;类似地,当有些内存资源被用完时,剩余的cpu(例如有4个cpu内核,其中3个cpu内核未被使用)将被浪费,这就会导致整个dcn集群内的cpu和内存整体利用率很低,从而造成资源浪费。155.而对于本技术所提供的dcn架构而言,由于在tor中提供了内存池,在一方面,服务器的内存能够实现动态扩展,使得服务器在本地内存不足情况下,可以使用tor上的内存,从而使得应用程序能够保持较高性能,并且可以提高集群资源(例如cpu资源)的利用率。这里的集群是指由服务器和tor组成的系统。另一方面,可以通过集群内存的统计复用,减少服务器内的内存的配置需求,使得在集群内存总量相同的情况(减少服务器侧配置内存,将减少的内存部署在tor上,使得集群的内存总量不变),提高内存利用率以及应用性能;在应用性能一样的情况下,集群内存总量降低(对tor上内存进行统计复用),从而节约成本。例如,在图1架构中给每个服务器配置100g内存,在本技术架构中可以给每个服务器配置60g内存,再给每个tor内配置80g内存(假设一个tor连接有2个服务器),使得本技术架构集群内存总量与传统架构集群内存总量相同。由于本技术实架构中,tor内配置的内存可以作为所有服务器的共享内存,使得有些服务器中的内存以及其所对应的tor的内存总和不足时,可以使用其他tor上的内存,从而使得在集群内存总量不变的情况下,能够提高内存利用率以及应用性能。再例如,在图1架构中给每个服务器配置100g内存,其中有些服务器中的应用运行需要占用100g,有些服务器中的应用运行需要占用60g,有些需要80g,总之是不固定的。那么在本技术架构中可以给每个服务器配置60g内存,再按照图1架构中每个服务器上的应用运行需占用的内存,给每个tor去配置内存(0-80g,同样假设一个tor连接有2个服务器),从而使得在应用性能一样的情况下,集群内存总量降低,从而节约成本。156.作为另一种实现方式,可以在服务器中引入预取模块,以降低实际操作中通过网络访问tor的内存时所产生的时延。应理解,这种情况下,服务器中除了增加预取模块外,还可以增加内存访问地址监测模块(图中未示出),本实施例对此不做限定。应理解,该预取模块和内存访问地址监测模块可以单独存在,也可以存在于服务器内操作系统的内核中,本实施例对此不做限定。157.基于服务器包括预取模块的架构,应用处理流程如下:158.在应用处理过程中,内存访问地址监测模块会实时分析应用的内存访问情况,通过追踪应用的内存访问情况,预测未来目标时间段内应用运行所需要的内存空间。得到这个信息后如果系统判定服务器本地剩余内存即将无法满足未来的需求,预取模块可以触发服务器和tor之间的预先内存访问,提前获得未来需要的地址空间,从而避免系统在未来产生缺页。159.应理解,提前获得未来需要的地址空间可以是提前获取tor发送的内存访问地址,并且提前根据内存访问地址将本地内存中已处理的数据传输至tor,以将本地内存预留出来,供应用运行使用。160.应理解,在前一种实现方式中(服务器不包括预取模块)的应用处理过程中,内存不够了(即产生了缺页)才会去tor交换机获得需要的地址空间,此时应用处理停止,等待获得内存空间后再继续处理该应用。而在后一种实现方式中,通过预取的方式,提前获得未来需要的地址空间,并且,提前获得未来需要的地址空间和应用处理可以是同时发生的,从而能够大幅降低内存访问时延以及缺页的发生率,并且还能够提高应用性能。161.在又一种实现方式中,服务器和tor也可以不通过图6所示简化rdma的方式通信,而是通过图7所示的pcie/cxl等总线的方式互联后通信。应理解,在采用标准总线互联后通信时,服务器和tor之间的通信需要由服务器上的总线接口和tor上的通信模块实现。这种情况下的具体通信流程为:tor内存-服务器本地内存-服务器本地cpu。162.在本实现方式中,通过pcie/cxl实现服务器和tor的通信,tor上的内存可以直接通过同步内存语义或dma的方式被访问,加快了远程访问速度。应理解,在这种情况下,tor还需要增加pcie/cxl等引擎和dma引擎。163.为了实现本技术上述各实施例中的方法,本技术还提供了通信装置800和通信装置900。164.图8是本技术实施例提供的通信装置800的示例图。该通信装置800应用于上述第一主机。如图8所示,该装置800包括接收模块810和处理模块820。165.其中,接收模块810用于接收网络设备发送的内存访问地址。其中,内存访问地址指向第一内存池中的存储单元,网络设备与第一主机连接,网络设备用于对第一主机的业务进行交换和转发,网络设备还用于管理第一内存池。166.处理模块820用于在第一主机的内存满足预设条件时,根据内存访问地址访问存储单元。167.可选地,网络设备还可以与至少一个第二主机连接,网络设备用于交换和转发该至少一个第二主机的业务,该至少一个第二主机提供第二内存池,该第一内存池包括所该第二内存池。168.可选地,网络设备可以包括第三内存池,第一内存池可以包括第三内存池。169.可选地,通信装置800还可以包括:发送模块830。发送模块830可以用于在第一主机的内存满足预设条件时,向网络设备发送请求消息。其中,请求消息用于请求第一内存池中的内存。170.可选地,预设条件可以为以下任意一种:第一主机的内存使用率大于第一阈值;第一主机的内存剩余空间小于第二阈值;第一主机的内存剩余空间小于第一主机在未来目标时间段处理业务所需的内存空间;或者,第一主机的内存使用策略为优先使用第一内存池。171.可选地,第一主机可以包括网卡,第一主机与网络设备可以通过远程直接内存访问rdma协议通信。172.可选地,第一主机可以包括总线接口,第一主机与网络设备可以通过高速外围组件互联pcie总线或计算快速链路cxl通信。173.可选地,当第一主机不再需要使用该存储单元时,发送模块830还可以用于,向网络设备发送通知消息,通知消息包括内存访问地址,以使网络设备释放该存储单元。174.图9是本技术实施例提供的通信装置900的示例图。该通信装置900应用于上述网络设备。如图9所示,该通信装置900包括接收模块910和发送模块920。175.其中,接收模块910,用于接收第一主机发送的请求消息。其中,请求消息用于请求第一内存池中的内存,网络设备与第一主机连接,网络设备用于对第一主机的业务进行交换和转发,网络设备还用于管理第一内存池。176.发送模块920,用于向第一主机发送内存访问地址,内存访问地址指向第一内存池中的存储单元。177.可选地,网络设备还可以与至少一个第二主机连接,网络设备用于交换和转发该至少一个第二主机的业务,该至少一个第二主机提供第二内存池,该第一内存池包括所该第二内存池。178.可选地,网络设备可以包括第三内存池,第一内存池可以包括第三内存池。179.可选地,第一主机与网络设备可以通过远程直接内存访问rdma协议通信。180.可选地,第一主机与网络设备可以通过高速外围组件互联pcie总线或计算快速链路cxl通信。181.可选地,通信装置900还可以包括:处理模块930。处理模块930可以用于确定第一内存池中的空闲存储单元;发送模块920还可以用于,向第一主机发送所述空闲存储单元对应的内存访问地址,以使第一主机使用空闲存储单元。182.应理解,处理模块930还可以记为内存管理模块,不做限定。183.可选地,处理模块930还可以用于,记录第一内存池中的各存储单元的状态。其中,状态包括空闲或使用。184.可选地,接收模块910还可以用于,接收第一主机发送的通知消息,通知消息包括内存访问地址。处理模块930还可以用于,根据通知消息释放该内存访问地址对应的存储单元。185.图10是本技术实施例提供的通信系统1000的示例图。如图10所示,该通信系统1000包括通信装置800和通信装置900。186.图11是本技术实施例提供的通信装置1100的硬件结构示例性框图。可选地,该通信装置1100具体可以是一种计算机设备。该通信装置1100包括存储器1110、处理器1120、通信接口1130以及总线1140。其中,存储器1110、处理器1120、通信接口1130通过总线1140实现彼此之间的通信连接。187.存储器1110可以是只读存储器(read-onlymemory,rom),静态存储设备,动态存储设备或者随机存取存储器(randomaccessmemory,ram)。存储器1110可以存储程序,当存储器1110中存储的程序被处理器1120执行时,处理器1120用于执行本技术实施例的通信方法的各个步骤。188.处理器1120可以采用通用cpu,微处理器,asic,图形处理器(graphicsprocessingunit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现本技术方法实施例的通信方法。189.处理器1120还可以是一种集成电路芯片,具有信号处理能力。在实现过程中,本技术的通信方法可以通过处理器1120中的硬件的集成逻辑电路或者软件形式的指令完成。190.上述处理器1120还可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1110,处理器1120读取存储器1110中的信息,结合其硬件完成本技术实施例的装置中包括的模块所需执行的功能,或者执行本技术方法实施例的通信方法。191.通信接口1130使用例如但不限于收发器一类的收发装置,来实现装置1100与其他设备或通信网络之间的通信。192.总线1140可包括在装置1100各个部件(例如,存储器1110、处理器1120、通信接口1130)之间传送信息的通路。193.本技术实施例还提供了一种计算设备,包括:至少一个处理器和存储器,所述至少一个处理器与所述存储器耦合,用于读取并执行所述存储器中的指令,以执行本技术方法实施例的通信方法。194.本技术实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行本技术方法实施例的通信方法。195.本技术实施例还提供了一种计算机可读存储介质,包括指令;所述指令用于实现本技术方法实施例的通信方法。196.本技术实施例还提供了一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行本技术方法实施例的通信方法。197.可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行本技术方法实施例的通信方法。198.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。199.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。200.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。201.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。202.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。203.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献