CN112783667B - 基于虚拟环境的内存共享系统及方法 - Google Patents
基于虚拟环境的内存共享系统及方法 Download PDFInfo
- Publication number
- CN112783667B CN112783667B CN202011436391.3A CN202011436391A CN112783667B CN 112783667 B CN112783667 B CN 112783667B CN 202011436391 A CN202011436391 A CN 202011436391A CN 112783667 B CN112783667 B CN 112783667B
- Authority
- CN
- China
- Prior art keywords
- memory
- coordinator
- module
- access
- access request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于虚拟环境的内存共享系统及方法,该系统包括:至少两台主机,每台主机内包括至少一个虚拟机、协调器和内存模块,虚拟机、协调器、内存模块相互电性连接,本地主机的协调器与远程主机的协调器通过RDMA模块进行远程通信连接;虚拟机用于接收应用程序发起的访问请求,并发送访问请求至协调器;协调器查询内存模块中是否存在访问请求所请求的内存缓存数据;若存在,则将内存缓存数据返回给应用程序;若不存在,则协调器经RDMA模块向存储有内存数据的远程主机的协调器发出访问请求。通过上述方式,本发明能够同主机虚拟机之间和跨主机虚拟机之间的内存共享。
Description
技术领域
本发明涉及内存共享技术领域,特别是涉及一种基于虚拟环境的内存共享系统及方法。
背景技术
随着DRAM价格的不断下降,构建具有数百GB DRAM容量的商用服务器具有较好的成本效益。然而现在DRAM面临集成度低的问题,虽然大的集群中能达到TB级的主存,但是单节点的内存最大也就几百GB,很难满足大型应用的存储需求。在这一背景驱动下,通过内存语义访问远程数据的共享内存模型使统一的全局内存抽象对分布式计算非常有吸引力。然而在涉及到远程主机之间的通信时,传统的TCP/IP网络由于需要经过内核协议栈的处理,会引起非常大的开销,并不能很好地满足这种共享内存模型在低延迟上的需求。
远程直接内存访问(RDMA模块)技术将协议栈的处理卸载到网卡上,网卡在解析数据包后直接利用DMA技术访问内存数据,避免了数据的多次拷贝。同时通过数据处理的卸载,将CPU从网络数据传输中解脱出来,提高了CPU使用的效率。通过这种零拷贝、绕过内核的特点,实现了数据传输过程中的低延迟、高吞吐量和高性能。
针对同主机虚拟机之间的内存共享,已经有过不少深入的研究。但是从目前云计算的发展趋势来看,应用程序运行在虚拟环境中已经是不可阻挡的趋势,因此单纯地在物理主机上的内存共享已经不具有吸引力。我们需要考虑在虚拟机、容器等虚拟环境下,针对多个物理主机基础上的整个集群环境中的内存共享。
新加坡国立大学与加州大学的研究人员曾经提出了一个使用RDMA模块和数据缓存的分布式内存管理系统GAM。GAM在物理分布式集群上实现了一个内存共享的模型,可以管理分布在多个节点之间的空闲内存,以提供统一的内存模型。同时GAM提供了一组用户友好的API以进行内存操作。为了提高数据读取的性能,GAM实现了在每个主机上对数据的缓存,并对缓存一致性进行了深入的思考,区分了内存页面在共享时的不同状态,并设计了数据在读、写以及数据失效时的一致性处理。同时GAM在RDMA模块的使用上也采用了混合使用通信原语的方法,在数据传输中只固定使用单边原语WRITE。
国内外现有的内存共享的系统,大多数致力于同主机上不同虚拟机之间,或者不同物理主机之间的内存共享。对于整个虚拟集群上的内存共享的研究并不多。
发明内容
本发明提供一种基于虚拟环境的内存共享系统及方法,以解决现有内存共享方法无法高效实现虚拟集群上内存共享的问题。
为解决上述技术问题,本发明提供了一种基于虚拟环境的内存共享系统,其包括:至少两台主机,每台主机内包括至少一个虚拟机、协调器和内存模块,虚拟机、协调器、内存模块相互电性连接,本地主机的协调器与远程主机的协调器通过RDMA模块进行远程通信连接;虚拟机用于接收应用程序发起的访问请求,并发送访问请求至协调器;协调器查询内存模块中是否存在访问请求所请求的内存数据;若存在,则将内存数据返回给应用程序;若不存在,则协调器经RDMA模块向存储有内存数据的远程主机的协调器发出访问请求。
作为本申请的进一步改进,内存模块包括共享内存、缓存和操作系统及应用程序分配的地址空间,缓存用于缓存远程主机的内存数据,协调器接收到访问请求后,查询缓存中是否存在内存数据。
作为本申请的进一步改进,虚拟机内设置有API接口、库函数和虚拟PCI设备,应用程序通过API接口调用库函数以操作虚拟PCI设备访问内存模块。
作为本申请的进一步改进,协调器包括通信模块、监测模块和消息处理模块;通信模块用于实现同一主机上不同虚拟机之间或不同主机之间的通信;监测模块用于监测虚拟机的活动,以及通过分析内存模块的访问日志以区分每张内存页的访问类型,并按照预设策略规则为不同访问类型的内存页配置对应的缓存策略;消息处理模块用于对通信模块接收到的消息进行解析处理,并为不同类型的消息分发预先配置好的消息处理函数。
作为本申请的进一步改进,不同主机之间的通信模块通过RDMA模块的SEND/RECV双边原语、WRITE单边原语或WRITE_WITH_IMM原语实现数据传输过程。
作为本申请的进一步改进,当通信模块之间传输访问请求或内存页失效的控制类消息时,通过SEND/RECV双边原语实现数据传输;当通信模块之间进行传输大量数据时,通过WRITE单边原语实现数据传输;当通信模块之间传输应答类消息时,通过WRITE_WITH_IMM原语实现数据传输。
作为本申请的进一步改进,监测模块分析内存模块的访问日志以区分每张内存页的访问类型,并按照预设策略规则为不同访问类型的内存页配置对应的缓存策略,包括;当内存页被目标远程主机访问的次数达到第一预设条件时,将内存页的访问类型划分为独占访问,并将内存页迁移至目标远程主机的内存模块;当内存页上读取数据的记录达到第二预设条件时,将内存页的访问类型划分为读共享,并将内存页存储至访问内存页频率最高的远程主机上,且将权限设置为只读;当内存页上写入数据的记录达到第三预设条件时,将内存页的访问类型划分为写共享,并禁止同步内存页至其他远程主机。
作为本申请的进一步改进,监测模块在监测到远程主机访问本地主机的内存模块时,生成访问日志,访问日志记录了访问主机、访问地址和访问类型。
作为本申请的进一步改进,虚拟机与协调器之间的通信以进程通信的方式实现。
为解决上述技术问题,本发明还提供了一种基于虚拟环境的内存共享方法,其应用于上述之一的基于虚拟环境的内存共享系统,方法包括:虚拟机接收到应用程序发起的访问请求时,将访问请求发送至协调器;协调器分析访问请求,并判断访问请求的访问地址是本地主机还是远程主机;若是本地主机,则从本地主机中获取访问请求所请求的数据并反馈至应用程序;若是远程主机,则判断内存模块中是否缓存有访问请求所请求的数据;当内存模块中缓存有访问请求所请求的数据时,将缓存的访问请求所请求的数据反馈至应用程序;当内存模块中不存在访问请求所请求的数据时,协调器通过RDMA模块向远程主机的协调器发送访问请求,并将访问得到的数据反馈至应用程序。
本发明的有益效果是:本发明的基于虚拟环境的内存共享系统通过在主机内设置协调器,通过协调器实现主机内不同虚拟机之间的数据通信以实现内存共享,而针对于不同的主机之间,其通过利用RDMA模块实现不同主机的协调器之间的通信,从而实现不同主机之间的通信,最终实现整个虚拟集群的内存共享,且利用RDMA模块有效的降低了不同主机间数据交互的延迟。
附图说明
图1是本发明实施例基于虚拟环境的内存共享系统的结构示意图;
图2是本发明实施例基于虚拟环境的内存共享系统的内存模块的结构示意图;
图3是本发明实施例基于虚拟环境的内存共享系统的虚拟机的结构示意图;
图4是本发明实施例基于虚拟环境的内存共享系统的协调器的结构示意图;
图5是本发明实施例基于虚拟环境的内存共享系统的缓存的内存页被修改时需要做出的操作流程示意图;
图6是本发明实施例基于虚拟环境的内存共享方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
图1是本发明实施例的基于虚拟环境的内存共享系统的结构示意图。如图1所示,该基于虚拟环境的内存共享系统100包括:至少两台主机1,每台主机1内包括至少一个虚拟机2、协调器3和内存模块4,虚拟机2、协调器3、内存模块4相互电性连接,本地主机的协调器3与远程主机的协调器3通过RDMA模块5进行远程通信连接;虚拟机2用于接收应用程序发起的访问请求,并发送访问请求至协调器3;协调器3查询内存模块4中是否存在访问请求所请求的内存数据;若存在,则将内存数据返回给应用程序;若不存在,则协调器3经RDMA模块5向存储有内存数据的远程主机的协调器3发出访问请求。
需要说明的是,该基于虚拟环境的内存共享系统100基于KVM/QEMU开发,其中,虚拟机2在KVM上运行,本实施例中,利用QEMU上个模拟虚拟机来模拟集群上的共享内存。同一个主机1中可以构建多个虚拟机2。需要说明的是,当应用程序向A主机的虚拟机发起访问请求时,即以A主机为本地主机,而当应用程序访问的内存数据在B主机的内存模块时,则B为远程主机。
具体地,虚拟机2接收到应用程序发起的访问请求时,将访问请求发送至协调器3;协调器3分析访问请求,并判断访问请求的访问地址是本地主机还是远程主机;若是本地主机,则从本地主机中获取访问请求所请求的内存数据并反馈至应用程序;若是远程主机,则判断内存模块4中是否缓存有访问请求所请求的内存数据;当内存模块4中缓存有访问请求所请求的内存数据时,将缓存的访问请求所请求的内存数据反馈至应用程序;当内存模块4中不存在访问请求所请求的内存数据时,协调器3通过RDMA模块5向远程主机的协调器3发送访问请求,并将访问得到的内存数据反馈至应用程序。
本实施例的基于虚拟环境的内存共享系统通过在主机内设置协调器3,通过协调器3实现主机1内不同虚拟机2之间的数据通信以实现内存共享,而针对于不同的主机1之间,其通过利用RDMA模块5实现不同主机1的协调器3之间的通信,从而实现不同主机1之间的通信,最终实现整个虚拟集群的内存共享,且利用RDMA模块5有效的降低了不同主机1间数据交互的延迟。
进一步的,如图2所示,内存模块4包括共享内存41、缓存42和操作系统及应用程序分配的地址空间43,缓存42用于缓存远程主机的内存数据,协调器3接收到访问请求后,查询缓存42中是否存在内存数据。
具体地,每个主机1的共享内存41的大小在进行系统初始化时由命令行指出,而在实际分配该共享内存41时,还需分配一固定大小的缓存42,该缓存42用于缓存远程主机的内存数据。需要说明的时,缓存中的内存数据对虚拟机2是不可见的,因此,当虚拟机将访问请求发送给协调器3时,由协调器3查询缓存42中是否存在想要查询的内存数据,若存在,则直接将内存数据返回给应用程序,若不存在,则向远程主机发送该访问请求。
进一步的,如图3所示,虚拟机2内设置有API接口21、库函数22和虚拟PCI设备23,应用程序通过API接口21调用库函数22以操作虚拟PCI设备23访问内存模块4。
具体地,该虚拟PCI设备23是基于QEMU建立,并进行了寄存器数量和消息处理函数扩充。其中,库函数22包括有QEMU自带的库函数以及预先配置的针对于应答消息的库函数。
进一步的,如图4所示,协调器3包括通信模块31、监测模块32和消息处理模块33;通信模块31用于实现同一主机1上不同虚拟机2之间或不同主机之间的通信;监测模块32用于监测虚拟机2的活动,以及通过分析内存模块4的访问日志以区分每张内存页的访问类型,并按照预设策略规则为不同访问类型的内存页配置对应的缓存策略;消息处理模块33用于对通信模块接收到的消息进行解析处理,并为不同类型的消息分发预先配置好的消息处理函数。
具体地,协调器2时一个可装载模块,负责维护主机1的虚拟机信息、与虚拟机2通信、维护主机1上的共享内存、与远程主机通信等任务。
本实施例中,通信模块31负责完成虚拟机2之间的通信,由于同一主机和不同主机在通信上存在很大的不同,本实施例中将通信分为两个层次,一是同一主机1上不同虚拟机2以及虚拟机2与协调器3的通信,二是不同主机1之间的通信。虚拟机2与协调器3之间的通信以进程的方式实现,不涉及网络上的数据传输,因此,传输效率更高。
进一步的,不同主机1之间的通信模块31通过RDMA模块5的SEND/RECV双边原语、WRITE单边原语或WRITE_WITH_IMM原语实现数据传输过程。具体地,当通信模块31之间传输访问请求或内存页失效的控制类消息时,通过SEND/RECV双边原语实现数据传输;当通信模块31之间进行传输大量数据时,通过WRITE单边原语实现数据传输;当通信模块31之间传输应答类消息时,通过WRITE_WITH_IMM原语实现数据传输。其中,内存页失效是指本地主机中缓存存储的远程主机的内存页,在远程主机的内存页的数据发送变化是,该缓存中存储的内存页失效。
具体地,不同主机1之间的连接均是以RDMA为基础,在数据传输过程中,利用软件定义网络的思想,将控制路径和数据路径分离,而这两种路径上使用不同的数据传输原语,并且,为了避免两者的干扰,将控制路径和数据路径的传输分为两个连接,具体为:
1、对于访问请求类的消息以及一些内存页失效等的控制类消息,其携带的数据通常较小,同时为了能够保证控制命令的有效传递,确保另一端可以接收到,且具有一定的可靠性,则可使用RDMA模块5中的SEND/RECV双边原语,在此种方式下,需要CPU的参与,接收方需要先使用RECV准备好接收数据,再由发送方使用SEND发送数据,从而保证接收方收到了消息。
2、对于一般单纯的数据传输,数据量大,对延迟的要求比较高。对此我们使用RDMA模块5的WRITE单边原语,在此种方式下,只要两端建立起了连接,发送方可以直接将数据写到接收方的内存中,而不需要接收方CPU的参与,其通过直接访问远程内存的形式,进一步降低了系统的延迟。
3、数据传输中部分数据是主机1在接收到控制类消息后需要返回应答包以确定收到消息,对于此类消息,通常只需在消息头部携带数据即可,因此,采用WRITE_WITH_IMM原语来传输此类数据,该WRITE_WITH_IMM原语在数据传输时不携带有效载荷,降低数据传输所消耗的资源。
监测模块32负责监听虚拟机2的开启、关闭等活动,以及负责通过分析内存模块4的访问日志,从而区分内存模块4中每张内存页的访问类型,并按照预设策略规则为不同访问类型的内存页配置对应的缓存策略。
需要说明的是,监测模块32在监测到远程主机访问本地主机的内存模块4时,生成访问日志,访问日志记录了访问主机、访问地址和访问类型等内容。
消息处理模块33负责对通信模块31接收到的消息进行解析处理,对于不同类型的消息,根据消息结构确认消息类型,再将消息按类型分发给不同的消息处理函数进行处理。其中,消息的类型可以根据访问对象划分,如访问本地主机的消息还是访问远程主机的消息,还可以为新建立的虚拟机2初始化时,向虚拟集群广播该新建的虚拟机2的消息,或者是各个主机1的共享内存的大小的消息等。消息处理函数预先进行设定。
进一步的,为了能够加快对远程数据的访问速度,降低系统的延迟,本实施例中,监测模块31分析内存模块4的访问日志以区分每张内存页的访问类型,并按照预设策略规则为不同访问类型的内存页配置对应的缓存策略具体为:
1、当内存页被目标远程主机访问的次数达到第一预设条件时,将内存页的访问类型划分为独占访问,并将内存页迁移至目标远程主机的内存模块4。
需要说明的是,该第一预设条件预先设置。
具体地,当本地主机的内存页被某个远程主机的访问次数占总访问次数的90%以上时,将此时的访问类型划分为独占访问,此时,考虑到数据传输的延迟过高,为了降低延迟,将该内存页迁移至远程主机,并由远程主机的协调器3确认在内存模块4中的设实际存放地址,若有其他远程主机偶尔访问该内存页,向该远程主机发出通知以确认该远程主机可以访问到该内存页。
2、当内存页上读取数据的记录达到第二预设条件时,将内存页的访问类型划分为读共享,并将内存页存储至访问内存页频率最高的远程主机上,且将权限设置为只读。
需要说明的是,该第二预设条件预先设置。
具体地,当检测到内存页有80%以上的记录是读取数据时,将内存页的访问类型划分为读共享,此时,需要将内存页缓存到对该内存页访问频率最高的远程主机上,并在缓存映射表上做出记录,在远程主机上,由协调器3将数据放置在预留的缓存空间中以备使用,并将权限设置为只读。例如,图5所示为当缓存的内存页被修改时需要做出的操作流程,其中,node0发出写请求,node1是保留有原内存页的节点,node2是有缓存数据的节点,当node0发出写请求时,node1会向node0回复请求并处理数据访问,同时,node1会向node2等有内存页缓存的节点发出内存页失效的通知,node2等会修改缓存页的标志位,并回复应答包,当后续应用程序需要再次访问时,需要重新将数据缓存到本地主机。
3、当内存页上写入数据的记录达到第三预设条件时,将内存页的访问类型划分为写共享,并禁止同步内存页至其他远程主机。
需要说明的是,该第三预设条件预先设置。
具体地,考虑到写数据的特殊性,当内存页中有50%以上的记录是写入数据时,将内存页的访问类型划分为写共享,由于写操作发生时内存页的数据一直在改变,如果将内存页缓存到多个远程主机上,考虑到数据一致性的维护,多个远程主机之间需要频繁地交换信息,需要大量的同步操作,甚至涉及到很多锁操作,大大降低系统的性能,造成数据传输的延迟大幅度上升,因此,写共享的内存页不做考虑,后续仍然是应用程序发出请求,由协调器3接管操作并向远程主机访问数据。
图6展示了本发明基于虚拟环境的内存共享方法,其应用于上述之一的基于虚拟环境的内存共享系统,所述方法包括:
步骤S1:虚拟机接收到应用程序发起的访问请求时,将访问请求发送至协调器;
步骤S2:协调器分析访问请求,并判断访问请求的访问地址是本地主机还是远程主机;若是本地主机,则执行步骤S3;若是远程主机,则执行步骤S4。
步骤S3:从本地主机中获取访问请求所请求的数据并反馈至应用程序;
步骤S4:判断内存模块中是否缓存有访问请求所请求的数据;当内存模块中缓存有访问请求所请求的数据时,执行步骤S5;当内存模块中不存在访问请求所请求的数据时,执行步骤S6。
步骤S5:将缓存的访问请求所请求的数据反馈至应用程序;
步骤S6:协调器通过RDMA模块向远程主机的协调器发送访问请求,并将访问得到的数据反馈至应用程序。
本实施例通过在主机内设置协调器,通过协调器实现主机内不同虚拟机知己的数据通信以实现内存共享,而针对于不同的主机之间,其通过利用RDMA模块实现不同主机的协调器之间的通信,从而实现不同主机之间的通信,最终实现整个虚拟集群的内存共享,且利用RDMA模块有效的降低了不同主机间数据交互的延迟。
以上对发明的具体实施方式进行了详细说明,但其只作为范例,本发明并不限制于以上描述的具体实施方式。对于本领域的技术人员而言,任何对该发明进行的等同修改或替代也都在本发明的范畴之中,因此,在不脱离本发明的精神和原则范围下所作的均等变换和修改、改进等,都应涵盖在本发明的范围内。
Claims (6)
1.一种基于虚拟环境的内存共享系统,其特征在于,其包括:
至少两台主机,每台所述主机内包括至少一个虚拟机、协调器和内存模块,所述虚拟机、所述协调器、所述内存模块相互电性连接,本地主机的协调器与远程主机的协调器通过RDMA模块进行远程通信连接;
所述虚拟机用于接收应用程序发起的访问请求,并发送所述访问请求至所述协调器;
所述协调器查询所述内存模块中是否存在所述访问请求的内存数据;若存在,则将所述内存数据返回给所述应用程序;若不存在,则所述协调器经所述RDMA模块向存储有所述内存数据的远程主机的协调器发出所述访问请求;
所述协调器包括通信模块、监测模块和消息处理模块;所述通信模块用于实现同一主机上不同所述虚拟机之间或不同主机之间的通信;所述监测模块用于监测所述虚拟机的活动,以及通过分析所述内存模块的访问日志以区分每张内存页的访问类型,并按照预设策略规则为不同访问类型的内存页配置对应的缓存策略;所述消息处理模块用于对所述通信模块接收到的消息进行解析处理,并为不同类型的消息分发预先配置好的消息处理函数;
不同主机之间的所述通信模块通过所述RDMA模块的SEND/RECV双边原语、WRITE单边原语或WRITE_WITH_IMM原语实现数据传输过程;
当所述通信模块之间传输所述访问请求或内存页失效的控制类消息时,通过所述SEND/RECV双边原语实现数据传输;当所述通信模块之间进行传输大量数据时,通过所述WRITE单边原语实现数据传输;当所述通信模块之间传输应答类消息时,通过所述WRITE_WITH_IMM原语实现数据传输;
所述监测模块分析所述内存模块的访问日志以区分每张内存页的访问类型,并按照预设策略规则为不同访问类型的内存页配置对应的缓存策略,包括;
当所述内存页被目标远程主机访问的次数达到第一预设条件时,将所述内存页的访问类型划分为独占访问,并将所述内存页迁移至所述目标远程主机的内存模块;
当所述内存页上读取数据的记录达到第二预设条件时,将所述内存页的访问类型划分为读共享,并将所述内存页存储至访问所述内存页频率最高的远程主机上,且将权限设置为只读;
当所述内存页上写入数据的记录达到第三预设条件时,将所述内存页的访问类型划分为写共享,并禁止同步所述内存页至其他远程主机。
2.根据权利要求1所述的基于虚拟环境的内存共享系统,其特征在于,所述内存模块包括共享内存、缓存和操作系统及应用程序分配的地址空间,所述缓存用于缓存远程主机的内存数据,所述协调器接收到所述访问请求后,查询所述缓存中是否存在所述内存数据。
3.根据权利要求1所述的基于虚拟环境的内存共享系统,其特征在于,所述虚拟机内设置有API接口、库函数和虚拟PCI设备,所述应用程序通过所述API接口调用所述库函数以操作所述虚拟PCI设备访问所述内存模块。
4.根据权利要求1所述的基于虚拟环境的内存共享系统,其特征在于,所述监测模块在监测到所述远程主机访问所述本地主机的内存模块时,生成所述访问日志,所述访问日志记录了访问主机、访问地址和访问类型。
5.根据权利要求1所述的基于虚拟环境的内存共享系统,其特征在于,所述虚拟机与所述协调器之间的通信以进程的方式实现。
6.一种基于虚拟环境的内存共享方法,其特征在于,其应用于权利要求1-5之一所述的基于虚拟环境的内存共享系统,所述方法包括:
虚拟机接收到应用程序发起的访问请求时,将所述访问请求发送至协调器;
所述协调器分析所述访问请求,并判断所述访问请求的访问地址是本地主机还是远程主机;
若是本地主机,则从所述本地主机中获取所述访问请求所请求的数据并反馈至所述应用程序;
若是远程主机,则判断内存模块中是否缓存有所述访问请求所请求的数据;
当内存模块中缓存有所述访问请求所请求的数据时,将所述缓存的所述访问请求所请求的数据反馈至所述应用程序;
当内存模块中不存在所述访问请求所请求的数据时,所述协调器通过RDMA模块向所述远程主机的协调器发送所述访问请求,并将访问得到的数据反馈至所述应用程序。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011436391.3A CN112783667B (zh) | 2020-12-10 | 2020-12-10 | 基于虚拟环境的内存共享系统及方法 |
PCT/CN2020/139462 WO2022120992A1 (zh) | 2020-12-10 | 2020-12-25 | 基于虚拟环境的内存共享系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011436391.3A CN112783667B (zh) | 2020-12-10 | 2020-12-10 | 基于虚拟环境的内存共享系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783667A CN112783667A (zh) | 2021-05-11 |
CN112783667B true CN112783667B (zh) | 2023-08-15 |
Family
ID=75750810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011436391.3A Active CN112783667B (zh) | 2020-12-10 | 2020-12-10 | 基于虚拟环境的内存共享系统及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112783667B (zh) |
WO (1) | WO2022120992A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360293B (zh) * | 2021-06-02 | 2023-09-08 | 奥特酷智能科技(南京)有限公司 | 一种基于远程虚拟共享内存机制的车身电气网络架构 |
CN113342465B (zh) * | 2021-06-18 | 2022-06-21 | 上海交通大学 | 一种基于释放一致性内存同步的巨型虚拟机 |
CN113722110B (zh) * | 2021-11-02 | 2022-04-15 | 阿里云计算有限公司 | 计算机系统、内存访问方法及设备 |
CN115408106A (zh) * | 2021-12-01 | 2022-11-29 | 科东(广州)软件科技有限公司 | 一种虚拟机间共享算法资源的方法及系统 |
CN115098045B (zh) * | 2022-08-23 | 2022-11-25 | 成都止观互娱科技有限公司 | 一种数据存储系统及网络数据读取和写入方法 |
CN116954952B (zh) * | 2023-09-18 | 2024-01-09 | 之江实验室 | 一种机器人的自适应混合通信方法、装置、介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101163133A (zh) * | 2006-10-10 | 2008-04-16 | 中国科学院计算技术研究所 | 一种多机虚拟环境下实现资源共享的通信系统及通信方法 |
US7756943B1 (en) * | 2006-01-26 | 2010-07-13 | Symantec Operating Corporation | Efficient data transfer between computers in a virtual NUMA system using RDMA |
CN105242872A (zh) * | 2014-06-18 | 2016-01-13 | 华中科技大学 | 一种面向虚拟集群的共享存储系统 |
CN107491340A (zh) * | 2017-07-31 | 2017-12-19 | 上海交通大学 | 跨物理机的巨型虚拟机实现方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120137062A1 (en) * | 2010-11-30 | 2012-05-31 | International Business Machines Corporation | Leveraging coalesced memory |
US9483431B2 (en) * | 2013-04-17 | 2016-11-01 | Apeiron Data Systems | Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA) |
US9218193B2 (en) * | 2013-07-12 | 2015-12-22 | International Business Machines Corporation | Distributed virtual machine image management for cloud computing |
WO2015051488A1 (zh) * | 2013-10-08 | 2015-04-16 | 华为技术有限公司 | 一种实现聚合虚拟化中内存共享的方法、设备和系统 |
US9727451B2 (en) * | 2014-03-28 | 2017-08-08 | Fortinet, Inc. | Virtualization in a multi-host environment |
CN107623722A (zh) * | 2017-08-21 | 2018-01-23 | 云宏信息科技股份有限公司 | 一种远端数据缓存方法、电子设备及存储介质 |
-
2020
- 2020-12-10 CN CN202011436391.3A patent/CN112783667B/zh active Active
- 2020-12-25 WO PCT/CN2020/139462 patent/WO2022120992A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756943B1 (en) * | 2006-01-26 | 2010-07-13 | Symantec Operating Corporation | Efficient data transfer between computers in a virtual NUMA system using RDMA |
CN101163133A (zh) * | 2006-10-10 | 2008-04-16 | 中国科学院计算技术研究所 | 一种多机虚拟环境下实现资源共享的通信系统及通信方法 |
CN105242872A (zh) * | 2014-06-18 | 2016-01-13 | 华中科技大学 | 一种面向虚拟集群的共享存储系统 |
CN107491340A (zh) * | 2017-07-31 | 2017-12-19 | 上海交通大学 | 跨物理机的巨型虚拟机实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112783667A (zh) | 2021-05-11 |
WO2022120992A1 (zh) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112783667B (zh) | 基于虚拟环境的内存共享系统及方法 | |
EP3916566B1 (en) | System and method for managing memory resources | |
EP3748510A1 (en) | Network interface for data transport in heterogeneous computing environments | |
US9880954B2 (en) | Method and apparatus for providing data access | |
US20030204683A1 (en) | Method, system, and storage controller for controlling shared memories | |
US20150261698A1 (en) | Memory system, memory module, memory module access method, and computer system | |
CN106598752B (zh) | 远程零拷贝方法 | |
US20240039995A1 (en) | Data access system and method, device, and network adapter | |
JP2017537404A (ja) | メモリアクセス方法、スイッチ、およびマルチプロセッサシステム | |
US7043603B2 (en) | Storage device control unit and method of controlling the same | |
KR20210132348A (ko) | 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법 | |
JP4208506B2 (ja) | 高性能記憶装置アクセス環境 | |
EP4002139A2 (en) | Memory expander, host device using memory expander, and operation method of server system including memory expander | |
CN102843435A (zh) | 一种在集群系统中存储介质的访问、响应方法和系统 | |
US11106513B2 (en) | Message passing in a data processing system | |
CN117312229B (zh) | 一种数据传输装置、数据处理设备、系统、方法及介质 | |
US20090292856A1 (en) | Interserver communication mechanism and computer system | |
US20040193811A1 (en) | Shared receive queues | |
CN116566933A (zh) | 报文处理方法、网关设备及存储系统 | |
US11106359B1 (en) | Interconnection of peripheral devices on different electronic devices | |
CN101441661A (zh) | 一种在多个嵌入式系统之间共享文件资源的系统及方法 | |
WO2022170769A1 (zh) | 通信方法、装置及系统 | |
CN114253733B (zh) | 一种内存管理方法、装置、计算机设备和存储介质 | |
CN116962446B (zh) | 一种NVMe-oF链路动态管理方法及系统 | |
CN117667379A (zh) | 计算机系统、内存扩展设备及用于计算机系统的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |