CN113342465B - 一种基于释放一致性内存同步的巨型虚拟机 - Google Patents
一种基于释放一致性内存同步的巨型虚拟机 Download PDFInfo
- Publication number
- CN113342465B CN113342465B CN202110683056.1A CN202110683056A CN113342465B CN 113342465 B CN113342465 B CN 113342465B CN 202110683056 A CN202110683056 A CN 202110683056A CN 113342465 B CN113342465 B CN 113342465B
- Authority
- CN
- China
- Prior art keywords
- page
- virtual machine
- write
- machine node
- pages
- 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
Images
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/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
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
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
本发明涉及一种基于释放一致性内存同步的巨型虚拟机,包括若干虚拟机节点,所述虚拟机节点包括物理内存、映射管理器;所述物理内存包括若干页以及本地页缓存,所述本地页缓存用于存储其他虚拟机节点管理的页;所述虚拟机节点映射管理器受控于程序执行以下读操作或者写操作:所述虚拟机节点映射管理器在本地页以及本地页缓存中查找读写地址所对应页,若在本地页以及本地页缓存不命中,则向远端管理读写地址所对应页的虚拟机节点发送请求,获取读写地址所对应页信息并存储在本地页缓存中;所述虚拟机节点映射管理器对查找获取的页进行读操作或者写操作。有益效果是防止分布式共享内存出现伪共享问题、降低跨节点内存访问频率。
Description
【技术领域】
本发明涉及计算机技术领域,具体涉及一种基于释放一致性内存同步的巨型虚拟机。
【背景技术】
巨型虚拟机通过整合多台机器资源,构建了一个分布式的虚拟机监视程序,为上层的客户操作系统提供了统一的硬件抽象。巨型虚拟机基于QEMU-KVM,实现了多台物理机支持的CPU虚拟化、I/O虚拟化和内存虚拟化。巨型虚拟机通过高速RDMA网络实现了虚拟化层的硬件抽象,利用分布式QEMU构建了跨节点虚拟机抽象,借助KVM提供了创建和管理虚拟机的接口,基于RDMA网络建立了分布式共享内存,建立了一个“多虚一”的虚拟机。QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛,QEMU能模拟至接近真实电脑的速度。KVM虚拟机(Kernel-basedVirtual Machine)是一个开源的系统虚拟化模块,KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化。RDMA(Remote Direct Memory Access)技术全称远程直接数据存取,是为了解决网络传输中服务器端数据处理的延迟而产生的,RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。超级调用hypercall用于各域与虚拟机监视器(例如XEN)进行同步通信,通过中断处理系统相关的特权操作,如建立页表、管理内存、访问I/O设备等。
顺序一致性模型(sequential consistency model)是指当程序在各个处理机上并行运行时,所有处理机(或进程)对同一个存储器的访问是同样顺序进行的。巨型虚拟机当前使用的分布式共享内存协议是一个顺序一致性(Sequential Consistency)的协议。顺序一致性要求任何一次读都能读到某个数据的最近一次写的数据。为了保证顺序一致性,该内存同步协议引入了许多性能上的开销。实际应用中,巨型虚拟机的性能表现不尽人意,原因在于密集的跨节点内存访问带来的网络开销。引发密集跨节点内存访问的场景可以分为真共享(true sharing)和伪共享(false sharing)场景。在实现中,真共享无法避免的,它与程序内在的处理结构相关。而伪共享是一种缓存管理机制导致的性能下降。巨型虚拟机当前使用的分布式共享内存协议的痛点在于在伪共享场景下的网络传输开销极大。
已有的工作曾尝试使用RDMA网络传输协议对巨型虚拟机的网络传输进行优化,但是网络传输始终慢于本地的内存访问,从根本上解决伪共享问题、降低跨节点的内存访问频率需要修改内存同步协议的语义。
本发明对巨型虚拟机的分布式共享内存性能方面进行了设计改进。
【发明内容】
本发明的目的是,提供一种防止分布式共享内存出现伪共享问题、降低跨节点内存访问频率的巨型虚拟机。
为实现上述目的,本发明采取的技术方案是一种基于释放一致性内存同步的巨型虚拟机,包括若干虚拟机节点,所述若干虚拟机节点通过网络相互连接通信;所述虚拟机节点包括物理内存,所述若干虚拟机节点的物理内存构成所述巨型虚拟机的分布式共享内存;所述虚拟机节点还包括映射管理器;所述物理内存包括若干页以及本地页缓存,所述虚拟机节点通过映射管理器接口物理内存并进行管理;所述页由所述物理内存接口的映射管理器管理,所述映射管理器管理的页地址范围是连续的;所述本地页缓存用于存储其他虚拟机节点管理的页;所述虚拟机节点对页进行读或写请求时,所述虚拟机节点映射管理器受控于程序执行以下读操作或者写操作:所述虚拟机节点映射管理器在本地页以及本地页缓存中查找读写地址所对应页,若在本地页以及本地页缓存不命中,则向远端管理读写地址所对应页的虚拟机节点发送请求,获取读写地址所对应页信息并存储在本地页缓存中;所述虚拟机节点映射管理器对查找获取的页进行读操作或者写操作。
进一步地,上述的一种基于释放一致性内存同步的巨型虚拟机,所述虚拟机节点映射管理器受控于程序对本地页缓存中的页在同步点前执行以下自无效操作和自写回操作:自无效操作,所述虚拟机节点在同步点前若要读取一个页,则将所述本地页缓存中该读取页副本无效化,保证读取最新的该读取页副本;自写回操作,所述虚拟机节点在同步点前将写操作修改的本地页缓存中的页内容写回到管理该写操作修改的页的虚拟机节点,保证写操作修改的本地页缓存中的页内容对其他虚拟机节点可见。
优选地,上述的一种基于释放一致性内存同步的巨型虚拟机,自无效操作和自写回操作由所述虚拟机节点上的操作系统或者应用程序在上下文切换或者同步点时通过超级调用hypercall调用。
进一步地,上述的一种基于释放一致性内存同步的巨型虚拟机,所述虚拟机节点映射管理器受控于程序对本地页缓存中需要执行自写回操作的页按照以下步骤处理:所述映射管理器对本地页缓存中的页写操作前,保留一个写操作所对应本地页缓存中的页的副本,称为Twin;所述映射管理器自写回操作时,计算完成写操作本地页缓存中的页和Twin的页内容差异,称为Diff;所述映射管理器给远端管理写操作所对应页的虚拟机节点发送Diff内容;所述管理写操作所对应页的虚拟机节点根据接收到的Diff内容更新本地页。
进一步地,上述的一种基于释放一致性内存同步的巨型虚拟机,所述虚拟机节点映射管理器管理的页分为S、P、(S,NW)、(S,SW)和(S,MW)五种状态,所述虚拟机节点映射管理器受控于程序根据所述五种状态页分别进行页管理:所有的页默认是S状态页,本地页缓存中的S状态页因写操作发生修改、在同步点前都执行自写回操作,本地页缓存中的所有S状态页在同步点前都执行自无效操作;只有一个虚拟机节点曾经读操作或写操作的页是P状态页,本地页缓存中的P状态页不执行自无效操作,执行自写回操作;曾经写操作的虚拟节点数量为零的页是(S,NW)状态页,本地页缓存中的(S,NW)状态页不执行自无效操作;曾经写操作的虚拟节点数量为一的页是(S,SW)状态页,本地页缓存中的(S,SW)状态页,写操作的虚拟节点无需执行自无效操作,但其他的虚拟节点需要执行自无效操作;曾经写操作的虚拟节点数量为大于一的页是(S,MW)状态页,本地页缓存中的(S,MW)状态页,写操作的虚拟节点都需要执行自无效操作。
进一步地,上述的一种基于释放一致性内存同步的巨型虚拟机,所述若干虚拟机节点受控于程序在访问分布式共享内存时执行以下步骤:
S1、请求页的虚拟机节点检查该访问内存地址所属页是否在本地页或者本地页缓存中,若是请求页的虚拟机节点直接访问该页面,若否进入S2步骤;
S2、请求页的虚拟机节点根据读或写的访问类型给管理页的虚拟机节点发送读或写请求;
S3、管理页的虚拟机节点收到请求后更新该页的历史读者/写者虚拟机节点目录,并通知该页的读者虚拟机节点或写者虚拟机节点该页状态的变化;
S4、管理页的虚拟机节点发送给请求页的虚拟机节点该页内容和状态;
S5、请求页的虚拟机节点将该页内容和状态缓存到本地页缓存;
所述若干虚拟机节点自无效操作时执行以下步骤:
R1、虚拟机节点遍历本地页缓存中的页,检查页状态;若页状态为P、或(S,NW)、或(S,SW),则该页的唯一写者虚拟机节点无需自无效操作该页;
所述若干虚拟机节点自写回操作时执行以下步骤:
W1、虚拟机节点遍历本地页缓存中的页,若虚拟机节点对该页曾经进行过写操作则进入步骤W2,否则跳过;
W2、虚拟机节点计算该页与该页的Twin的Diff,若Diff为0则跳过,否则将Diff发送给管理该页的虚拟机节点;
W3、管理该页的虚拟机节点收到Diff后更新页的对应内容。
本发明与现有技术相比有如下有益效果:1、在巨型虚拟机的基础上,运行一种基于释放一致性的内存同步协议,ARC(Acquire/Release Consistency)协议,用以减少巨型虚拟机中伪共享场景导致的密集的网络通信;每个虚拟机节点都有一个映射管理器,每个映射管理器都管理有本地页缓存,当访问页发送本地页缓存不命中时,虚拟机节点会给远端的管理该页的虚拟机节点发送请求,获取最新的页内容并缓存在本地页缓存;虚拟机节点将对远端管理页的访问转化为对本地缓存页的访问,从而减少了网络通信,大大提高了分布式共享内存的性能;2、进一步地,在传统的读写操作之外,创新性地提出了自无效和自写回操作来实现同步原语和上下文切换,以保证上层操作系统读写的正确性;3、进一步地,借助Twin-and-Diff的方式更新虚拟机节点管理的页内容,消除了伪共享导致的页颠簸;4、进一步地,为减少自无效和自写回的开销,对页引入了状态区分,对不同状态的页制定了不同的自无效和自写回方案,减少了消息传输数量。
【附图说明】
图1是一种基于释放一致性内存同步的巨型虚拟机架构图。
图2是一种基于释放一致性内存同步的巨型虚拟机节点同步操作和上下文切换超级调用示意图。
图3是一种基于释放一致性内存同步的巨型虚拟机不同页状态分类下经过同步点时的自无效和自写回动作示意图。
【具体实施方式】
下面结合实施例并参照附图对本发明作进一步描述。
在本发明中,服务器是在网络上提供、管理网络资源的一个计算机或设备,终端可指各种类型的装置,包括(但不限于)无线电话、蜂窝式电话、膝上型计算机、多媒体无线装置、无线通信个人计算机(PC)卡、个人数字助理(PDA)、外部或内部调制解调器等。客户端设备,即终端可为任何经由无线信道和/或经由有线信道(例如,光纤或同轴电缆)与服务器通信的数据装置。终端可具有多种名称,例如移动台、移动装置、移动单元,移动电话、远程站、远程终端机、远程单元、用户装置、用户设备、手持式装置等。不同终端可并入一个系统中。终端可为移动的或固定的,且可分散遍及一个通信网络。
实施例1
本实施例实现一种巨型虚拟机中基于释放一致性的内存同步协议,即ARC协议。本实施例在巨型虚拟机的基础上,设计了一种基于释放一致性的内存同步协议,ARC(Acquire/Release Consistency)协议,用以减少巨型虚拟机中伪共享场景导致的密集的网络通信;本实施例ARC协议抽象了巨型虚拟机中多个虚拟机节点的内存资源,要求上层操作系统和应用程序对同步操作和上下文切换操作进行少量修改,从而使分布式共享内存获得更好的性能。
图1是一种基于释放一致性内存同步的巨型虚拟机架构图。如附图1所示,本实施例一种巨型虚拟机中基于释放一致性的内存同步协议中分布式共享内存的映射情况。本实施例在巨型虚拟机的基础上设计了一种基于释放一致性的内存同步协议,ARC协议,用以提高巨型虚拟机中分布式共享内存的性能。本实施例ARC协议中,巨型虚拟机包括若干虚拟机节点,每个虚拟机节点包括CPU、映射管理器和物理内存,由每个虚拟机节点上的CPU通过软件或者硬件实现的映射管理器接口物理内存进行管理;每个物理内存存储有若干页以及本地页缓存,每个页固定对应物理内存接口的映射管理器、并由该映射管理器管理,映射管理器管理的页地址范围是连续的;假设有N个虚拟机节点,则1号虚拟机节点的物理内存存储低地址部分的页、N号虚拟机节点的物理内存存储高地址部分的页。本实施例ARC协议中每个映射管理器将其他映射管理器管理的页存储在一个本地页缓存中。在读写请求时,映射管理器会在本地页缓存中查找读写地址所在页并进行修改,若本地页缓存不命中,则向远端虚拟机节点的映射管理器发送请求,获取页信息并存储在本地页缓存中。
图2是一种基于释放一致性内存同步的巨型虚拟机节点同步操作和上下文切换超级调用示意图。如附图2所示,本实施例一种巨型虚拟机中基于释放一致性的内存同步协议除了读写操作外,还引入了两个重要的操作,分别是自无效(self-invalidation)和自写回(self-downgrade)。这两个操作由上层操作系统和应用在同步操作和上下文切换时通过超级调用hypercall调用。自无效指的是任意一个映射管理器在同步点前,若要读取一个页,就必须将本地页缓存的该页副本无效化,以保证读到的页是最新的副本。自写回表示一个映射管理器需要将写的内容在同步点前写回到本地页缓存该页对应的共享虚拟节点,保证修改内容对其他共享虚拟节点可见。自无效的方法消除了显式的写无效,写页的映射管理器写页后无需根据虚拟机节点中记录的该页的读者或写者一个一个地发送使页副本无效(invalidation)的消息。另一方面,自写回保证了虚拟机节点管理的页的内容总是最新的。
本实施ARC协议在自写回时使用了Twin-and-Diff的方法来减少伪共享。以往ARC协议中共享变量依赖用户代码对其进行同步处理来确保一致性;而当多个用户访问一个页上的不同变量时,由于访问的是本地缓存的页,多个节点能够同时对他们进行读写;此时若各节点写回时传输整个页的内容,就可能导致写覆盖,导致远端管理节点上页的部分内容不是最新的值。针对该问题,本实施ARC协议使用了Twin-and-Diff的方法。在写操作之前,共享虚拟节点会保留一个写操作所在页的副本,称为Twin,在自写回时,共享虚拟节点会计算修改页和Twin的页内容差异,称为Diff,给远端共享虚拟节点发送Diff而不是整个页的内容。在接收页内容差异之后,接受的远端共享虚拟节点会根据Diff更新本地页被修改的内容,这样就避免了写覆盖。
自写回操作和自无效操作为超级调用hypercall,由客户操作系统与其上运行的应用程序在上下文切换和同步操作时被调用。上下文切换前,客户操作系统调用自写回函数,将所有本地的修改写回到远端节点。上下文切换后,客户操作系统调用自无效函数,保证读到的页内容是最新的。
本实施例ARC协议中同步操作超级调用对自无效和自写回接口的调用需要分情况讨论。memory barrier是一种保证共享虚拟内存访问顺序的一种方法,让系统中的各个映射管理器对共享虚拟内存有一致性的视角。考虑barrier同步(屏障同步),屏障barrier是分布式编程中最通用的同步机制之一。屏障Barrier的语义会保证每个共享虚拟节点都写回了其更改的数据,在barrier后,任意位置的读都会返回该位置最新的写的内容。本实施例ARC协议中为实现该效果,在屏障barrier的调用里,首先运行一个本地的node-localbarrier,以保证该共享虚拟节点上的所有线程都到达屏障barrier的位置,随后自写回,并调用一个通过消息传递实现的屏障barrier以保证所有的虚拟机节点都自写回了他们的修改,最后各虚拟机节点都调用自无效的接口。以上工作完成后,各虚拟机节点上的线程收到通知,继续进行工作。
锁是指把共享资源锁住,同步是指其他线程排队等待钥匙的现象,基于锁的同步专门用来解决多线程中共享数据有隐患的问题。CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。本实施例ARC协议基于锁的同步中,实现了锁的原子操作。锁的关键在于CAS(Compare and Swap)的实现,拿锁和放锁动作都是一个CAS操作的while循环。本实施例ARC协议将多个虚拟机节点对锁的竞争卸载到了锁所在页的虚拟机节点;当某个虚拟机节点需要拿锁时,发送消息给锁所在页的虚拟机节点,锁所在页的虚拟机节点本地使用互斥锁和锁变量的地址来管理锁。
以往的ARC协议中的自无效和自写回操作会对缓存中的所有页面进行修改,这意味着虚拟机节点上一个线程的自无效、自写回会导致该虚拟机节点上所有线程的页被自无效、自写回。为了减少自无效和自写回操作,提升分布式共享内存的性能,本实施例ARC协议在虚拟机节点引入了管理页的读者/写者目录,记录管理页的历史读者和写者,根据读者写者数量对页状态进行区分,并针对不同页状态提出了不同的自写回、自无效方案,减少网络传输。
图3是一种基于释放一致性内存同步的巨型虚拟机不同页状态分类下经过同步点时的自无效和自写回动作示意图,图中SI指自无效操作、SD指自写回操作。如附图3所示,本实施例一种巨型虚拟机中基于释放一致性的内存同步协议对页状态进行三种区分,不同的页状态在同步点的动作不同。在不区分页状态时,所有的页默认是Shared(S)状态,此时在自写回时缓存中的所有页修改都会被写回,自无效时缓存中的所有页都会被设置为无效。P/S分类对页状态按照历史访问节点数做了区分,若该页只有一个节点曾读或写,则页状态是Private(P)的,该页的访问者唯一地访问了该页,其缓存中的页内容总是最新的,故无需自无效,只需要自写回。P/S3分类在P/S分类的基础上对历史写者数量进行区分,分为NoWriter(NW),Single Writer(SW),Multi Writer(MW);在页状态为(S,NW)时没有写者,页的内容不发生更改,也就无需自无效;页状态为(S,SW)时唯一写者,写者无需自无效,但其他的读者在调用自无效接口时需要无效化该页缓存;页状态为(S,MW)时各写者节点调用自无效函数都需要自无效化该页。
结合上述ARC协议的特性,各虚拟机节点在访问某地址变量时的流程如下:
1.检查该地址所属页面是否在缓存中,若是,直接访问该页面,若否,进入下面步骤;
2.根据对该变量的访问类型(读或写)给管理该页的虚拟机节点发送请求;
3.管理该页的虚拟机节点收到请求后更新请求页的历史读者/写者目录,并按需通知该页的读者或写者该页状态的变化;
4.管理该页的虚拟机节点发送给请求的虚拟机节点页内容和页状态;
5.请求的虚拟机节点将页内容和页状态缓存到本地。
虚拟机节点自无效时:
1.遍历缓存中的页面,检查页的状态,若页的状态为Private或(S,NW),或(S,SW)且本地节点为该页的唯一写者时,无需无效该页,否则将该页的状态设置为不可访问;
虚拟机节点自写回时:
1.遍历缓存中的页面,若该页面具有可写权限,进入下面步骤,否则跳过;
2.计算该页与该页的Twin的Diff,若Diff为0则跳过,否则将Diff发送给管理该页的虚拟机节点;
3.管理该页的虚拟机节点收到Diff后更新页的对应内容。
实施例2
本实施例实现一种基于释放一致性内存同步的巨型虚拟机。本实施例一种基于释放一致性内存同步的巨型虚拟机运行实施例1所述的一种巨型虚拟机中基于释放一致性的内存同步协议。
本实例给出详细实施方式和具体操作过程,但使用平台不限于下述实例。本实施例一种基于释放一致性内存同步的巨型虚拟机具体部署实例是由三台普通服务器组成的集群,每台服务器配置了支持InfiniBand的网卡。服务器通过光纤连接到中心InfiniBand交换机上。本实施例一种基于释放一致性内存同步的巨型虚拟机不受服务器种类和数目的限制,可以扩展到三台以上的异构服务器组成集群。
每台服务器装有Ubuntu Server 16.04.5LTS 64bit,并且配备两路CPU共计56核和128GB内存。本实施例一种基于释放一致性内存同步的巨型虚拟机具体开发是基于QEMU2.8.1.1和Linux内核4.9.76的源码版本;作为说明,对于其它QEMU和Linux其它版本内核也同样适用。在QEMU-KVM上可以运行一个稍加修改的操作系统,即Ubuntu Server16.04.5LTS 64bit。在客户端操作系统上可以运行IDE设备,SCSI设备,网络设备,GPU设备,FPGA设备等。客户机运行不同的应用程序需要对应用程序的同步操作进行修改,加入超级调用hypercall调用以适应实现实施例2所述的一种巨型虚拟机中基于释放一致性的内存同步协议。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于任一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和补充,这些改进和补充也应视为本发明的保护范围。
Claims (4)
1.一种基于释放一致性内存同步的巨型虚拟机,包括若干虚拟机节点,所述若干虚拟机节点通过网络相互连接通信;所述虚拟机节点包括物理内存,所述若干虚拟机节点的物理内存构成所述巨型虚拟机的分布式共享内存;其特征在于:所述虚拟机节点还包括映射管理器;所述物理内存包括若干页以及本地页缓存,所述虚拟机节点通过映射管理器接口物理内存并进行管理;所述页由所述物理内存接口的映射管理器管理,所述映射管理器管理的页地址范围是连续的;所述本地页缓存用于存储其他虚拟机节点管理的页;所述虚拟机节点对页进行读或写请求时,所述虚拟机节点映射管理器受控于程序执行以下读操作或者写操作:所述虚拟机节点映射管理器在若干页以及本地页缓存中查找读写地址所对应页,若在若干页以及本地页缓存不命中,则向远端管理读写地址所对应页的虚拟机节点发送请求,获取读写地址所对应页信息并存储在本地页缓存中;所述虚拟机节点映射管理器对查找获取的页进行读操作或者写操作;
所述虚拟机节点映射管理器受控于程序对本地页缓存中的页在同步点前执行以下自无效操作和自写回操作:自无效操作,所述虚拟机节点在同步点前若要读取一个页,则将所述本地页缓存中该读取页副本无效化,保证读取最新的该读取页副本;自写回操作,所述虚拟机节点在同步点前将写操作修改的本地页缓存中的页内容写回到管理该写操作修改的页的虚拟机节点,保证写操作修改的本地页缓存中的页内容对其他虚拟机节点可见;
所述虚拟机节点映射管理器管理的页分为S、P、(S,NW)、(S,SW)和(S,MW)五种状态,所述虚拟机节点映射管理器受控于程序根据所述五种状态页分别进行页管理:所有的页默认是S状态页,本地页缓存中的S状态页因写操作发生修改、在同步点前都执行自写回操作,本地页缓存中的所有S状态页在同步点前都执行自无效操作;只有一个虚拟机节点曾经读操作或写操作的页是P状态页,本地页缓存中的P状态页不执行自无效操作,执行自写回操作;曾经写操作的虚拟机节点数量为零的页是(S,NW)状态页,本地页缓存中的(S,NW)状态页不执行自无效操作;曾经写操作的虚拟机节点数量为一的页是(S,SW)状态页,本地页缓存中的(S,SW)状态页,写操作的虚拟机节点无需执行自无效操作,但其他的虚拟机节点需要执行自无效操作;曾经写操作的虚拟机节点数量为大于一的页是(S,MW)状态页,本地页缓存中的(S,MW)状态页,写操作的虚拟机节点都需要执行自无效操作。
2.根据权利要求1所述的一种基于释放一致性内存同步的巨型虚拟机,其特征在于:自无效操作和自写回操作由所述虚拟机节点上的操作系统或者应用程序在上下文切换或者同步点时通过超级调用hypercall调用。
3.根据权利要求1所述的一种基于释放一致性内存同步的巨型虚拟机,其特征在于所述虚拟机节点映射管理器受控于程序对本地页缓存中需要执行自写回操作的页按照以下步骤处理:所述映射管理器对本地页缓存中的页写操作前,保留一个写操作所对应本地页缓存中的页的副本,称为Twin;所述映射管理器自写回操作时,计算完成写操作本地页缓存中的页和Twin的页内容差异,称为Diff;所述映射管理器给远端管理写操作所对应页的虚拟机节点发送Diff内容;所述管理写操作所对应页的虚拟机节点根据接收到的Diff内容更新写操作所对应页。
4.根据权利要求1所述的一种基于释放一致性内存同步的巨型虚拟机,其特征在于所述若干虚拟机节点受控于程序在访问分布式共享内存时执行以下步骤:
S1、请求页的虚拟机节点检查该访问内存地址所属页是否在若干页或者本地页缓存中,若是请求页的虚拟机节点直接访问该页面,若否,进入S2步骤;
S2、请求页的虚拟机节点根据读或写的访问类型给管理页的虚拟机节点发送读或写请求;
S3、管理页的虚拟机节点收到请求后更新该页的历史读者/写者虚拟机节点目录,并通知该页的读者虚拟机节点或写者虚拟机节点该页状态的变化;
S4、管理页的虚拟机节点发送给请求页的虚拟机节点该页内容和状态;
S5、请求页的虚拟机节点将该页内容和状态缓存到本地页缓存;
所述若干虚拟机节点自无效操作时执行以下步骤:
R1、虚拟机节点遍历本地页缓存中的页,检查页状态;若页状态为P/S、或(S,NW)、或(S,SW),该页的唯一写者虚拟机节点无需自无效操作该页;
所述若干虚拟机节点自写回操作时执行以下步骤:
W1、虚拟机节点遍历本地页缓存中的页,若虚拟机节点对该页曾经进行过写操作则进入步骤W2,否则跳过;
W2、虚拟机节点计算该页与该页的Twin的Diff,若Diff为0则跳过,否则将Diff发送给管理该页的虚拟机节点;
W3、管理该页的虚拟机节点收到Diff后更新页的对应内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110683056.1A CN113342465B (zh) | 2021-06-18 | 2021-06-18 | 一种基于释放一致性内存同步的巨型虚拟机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110683056.1A CN113342465B (zh) | 2021-06-18 | 2021-06-18 | 一种基于释放一致性内存同步的巨型虚拟机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342465A CN113342465A (zh) | 2021-09-03 |
CN113342465B true CN113342465B (zh) | 2022-06-21 |
Family
ID=77477737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110683056.1A Active CN113342465B (zh) | 2021-06-18 | 2021-06-18 | 一种基于释放一致性内存同步的巨型虚拟机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342465B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117938956A (zh) * | 2023-12-13 | 2024-04-26 | 天翼云科技有限公司 | 云计算数据缓存策略的优化方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123233A (zh) * | 2013-04-26 | 2014-10-29 | 华茂云天科技(北京)有限公司 | 一种虚拟机大容量内存共享方法 |
CN106844007A (zh) * | 2016-12-29 | 2017-06-13 | 中国科学院计算技术研究所 | 一种基于空间复用的虚拟化方法与系统 |
CN110795206A (zh) * | 2018-08-02 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 用于促进集群级缓存和内存空间的系统和方法 |
CN112783667A (zh) * | 2020-12-10 | 2021-05-11 | 中国科学院深圳先进技术研究院 | 基于虚拟环境的内存共享系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875132B2 (en) * | 2015-11-25 | 2018-01-23 | Red Hat Israel, Ltd. | Input output memory management unit based zero copy virtual machine to virtual machine communication |
CN111273860B (zh) * | 2020-01-15 | 2022-07-08 | 华东师范大学 | 一种基于网络和页粒度管理的分布式内存管理方法 |
-
2021
- 2021-06-18 CN CN202110683056.1A patent/CN113342465B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123233A (zh) * | 2013-04-26 | 2014-10-29 | 华茂云天科技(北京)有限公司 | 一种虚拟机大容量内存共享方法 |
CN106844007A (zh) * | 2016-12-29 | 2017-06-13 | 中国科学院计算技术研究所 | 一种基于空间复用的虚拟化方法与系统 |
CN110795206A (zh) * | 2018-08-02 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 用于促进集群级缓存和内存空间的系统和方法 |
CN112783667A (zh) * | 2020-12-10 | 2021-05-11 | 中国科学院深圳先进技术研究院 | 基于虚拟环境的内存共享系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113342465A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10176057B2 (en) | Multi-lock caches | |
RU2764173C1 (ru) | Регистрация входящих потоков кэша по запросу в кэш более высокого уровня | |
JP3102495B2 (ja) | 仮想記憶管理方法 | |
Protic et al. | Distributed shared memory: Concepts and systems | |
CN108932154B (zh) | 一种分布式虚拟机管理器 | |
US10176007B2 (en) | Guest code emulation by virtual machine function | |
CN100504789C (zh) | 控制虚拟机的方法 | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
JPH06231029A (ja) | データ処理装置およびデータ処理装置においてローカル・コンピュータから遠隔ファイルをアクセスする方法 | |
US9229869B1 (en) | Multi-lock caches | |
GB2514107A (en) | Page table data management | |
US20220269615A1 (en) | Cache-based trace logging using tags in system memory | |
CN114328295A (zh) | 存储管理装置、处理器、相关装置和相关方法 | |
CN113342465B (zh) | 一种基于释放一致性内存同步的巨型虚拟机 | |
CN116414563A (zh) | 内存控制装置、缓存一致性系统和缓存一致性方法 | |
Castro et al. | Password-capabilities and the Walnut kernel | |
US20040078528A1 (en) | Cache coherency in a multi-processor system | |
US20050144397A1 (en) | Method and apparatus for enabling volatile shared data across caches in a coherent memory multiprocessor system to reduce coherency traffic | |
CN114942727A (zh) | 微内核文件系统可扩展页面缓存系统及方法 | |
US11687453B2 (en) | Cache-based trace logging using tags in an upper-level cache | |
US11561896B2 (en) | Cache-based trace logging using tags in an upper-level cache | |
Bernaschi | Efficient message passing on UNIX shared memory multiprocessors | |
US20230401160A1 (en) | Address translation prefetching for input/output devices | |
Hardavellas et al. | E cient Use of Memory-Mapped Network Interfaces for Shared Memory Computing | |
Ding et al. | DArray: A High Performance RDMA-Based Distributed Array |
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 |