CN108701047B - 具有dma写时复制的高密度虚拟机容器 - Google Patents
具有dma写时复制的高密度虚拟机容器 Download PDFInfo
- Publication number
- CN108701047B CN108701047B CN201680082990.5A CN201680082990A CN108701047B CN 108701047 B CN108701047 B CN 108701047B CN 201680082990 A CN201680082990 A CN 201680082990A CN 108701047 B CN108701047 B CN 108701047B
- Authority
- CN
- China
- Prior art keywords
- memory access
- memory
- virtual machine
- control signal
- direct memory
- 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/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
Abstract
各种实施例总体上涉及使用直接存储器存取映射时复制来分配和供应存储器页面。提供了一种虚拟机管理器,用于从克隆的虚拟机接收直接存储器存取映射控制信号,并且按机会为克隆的虚拟机分配和供应存储器页面。
Description
技术领域
本文描述的实施例总体上涉及虚拟机以及运行一个或多个容器的虚拟机。
背景技术
用于数据中心的系统虚拟化可以包括数据中心的节点或服务器被配置为托管虚拟机(VM)。彼此相关的VM可以提供强大的、隔离的执行环境,以用于执行与提供网络服务相关联的应用。每个VM可以针对可以与其他VM安全地隔离的不同客户端运行操作系统(OS)。此外,除了应用执行环境之外,每个VM可以具有其自己的OS内核。
经常使用“容器”(例如,Linux容器(LXC)或Docker)来促进OS级别以上的虚拟化。容器可以向应用的多个执行环境提供与VM执行环境相比略微减少的隔离。容器可以经由用于进程标识符(PID)、进程间通信(IPC)、存储等的分开的命名空间来维护一些隔离。如可以认识到的,每个容器的应用空间可以彼此隔离。然而,操作系统在容器之间共享。
附图说明
图1示出了示例第一系统。
图2示出了示例直接存储器存取映射时复制的方案。
图3示出了用于发送DMA映射控制信号的第一示例方案。
图4示出了用于发送DMA映射控制信号的第二示例方案。
图5示出了用于发送DMA映射控制信号的第三示例方案。
图6示出了第一示例技术。
图7示出了第二示例技术。
图8示出了装置的示例框图。
图9示出了根据实施例的示例存储介质。
图10示出了根据实施例的设备。
具体实施方式
本公开提供了在主机上同时操作多个容器实例。每个容器实例可以在个体虚拟机中操作。因此,除了应用空间之间的隔离之外,本公开还提供了操作系统在容器之间的隔离。特别地,本公开提供了可以从原始VM克隆或复制虚拟机(VM)或多个VM以提供容器之间的进一步隔离。利用与原始VM相同的存储器分配(例如,扩展存储器页表等)来创建新创建的VM。例如,每个VM的EPT表可以指向同一组存储器页面。然而,新创建的VM的EPT表条目被标记为只读。因此,在操作期间,主机系统可以分配新的存储器页面并且按照需要更新EPT表以保存系统资源。更具体地,本公开提供了与来自每个VM内的活动容器的要求一致的整体系统资源占用。
值得注意的是,容器可以在本地或在VM内实现。通常,与本地容器相比,VM容器提供更好的隔离。然而,典型地可以以比VM容器高的密度来供应本地容器并且具有比VM容器高的性能。存在一些尝试来改进VM容器的密度和性能。例如,可以实现存储器写时复制以增加VM容器密度和供应时间,同时I/O直通可以改进整体VM容器性能。然而,存储器写时复制和I/O直通技术不能组合在一起。
一种用于分配新的存储器页面和更新EPT表的方法被称为存储器写时复制。在写时复制系统中,当VM尝试写入标记为只读的存储器页面时,主机分配新的存储器页面并且更新EPT表条目。特别地,由于EPT表中的只读条目,可能触发CPU写入页面错误,并且提示主机针对新的VM分配新的存储器页面并且更新EPT表。
然而,这种写时复制系统不支持I/O直通,I/O直通允许VM通过输入-输出存储器管理单元(IOMMU)直接与指派的设备一起操作。当启用I/O直通时,还需要捕获来自指派的设备的写入操作,否则整个写时复制系统被破坏。因此,当使用写时复制系统时,不能使用I/O直通(导致性能下降),或者当使用I/O直通时必须禁用写时复制(导致密度和供应时间下降)。
本公开提供了基于预测的DMA映射请求在指派的I/O设备使用直接存储器存取(DMA)缓冲器之前,按机会分配新的存储器页面并且更新EPT/IOMMU表。特别地,主机系统可以将各种启发法应用于来自在主机上操作的各种VM的DMA映射请求。因此,本公开提供了按机会分配存储器页面并且更新EPT/IOMMU表,以相对纯粹的写时复制系统而言提供增加的I/O性能。
图1示出了示例系统100。在一些示例中,如图1所示,系统100包括主机节点101。主机节点101可以是能够托管诸如VM 120之类的至少一个虚拟机(VM)的节点或服务器。通常,系统100可以分成物理层102和虚拟层103;其中物理层包括主机节点101,并且虚拟层包括托管的VM。托管可以包括提供组成的物理资源(未示出),例如在主机节点101处维护或可由主机节点101访问的处理器资源、存储器资源、存储资源或网络资源。此外,在一些示例中,主机节点101可以是具有多个互连的节点/服务器的数据中心中的节点/服务器,该多个互连的节点/服务器可以被布置为提供基础设施即服务(IaaS)、平台即服务(PaaS)或软件即服务(SaaS)服务,以用于这些类型的基于云的服务的一个或多个客户端或消费者。
主机节点101可以具有主机操作系统(OS)内核110。主机OS内核110可以被布置为实现虚拟机管理器(VMM 112)。VMM 112可以被配置为作为KVM或管理程序操作(所谓的类型2模型),以管理针对由主机节点101托管的VM的各种操作和/或配置。或者在另一实施例中,VMM 112可以在主机OS内核110下实现(所谓的类型1模型),其未在该图中示出,但是该整个概念仍然可以适用并且可以适用于本公开。此外,如所描绘的,客体OS内核121可以支持针对单个VM 120的执行环境。对于这些示例,VM 120可以被布置为运行包括容器122和容器124的至少一组容器。容器122可以被布置为执行一个或多个应用(App)123,并且容器124可以被布置为执行一个或多个App 125。注意,容器122和124被描绘为分别运行App 123和123-1(部分由App 123遮蔽)以及App 125和125-1(部分由App 125遮蔽)。
主机节点101还可以供应资源(例如,诸如网络输入/输出设备、存储器、网络端口等之类的网络资源)以支持能够将输入/输出分组路由到个体VM和/或容器的虚拟交换机150。例如,虚拟交换机150可以通过VM 120处的虚拟交换机126路由网络连接,以使得容器122和124能够接收或发送与执行相应的(多个)App 123和125相关联的分组。VM 120还可以包括容器管理器128以促进对容器122或124的管理或控制。
主机节点101可以包括逻辑和/或特征(例如,VMM 112)以接收改变容器122或124中的至少一个的操作特性的请求并且使这些容器变得彼此隔离(例如,用于增加的安全性)。主机节点101(并且特别地VMM 112)可以克隆VM 120以产生托管在主机节点101上的多个VM。例如,如所描绘的,可以克隆VM 120以用于形成VM 120-1、VM 120-2和VM 120-3。VM120-1、120-2和120-3可以是VM 120的单独实例。
在克隆之后,VM 120、120-1、120-2和120-3可以被布置为运行先前在VM 120上操作的容器中的一个容器。例如,如所描绘的,VM 120被布置为运行容器122和App 123,VM120-1被布置为运行容器122-1和App 123-1,VM 120-2被布置为运行容器124和App 125,并且VM 120-3被布置为运行容器124-1和App 125-1。
注意,所描绘的容器和应用的数量以一定量来描绘以便于理解而不是限制。具体地,主机节点101可以托管和克隆任何数量的VM,同时VM可以运行任何数量和组合的容器和应用。此外,VM中的每个VM(例如,VM 120、VM 120-1、VM 120-2、VM 120-3等)可以包括多个指派的设备(例如,参考图3-图5)。
如下面更详细描述的,主机节点101的逻辑和/或特征(例如,VMM 122)可以实现DMA映射时复制(CDMAM)技术、机制和/或操作,以使VM 120-1、120-2和120-3最初与VM 120共享相同的存储器页面,从而减少供应时间并且将资源使用量减少到活跃地运行容器所需的资源使用量。
可以响应于由VM 120-1处的容器122-1执行App 123-1而实现CDMAM机制,导致从CPU或从指派的设备对克隆的存储器页面进行修改或尝试写入克隆的存储器页面。另外,可以响应于VM 120-2处的容器124执行App 125而实现CDMAM机制,导致对克隆的存储器页面进行修改或尝试写入克隆的存储器页面。另外,可以响应于VM 120-3处的容器124-1执行App 125-1而实现CDMAM机制,导致对克隆的存储器页面进行修改或尝试写入克隆的存储器页面。
因此,不是针对每个克隆的VM(例如,VM 120-1、120-2和/或120-3)分配和供应新的存储器页面,而是主机节点(并且特别地VMM 112)可以在操作期间按照需要来分配和供应新的存储器页面。特别地,VMM 112可以基于在每个克隆的VM内发生的DMA映射请求,按机会分配和供应新的存储器页面。另外,VMM 112可以基于CPU写入页面错误按机会分配和供应新的存储器页面。因此,VMM 112可以在由克隆的VM触发DMA存储器存取之前按机会分配和供应新的存储器页面。因此,本公开提供了容器密度可以从粗粒度密度转变为细粒度密度,同时提供直通存储器存取。此外,一些示例可以通过将一些存储器开销移动到非性能关键的路径来提供I/O的增加。
图2示出了示例DMA映射时复制(CDMAM)方案200。在一些示例中,CDMAM方案200可以由主机节点101的逻辑和/或特征(例如,VMM 112)执行,以使克隆的VM使用不同的已分配的存储器来运行其相应的容器和应用。
值得注意的是,CDMAM方案200可以包括在很大程度上节省存储器占用或在运行克隆VM 120-1、120-2和120-3的初始时间分配的存储器。换言之,针对最初分配或供应给VM120的存储器(例如,存储器页面)克隆存储器占用或存储器分配。然后,响应于克隆的VM尝试修改一个或多个克隆的存储器页面,VMM 112可以使这些容器使用与最初分配给VM 120的存储器不同的存储器。
注意,可以实现CMDAM方案200以针对克隆的VM中的任何克隆的VM分配和供应新的存储器页面。然而,为了清楚起见,描述了CDMAM方案200针对VM 120-1分配和供应新的存储器页面。然而,示例不限于该方面。
VMM 112可以包括DMA映射时复制管理器(cDMAmm)130。通常,cDMAmm 130分配和供应要由克隆的VM 120-1使用的新的存储器页面。换言之,cDMAmm 130生成更新后的存储器分配203,其包括原始存储器页面205和新分配的(多个)存储器页面215。cDMAmm 130可以包括分配代理132并且可选地包括DMA缓冲器池134。
分配代理134可以如本文所述地分配和供应新的存储器页面。特别地,分配代理134可以实现CMDAM方案200以生成更新后的存储器分配203。CDMAM方案200可以包括使用多级页表,例如,扩展页表(PT)或IOMMU PT。为了简化对多级页表的使用的描述,使用两级页表作为CDMAM方案200的示例。用于PT 1的两级页表可以包括页目录条目(PDE)表210以及页表条目(PTE)表212和214。最初,VMM 112可以从VM 120复制PT以生成PT 1以供VM 120-1使用。也就是说,VM 120和120-1最初可以共享包括P1、P2和P3的(多个)存储器页面205。这些存储器页面可以利用PT 1和PT 2进行存储器寻址。例如,VM 120可以使用PT 1进行存储器寻址,而VM 120-1可以使用PT 2进行存储器寻址。然而,这些共享的存储器页面205在PT 1和PT 2两者中都被标记为只读。当由在VM 120或VM 120-1处运行的容器执行的(多个)应用尝试写入诸如P2之类的(多个)存储器页面205时,分配代理132可以将存储器页面P2的数据内容复制到存储器页面P2',并且将对应的EPT/IOMMU条目(例如,PT1、PT2等)更新为引用存储器页面P2'。P2'可以是一个或多个不同的已分配的存储器页面215的一部分,供VM 120-1用于运行容器122-1。换言之,分配代理132可以创建包括PDE表220和PTE表222的PT1',用于映射到(多个)存储器页面215的存储器地址。
在一些示例中,分配代理可以基于接收到DMA映射控制信号201来分配新的存储器页面(例如,(多个)存储器页面215等)并且更新PT(例如,PT 1、PT 2等)。DMA映射控制信号201可以包括对DMA映射请求的存储器地址的指示。
响应于DMA映射请求,可以从VM 120-1接收DMA映射控制信号201。通常,VM 120-1可以使用DMA和/或CPU写入来对存储器进行存取(例如,在主机节点101上等)。例如,VM120-1可以通过DMA对由PT 1定址的存储器进行存取(例如,经由IOMMU PT等)。作为另一示例,VM 120-1可以通过CPU写入对由PT 1定址的存储器进行存取(例如,经由扩展PT等)。然而,DMA需要在VM 120-1内映射和/或需要发出CPU写入指令。因此,在操作(例如,由容器122-1执行App 123-1等)期间,VM 120-1的设备(参考图3-图5)可以使存储器经由DMA缓冲器映射,以对存储器进行存取。本公开提供VMM 112接收DMA映射控制信号201,同时VM 120-1映射并且设置DMA缓冲器。这在下面更详细地描述,特别是关于图3-图5。
在一些示例中,分配代理132可以在每次接收到DMA映射控制信号201时分配和供应新的存储器页面。在一些示例中,可以在DMA缓冲器池134中池化多个DMA映射控制信号。随后,分配代理132可以如本文所述推测地和/或按机会分配和供应存储器页面。
图3-5分别示出了示例DMA映射控制信号方案300、400和500。通常,DMA映射控制信号方案可以由VM中的任何VM(例如,VM 120、120-1、120-2和120-3)并且特别地是克隆的VM(VM 120-1、120-2和120-3)来实现,以生成DMA映射控制信号201并且将DMA映射控制信号201发送到VMM 112。仅为了清楚起见而非限制,关于克隆的VM 120-1描绘和描述了方案300、400和500。然而,通常,可以通过系统100的任何逻辑和/或特征来实现方案以提供DMA映射控制信号,以如本文所述按机会分配和供应新的存储器页面。
转到图3,描绘了方案300。方案300可以由VM 120-1和VMM 112实现,以便以客体不可知的方式(即,在没有VM 120-1的干预的情况下自动地)接收DMA映射控制信号201。在一些示例中,系统100可以包括输入-输出存储器管理单元(IOMMU),以便针对VM(例如,VM120-1)提供DMA映射和路由特征。例如,客体OS内核121-1可以包括如该图中描绘的IOMMU驱动器330。容器VM 120-1可以被配置为利用对应的设备驱动器311来访问指派的设备310。VMM 112可以包括cDMAmm 130以及vIOMMU 320。vIOMMU 320可以是在客体OS内核121-1中实现的IOMMU驱动器330的模拟版本。
技术300可以包括过程框3.1至3.6。在框3.1处,设备驱动器311可以向IOMMU驱动器330发送DMA缓冲器映射信号,DMA缓冲器映射信号包括针对指派的设备310映射和/或分配DMA缓冲器的指示。
在框3.2处,IOMMU驱动器330将IOMMU硬件(例如,DMA逻辑和/或特征)配置为允许从指派的设备310对存储器(例如,存储器页面215等)进行直接存取。另外,当VMM 112按照vIOMMU驱动器320模拟IOMMU驱动器330时,vIOMMU驱动器320可以接收对IOMMU条目和/或IOMMU允许的DMA缓冲器映射的指示。
在框3.3处,vIOMMU 320可以向cDMAmm 130发送对DMA缓冲器地址的指示。在框3.4处,cDMAmm 130可以基于DMA缓冲器地址按照需要来分配和供应新的存储器页面。例如,cDMAmm 130可以实现图2中描绘的DMA写时复制方案200,以生成更新后的存储器分配203。
在框3.5处,设备驱动器311可以将DMA缓冲器设置为针对指派的设备310提供DMA特征。在框3.6处,指派的设备310可以实现DMA过程以在没有错误的情况下对存储器页面进行存取。
转到图4,描绘了方案400。方案400可以由VM 120-1和VMM 112实现,以使用部分虚拟化的DMA驱动器从客体OS接收DMA映射控制信号201。在一些示例中,系统100可以包括前端DMA驱动器430,以针对VM(例如,VM 120-1)提供DMA映射和路由特征。例如,客体OS内核121-1可以包括如该图中描绘的前端DMA驱动器430。VM 120-1可以被配置为利用对应的设备驱动器311来访问指派的设备310。VMM 112可以包括cDMAmm 130以及后端DMA驱动器440。后端DMA驱动器440可以可操作地耦合到前端DMA驱动器430,以接收对DMA缓冲器映射的指示。
技术400可以包括过程框4.1至4.6。在框4.1处,设备驱动器311可以向前端DMA驱动器430发送DMA缓冲器映射信号,DMA缓冲器映射信号包括针对指派的设备310映射和/或分配DMA缓冲器的指示。
在框4.2处,前端DMA驱动器430可以向后端DMA驱动器440发送对DMA缓冲器地址的指示。在框4.3处,后端DMA驱动器440可以向cDMAmm 130发送对DMA缓冲器地址的指示。
在框4.4处,cDMAmm 130可以基于DMA缓冲器地址按照需要来分配和供应新的存储器页面。例如,cDMAmm 130可以实现图2中描绘的DMA写时复制方案200,以生成更新后的存储器分配203。
在框4.5处,设备驱动器311可以将DMA缓冲器设置为针对指派的设备310提供DMA特征。在框4.6处,指派的设备310可以实现DMA过程以在没有错误的情况下对存储器页面进行存取。
转到图5,描绘了方案500。方案500可以由VM 120-1和VMM 112实现,以直接从驱动器311接收DMA映射控制信号201。在一些示例中,系统100可以包括DMA驱动器530,以针对VM(例如,VM 120-1)提供DMA映射和路由特征。例如,客体OS内核121-1可以包括如该图中描绘的DMA驱动器530。VM 120-1可以被配置为利用对应的设备驱动器511来访问指派的设备310。VMM 112可以包括cDMAmm 130。设备驱动器511可以包括用于直接向cDMAmm 130发送DMA映射控制信号201的逻辑和/或特征。关于一些示例,设备驱动器511可以被配置为使用VMM 112特定的特征等直接向cDMAmm130发送DMA映射控制信号201。在一些示例中,设备驱动器511可以被配置为以VMM不可知的方式向cDMAmm130发送DMA映射控制信号201。特别地,设备驱动器511可以被配置为在配置DMA缓冲器之前触发对DMA缓冲器的CPU写入,以利用常规的写时复制通信路径来传送DAM映射控制信号201。
技术500可以包括过程框5.1至5.5。在框5.1处,设备驱动器511可以向DMA驱动器530发送DMA缓冲器映射信号,DMA缓冲器映射信号包括针对指派的设备310映射和/或分配DMA缓冲器的指示。
在框5.2处,设备驱动器511可以向cDMAmm 130发送DMA映射控制信号201。特别地,设备驱动器511可以向cDMAmm 130发送对DMA缓冲器地址的指示。在框5.4处,cDMAmm 130可以基于DMA缓冲器地址按照需要来分配和供应新的存储器页面。例如,cDMAmm 130可以实现图2中描绘的DMA写时复制方案200,以生成更新后的存储器分配203。
在框5.4处,设备驱动器511可以将DMA缓冲器设置为针对指派的设备310提供DMA特征。在框5.5处,指派的设备310可以实现DMA过程以在没有错误的情况下对存储器页面进行存取。
图6-图7分别示出了技术600和700。技术600和700可以由图1的系统100实现。特别地,技术600和700可以由VMM 112和克隆的VM(例如,VM 120-1、120-2、120-3等)实现。系统100可以实现技术600,以在接收到DMA映射控制信号时分配和供应新的存储器页面;或者系统100可以实现技术700,以在池中缓存DMA映射控制信号并且周期性地分配和供应新的存储器页面。关于图1的系统100描述了技术600和700。然而,该技术可以由具有与针对系统100描绘和描述的组件或配置不同的组件或配置的系统来实现。
转到图6,描绘了技术600。技术600可以在过程6.1处开始。在6.1“映射DMA缓冲器”处,VM 120-1可以映射DMA缓冲器以针对设备提供DMA。例如,VM 120-1可以映射主机节点101中的存储器的一部分(例如,存储器页面205等),以针对VM 120-1提供DMA特征以对存储器页面进行存取。继续到过程6.2“发送DMA映射控制信号”,VM 120-1可以向VMM 112发送DMA映射控制信号201。特别地,VM 120-1可以实现方案300、400和/或500中的任一方案的部分,以向VMM 112并且具体地向cDMAmm 130发送DMA映射控制信号。
继续到过程6.3“基于DMA映射控制信号来分配和供应存储器页面”,VMM 112可以基于DMA映射控制信号201来分配和供应存储器页面。VMM 112的cDMAmm 130可以分配新的存储器页面(例如,存储器页面215等),并且供应用于VM 120-1的EPT表(例如,EPT 2等),以引用存储器页面215。特别地,分配代理134可以生成更新后的存储器分配203。继续到过程6.4“使用DMA对存储器进行存取”,VM 120-1可以使用DMA对已分配的和已供应的存储器页面(例如,存储器页面215等)进行存取。
转到图7,描绘了技术700。技术700可以在过程7.1处开始。在过程7.1“映射DMA缓冲器”处,VM 120-1可以映射DMA缓冲器以针对设备提供DMA。例如,VM 120-1可以映射主机节点101中的存储器的一部分(例如,存储器页面205等),以针对VM 120-1提供DMA特征以对存储器页面进行存取。继续到过程7.2“发送DMA映射控制信号”,VM 120-1可以向VMM 112发送DMA映射控制信号201。特别地,VM 120-1可以实现方案300、400和/或500中的任一方案的部分,以向VMM 112并且具体地向DMA缓冲器池132发送DMA映射控制信号。
继续到过程7.3“基于在DMA缓冲器池中池化的DMA映射控制信号来按机会分配和供应存储器页面”,VMM 112可以基于在DMA缓冲器池132中池化的(多个)DMA映射控制信号201来分配和供应存储器页面。VMM 112的cDMAmm 130可以分配新的存储器页面(例如,存储器页面215等),并且供应用于VM 120-1的EPT表(例如,EPT 2等),以引用存储器页面215。更具体地,分配代理134可以基于池化的(多个)DMA映射控制信号201来生成更新后的存储器分配203。继续到框7.4“使用DMA对存储器进行存取”,VM 120-1可以使用DMA对已分配的和已供应的存储器页面(例如,存储器页面215等)进行存取。
在一些示例中,cDMAmm 130可以基于例如可以在DMA缓冲器池132中池化的多个DMA映射控制信号201来按机会分配和/或供应存储器页面。例如,cDMAmm 130的分配代理134可以分配和供应在DMA映射控制信号201中指示的存储器,并且可以分配和供应与DMA映射控制信号201中指示的存储器页面相邻的存储器页面。作为另一示例,分配代理134可以基于历史的(例如,先前的等)DMA映射控制信号201来分配和供应存储器页面。例如,分配代理134可以基于针对类似克隆的VM(例如,克隆的VM 120-1等)分配和供应的存储器页面来针对克隆的VM(例如,克隆的VM 120-2)分配和供应存储器页面。作为另一示例,分配代理134可以使用空闲路径来分配和供应存储器页面。例如,分配代理134可以按机会分配和供应当前未针对DMA映射的存储器页面。
图8示出了装置800的示例框图。虽然将装置800描绘为在特定拓扑中具有有限数量的元件,但是可以认识到,装置800可以按照给定实现方式期望的在替代拓扑中包括更多或更少的元件。
根据一些示例,装置800可以由在主机节点/服务器处维护的电路820支持,该主机节点/服务器被布置或供应以托管多个VM。电路820可以被布置为执行一个或多个软件或固件实现的模块或组件822-a。值得注意的是,如本文使用的“a”和“b”和“c”以及类似的指示符旨在作为表示任何正整数的变量。因此,例如,如果实现方式设置a=7的值,则组件822-a的软件或固件的完整集合可以包括组件622-1、622-2、622-3和622-4。所呈现的示例不限于该上下文,并且在全文中使用的不同变量可以表示相同或不同的整数值。此外,这些“组件”中的至少一些可以是存储在计算机可读介质中的软件/固件,并且虽然组件在该图中被示为离散的框,但是这并不将这些组件限制为存储在不同的计算机可读介质组件(例如,分开的存储器等)中。
根据一些示例,电路820可以包括用于实现逻辑和/或特征的处理器或处理器电路,该逻辑和/或特征可以包括被布置为促进对运行容器的集合的VM进行克隆或在主机节点/服务器内或之间迁移VM/容器的一个或多个组件。如上面提及的,电路820可以是主机节点/服务器(例如,主机节点101)处的电路的一部分,其可以包括处理核心或元件。在一些示例中,电路820可以是在主机节点上执行的VM(例如,VM 120,克隆的VM 120-1、120-2、120-3等)的一部分。包括一个或多个处理核心的电路可以是各种商业可用的处理器中的任一种,包括但不限于和/>处理器;/>应用、嵌入式和安全处理器;/>和/> 和/>处理器;IBM和/>Cell处理器;/> Core(2)/>Corei3、Corei5、Corei7、/> 和/>处理器;以及类似的处理器。根据一些示例,电路820还可以包括专用集成电路(ASIC),并且至少一些组件822-a可以实现为ASIC的硬件元件。
根据一些示例,装置800可以是被配置为托管第一VM的节点的一部分,该第一VM被布置为运行包括第一容器和第二容器的至少一组容器,第一容器和第二容器被分开地布置为执行相应的第一应用和第二应用。对于这些示例,装置800可以包括克隆组件822-1。克隆组件822-1可以由电路820执行以克隆第一VM以便产生第二VM,该第二VM被布置为至少临时地运行第一容器和第二容器,同时第一容器和第二容器被布置为在第一VM处运行。对第一VM的克隆可以响应于经由隔离请求805接收到的隔离请求。
在一些示例中,装置800还可以包括DMA映射接收组件822-2。DMA映射接收组件822-2可以由电路820执行以接收DAM映射控制信号810,该DAM映射控制信号810包括对映射用于VM的存储器的指示。例如,DMA映射接收组件822可以接收DMA映射控制信号201。
在一些示例中,装置800还可以包括DMA缓冲器池组件822-3。DMA缓冲器池组件822-3由电路820执行以将(多个)DMA映射控制信号810池化以用于处理。
在一些示例中,装置800可以包括存储器分配组件822-4。存储器分配组件822-4可以由电路820执行以实现DMA映射时复制机制830。例如,存储器分配组件822-4可以响应于DMA映射控制信号810而分配和/或供应用于克隆的VM的新的存储器页面。例如,存储器分配组件822-4可以分配存储器页面215并且供应存储器页面215以供克隆的VM 120-2使用。对于这些示例,DMA映射时复制机制可以类似于上面描述的CODMAM方案200。
图9示出了示例存储介质900。存储介质900可以包括制品。在一些示例中,存储介质900可以包括任何非暂时性计算机可读介质或机器可读介质,例如,光、磁性或半导体存储装置。存储介质900可以存储各种类型的计算机可执行指令902,例如,用于实现技术600和/或700的指令。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可重写存储器等。计算机可执行指令的示例可以包括任何合适类型的代码,例如,源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等。示例不限于此上下文。
图10示出了示例计算平台1000。在一些示例中,如该图描绘的,计算平台1000可以包括处理组件1040、其他平台组件1050或通信接口1060。根据一些示例,计算平台1000可以在节点/服务器中实现。节点/服务器能够通过网络耦合到其他节点/服务器,并且可以是包括被布置为托管VM的多个网络连接的节点/服务器的数据中心的一部分,该VM被布置为运行被分开地布置为执行一个或多个应用的容器。
根据一些示例,处理组件1040可以执行用于装置800和/或存储介质900的处理操作或逻辑。处理组件1040可以包括各种硬件元件、软件元件或两者的组合。硬件元件的示例可以包括设备、逻辑器件、组件、处理器、微处理器、电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、设备驱动程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件实现示例可以根据任何数量的因素而变化,例如,期望的计算速率、功率水平、热容差、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束,如给定示例期望的。
在一些示例中,其他平台组件1050可以包括常见的计算元件,例如,一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)组件(例如,数字显示器)、电源等。存储器单元的示例可以包括但不限于以一个或多个较高速存储器单元形式的各种类型的计算机可读和机器可读存储介质,例如,只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双倍数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、聚合物存储器(例如,铁电聚合物存储器)、双向存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁卡或光卡、设备阵列(例如,独立磁盘冗余阵列(RAID)驱动器)、固态存储器设备(例如,USB存储器)、固态驱动器(SSD)以及适于存储信息的任何其他类型的存储介质。
在一些示例中,通信接口1060可以包括用于支持通信接口的逻辑和/或特征。对于这些示例,通信接口1060可以包括一个或多个通信接口,其根据各种通信协议或标准进行操作,以通过直接或网络通信链路或信道进行通信。直接通信可以经由使用在一个或多个行业标准(包括后代和变型)中描述的通信协议或标准而发生,例如,与PCIe规范相关联的那些标准。网络通信可以经由使用诸如IEEE公布的一个或多个以太网标准中描述的那些通信协议或标准之类的通信协议或标准而发生。例如,一个这样的以太网标准可以包括IEEE802.3。网络通信还可以根据一个或多个OpenFlow规范发生,例如,OpenFlow硬件抽象API规范。
如上面提及的,计算平台1000可以在数据中心的服务器/节点中实现。因此,在计算平台1000的各种实施例中,可以包括或省略本文描述的计算平台1000的功能和/或特定配置,如对于服务器/节点适当地期望的。
可以使用分立电路、专用集成电路(ASIC)、逻辑门和/或单芯片架构的任何组合来实现计算平台1000的组件和特征。此外,在适当情况下,计算平台1000的特征可以使用微控制器、可编程逻辑阵列和/或微处理器或前述的任何组合来实现。注意,硬件、固件和/或软件元件可以在本文中统称为或单独称为“逻辑”或“电路”。
应该认识到,图10的框图中示出的示例性计算平台1000可以表示许多潜在实现方式的一个功能描述性示例。因此,附图中描绘的块功能的划分、省略或包含并不推断出用于实现这些功能的硬件组件、电路、软件和/或元件必须被划分、省略或包括在实施例中。
至少一个示例的一个或多个方面可以由存储在至少一种机器可读介质上的代表性指令来实现,该至少一种机器可读介质表示处理器内的各种逻辑,该代表性指令当由机器、计算设备或系统读取时,使机器、计算设备或系统制造逻辑以执行本文描述的技术。这种称为“IP核心”的表示可以存储在有形的机器可读介质上,并且提供给各种客户或制造设施以加载到实际制作逻辑或处理器的制造机器中。
可以使用硬件元件、软件元件或两者的组合来实现各种示例。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件实现示例可以根据任何数量的因素而变化,例如,期望的计算速率、功率水平、热容差、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束,如给定实现方式期望的。
一些示例可以包括制品或至少一种计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在一些示例中,逻辑可以包括各种软件元件,例如,软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些示例,计算机可读介质可以包括用于存储或维护指令的非暂时性存储介质,该指令当由机器、计算设备或系统执行时使机器、计算设备或系统执行根据所描述的示例的方法和/或操作。指令可以包括任何合适类型的代码,例如,源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。可以根据预定义的计算机语言、方式或语法来实现指令,用于指导机器、计算设备或系统执行特定功能。可以使用任何合适的高级编程语言、低级编程语言、面向对象的编程语言、可视编程语言、编译编程语言和/或解释编程语言来实现指令。
可以使用表达“在一个示例中”或“示例”及其衍生词来描述一些示例。这些术语意味着结合该示例描述的特定特征、结构或特性包括在至少一个示例中。短语“在一个示例中”在说明书中各处的出现不一定都指代同一示例。
可以使用表达“耦合”和“连接”及其衍生词来描述一些示例。这些术语不一定旨在彼此同义。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”也可能意味着两个或更多个元件彼此不直接接触,但仍然彼此协作或交互。
以下示例涉及本文公开的技术的其他示例。
示例1.一种装置,包括:节点处的电路,其用于托管第一虚拟机(VM),该第一虚拟机被布置为执行包括第一容器和第二容器的至少一组容器,第一容器和第二容器被分开地布置为执行相应的第一引用和第二应用;克隆组件,其用于由电路执行以克隆第一VM以便产生第二VM,第二VM被布置为执行至少第二容器,其中,第一容器被布置为在第一VM中执行;接收组件,其用于由电路执行以从第二VM接收直接存储器存取(DMA)映射控制信号,DMA映射控制信号包括将存储器页面映射到DMA缓冲器的指示;以及存储器分配组件,其用于由电路执行以响应于DMA映射控制信号而实现DMA映射时复制(CODMAM)操作,以使得第二VM使用不同的已分配的存储器来执行第二容器。
示例2.示例1的装置,DMA映射控制信号是响应于由第二容器执行的第二应用将存储器页面映射到DMA缓冲器而被接收的。
示例3.示例2的装置,DMA映射控制信号是第一DMA映射控制信号,并且存储器页面是第二存储器页面,该装置包括DMA缓冲器池化组件,其用于由电路执行以将第一DMA映射控制信号与至少第二DMA映射控制信号池化,第二DMA映射控制信号包括将第二存储器页面映射到DMA缓冲器的指示。
示例4.示例3的装置,第二DMA映射控制信号是响应于由第二容器执行的第二应用将第二存储器页面映射到DMA缓冲器而被接收的。
示例5.示例3的装置,包括虚拟机管理器(VMM),其能够管理第一VM和第二VM,VMM包括接收组件、DMA缓冲器池化组件以及存储器分配组件。
示例6.示例3的装置,接收组件是虚拟输入-输出存储器管理单元(IOMMU),虚拟IOMMU用于模拟第二VM的IOMMU。
示例7.示例6的装置,vIOMMU用于从IOMMU接收DMA缓冲器映射条目。
示例8.示例3的装置,接收组件是后端DMA驱动器,后端DMA驱动器用于从第二VM的前端DMA驱动器接收DMA映射控制信号。
示例9.示例8的装置,后端DMA驱动器用于从前端DMA缓冲器接收DMA缓冲器映射条目。
示例10.示例3的装置,CODMAM操作用于使得分配第一存储器页面,将内容从第二存储器页面复制到第一存储器页面,以及供应第二VM以使用第一存储器页面,第一VM被供应以使用第二存储器页面。
示例11.示例10的装置,存储器分配代理用于分配第三存储器页面,将内容从第四存储器页面复制到第三存储器页面,以及供应第二VM以使用第三存储器页面,第一VM被供应以使用第二存储器页面和与第二存储器页面相邻的第四存储器页面。
示例12.示例1的装置,包括耦合到电路的数字显示器,以呈现用户接口视图。
示例13.一种方法,包括:由节点处的电路克隆第一虚拟机(VM),该第一虚拟机被布置为执行包括第一容器和第二容器的至少一组容器,第一容器和第二容器被分开地布置为执行相应的第一应用和第二应用,克隆用于产生第二VM,该第二VM被布置为执行至少第二容器,其中,第一容器被布置为在第一VM中执行;从第二VM接收直接存储器存取(DMA)映射控制信号,DMA映射控制信号包括将存储器页面映射到DMA缓冲器的指示;以及响应于DMA映射控制信号而应用DMA映射时复制(CODMAM)操作,以使得第二VM使用不同的已分配的存储器来执行第二容器。
示例14.示例13的存储器,响应于由第二容器执行的第二应用将存储器页面映射到DMA缓冲器,接收DMA映射控制信号。
示例15.示例14的存储器,DMA映射控制信号是第一DMA映射控制信号,并且存储器页面是第二存储器页面,该方法包括将第一DMA映射控制信号与至少第二DMA映射控制信号池化,第二DMA映射控制信号包括将第二存储器页面映射到DMA缓冲器的指示。
示例16.示例15的方法,响应于由第二容器执行的第二应用将第二存储器页面映射到DMA缓冲器,接收第二DMA映射控制。
示例17.示例15的方法,包括经由虚拟机管理器(VMM)来管理第一VM和第二VM。
示例18.示例15的方法,在虚拟输入-输出存储器管理单元(IOMMU)处接收DMA映射控制信号,虚拟IOMMU用于模拟第二VM的IOMMU。
示例19.示例18的方法,包括在vIOMMU处从IOMMU接收DMA缓冲器映射条目。
示例20.示例15的方法,在后端DMA驱动器处从第二VM的前端DMA驱动器接收DMA映射控制信号。
示例21.示例20的方法,在后端DMA驱动器处从前端DMA缓冲器接收DMA缓冲器映射条目。
示例22.示例15的方法,包括:分配第一存储器页面;将内容从第二存储器页面复制到第一存储器页面;以及供应第二VM以使用第一存储器页面,第一VM被供应以使用第二存储器页面。
示例23.示例22的方法,包括:分配第三存储器页面;将内容从第四存储器页面复制到第三存储器页面;以及供应第二VM以使用第三存储器页面,第一VM被供应以使用第二存储器页面和与第二存储器页面相邻的第四存储器页面。
示例24.示例13的方法,包括在耦合到电路的数字显示器上呈现用户接口视图。
示例25.至少一种机器可读介质,其包括多个指令,该指令响应于由节点处的系统执行而使得系统用于执行根据示例13至24中任一项的方法。
示例26.一种装置,包括用于执行示例13至24中任一项的方法的单元。
示例27.至少一种机器可读介质,其包括多个指令,该指令响应于由节点处的系统执行而使得系统用于:由节点处的电路克隆第一虚拟机(VM),该第一虚拟机被布置为执行包括第一容器和第二容器的至少一组容器,第一容器和第二容器被分开地布置为执行相应的第一应用和第二应用;克隆用于产生第二VM,该第二VM被布置为执行至少第二容器,其中,第一容器被布置为在第一VM中执行;从第二VM接收直接存储器存取(DMA)映射控制信号,DMA映射控制信号包括将存储器页面映射到DMA缓冲器的指示;以及响应于DMA映射控制信号而应用DMA映射时复制(CODMAM)操作,以使得第二VM使用不同的已分配的存储器来执行第二容器。
示例28.示例27的至少一种机器可读介质,该指令还使得系统响应于由第二容器执行的第二应用将存储器页面映射到DMA缓冲器,接收DMA映射控制信号。
示例29.示例28的至少一种机器可读介质,DMA映射控制信号是第一DMA映射控制信号,并且存储器页面是第二存储器页面,该指令还使得系统将第一DMA映射控制信号与至少第二DMA映射控制信号池化,第二DMA映射控制信号包括将第二存储器页面映射到DMA缓冲器的指示。
示例30.示例29的至少一种机器可读介质,该指令还使得系统响应于由第二容器执行的第二应用将第二存储器页面映射到DMA缓冲器,接收第二DMA映射控制。
示例31.示例30的至少一种机器可读介质,该指令还使得系统经由虚拟机管理器(VMM)来管理第一VM和第二VM。
示例32.示例31的至少一种机器可读介质,该指令还使得系统在虚拟输入-输出存储器管理单元(IOMMU)处接收DMA映射控制信号,虚拟IOMMU用于模拟第二VM的IOMMU。
示例33.示例32的至少一种机器可读介质,该指令还使得系统在vIOMMU处从IOMMU接收DMA缓冲器映射条目。
示例34.示例31的至少一种机器可读介质,该指令还使得系统在后端DMA驱动器处从第二VM的前端DMA驱动器接收DMA映射控制信号。
示例35.示例34的至少一种机器可读介质,该指令还使得系统在后端DMA驱动器处从前端DMA缓冲器接收DMA缓冲器映射条目。
示例36.示例27的至少一种机器可读介质,该指令还使得系统用于:分配第一存储器页面;将内容从第二存储器页面复制到第一存储器页面;以及供应第二VM以使用第一存储器页面,第一VM被供应以使用第二存储器页面。
示例37.示例27的至少一种机器可读介质,该指令还使得系统用于:分配第三存储器页面;将内容从第四存储器页面复制到第三存储器页面;以及供应第二VM以使用第三存储器页面,第一VM被供应以使用第二存储器页面和与第二存储器页面相邻的第四存储器页面。
示例38.示例27的至少一种机器可读介质,该指令还使得系统在耦合到电路的数字显示器上呈现用户接口视图。
Claims (24)
1.一种计算装置,包括:
节点处的电路,其被配置为托管第一虚拟机,所述第一虚拟机被布置为运行包括第一容器和第二容器的至少一组容器,所述第一容器和所述第二容器被分开地布置为执行相应的第一应用和第二应用;
接收组件,其用于由所述电路执行以从第二虚拟机接收直接存储器存取映射控制信号,所述第二虚拟机被布置为运行至少所述第二容器,所述直接存储器存取映射控制信号包括将存储器页面映射到直接存储器存取缓冲器的指示;以及
存储器分配组件,其用于由所述电路执行以响应于所述直接存储器存取映射控制信号而实现直接存储器存取映射时复制CODMAM机制,以使得所述第二虚拟机使用不同的已分配的存储器来运行所述第二容器。
2.根据权利要求1所述的装置,包括克隆组件,其用于由所述电路执行以克隆所述第一虚拟机以便产生被布置为运行至少所述第二容器的所述第二虚拟机,其中,所述第一容器被布置为在所述第一虚拟机中运行。
3.根据权利要求2所述的装置,所述直接存储器存取映射控制信号是响应于由所述第二容器执行的所述第二应用将所述存储器页面映射到所述直接存储器存取缓冲器而被接收的。
4.根据权利要求3所述的装置,所述直接存储器存取映射控制信号是第一直接存储器存取映射控制信号,并且所述存储器页面是第二存储器页面,所述装置包括直接存储器存取缓冲器池化组件,其用于由所述电路执行以将所述第一直接存储器存取映射控制信号与至少第二直接存储器存取映射控制信号池化,所述第二直接存储器存取映射控制信号包括将第二存储器页面映射到所述直接存储器存取缓冲器的指示。
5.根据权利要求4所述的装置,所述第二直接存储器存取映射控制信号是响应于由所述第二容器执行的所述第二应用将所述第二存储器页面映射到所述直接存储器存取缓冲器而被接收的。
6.根据权利要求4所述的装置,包括虚拟机管理器,其能够管理所述第一虚拟机和所述第二虚拟机,所述虚拟机管理器包括所述接收组件、所述直接存储器存取缓冲器池化组件以及所述存储器分配组件。
7.根据权利要求4所述的装置,所述接收组件是虚拟输入-输出存储器管理单元,所述虚拟输入-输出存储器管理单元用于模拟所述第二虚拟机的输入-输出存储器管理单元。
8.根据权利要求7所述的装置,所述虚拟输入-输出存储器管理单元用于接收直接存储器存取缓冲器映射条目。
9.根据权利要求4所述的装置,所述接收组件是后端直接存储器存取驱动器,所述后端直接存储器存取驱动器用于从所述第二虚拟机的前端直接存储器存取驱动器接收所述直接存储器存取映射控制信号。
10.根据权利要求9所述的装置,所述后端直接存储器存取驱动器用于从前端直接存储器存取缓冲器接收直接存储器存取缓冲器映射条目。
11.根据权利要求4所述的装置,所述直接存储器存取映射时复制CODMAM机制用于使得分配第一存储器页面,将内容从第二存储器页面复制到所述第一存储器页面,以及供应所述第二虚拟机以使用所述第一存储器页面,所述第一虚拟机被供应以使用所述第二存储器页面。
12.根据权利要求11所述的装置,存储器分配代理用于分配第三存储器页面,将内容从第四存储器页面复制到所述第三存储器页面,以及供应所述第二虚拟机以使用所述第三存储器页面,第一虚拟机被供应以使用所述第二存储器页面和与所述第二存储器页面相邻的所述第四存储器页面。
13.根据权利要求1所述的装置,包括耦合到所述电路的数字显示器,以呈现用户接口视图。
14.一种计算方法,包括:
由节点处的电路克隆第一虚拟机,所述第一虚拟机被布置为运行包括第一容器和第二容器的至少一组容器,所述第一容器和所述第二容器能够分开地执行相应的第一应用和第二应用,所述克隆用于产生第二虚拟机,所述第二虚拟机被布置为运行至少所述第二容器,其中,所述第一容器被布置为在所述第一虚拟机中运行;
从第二虚拟机接收直接存储器存取映射控制信号,所述直接存储器存取映射控制信号包括将存储器页面映射到直接存储器存取缓冲器的指示;以及
响应于所述直接存储器存取映射控制信号而应用直接存储器存取映射时复制CODMAM机制,以使得所述第二虚拟机使用不同的已分配的存储器来运行所述第二容器。
15.根据权利要求14所述的方法,响应于由所述第二容器执行的所述第二应用将所述存储器页面映射到所述直接存储器存取缓冲器,接收所述直接存储器存取映射控制信号。
16.根据权利要求15所述的方法,所述直接存储器存取映射控制信号是第一直接存储器存取映射控制信号,并且所述存储器页面是第二存储器页面,所述方法包括将所述第一直接存储器存取映射控制信号与至少第二直接存储器存取映射控制信号池化,所述第二直接存储器存取映射控制信号包括将第二存储器页面映射到所述直接存储器存取缓冲器的指示。
17.根据权利要求16所述的方法,响应于由所述第二容器执行的所述第二应用将所述第二存储器页面映射到所述直接存储器存取缓冲器,接收所述第二直接存储器存取映射控制信号。
18.根据权利要求16所述的方法,在虚拟输入-输出存储器管理单元处接收所述直接存储器存取映射控制信号,所述虚拟输入-输出存储器管理单元用于模拟所述第二虚拟机的输入-输出存储器管理单元。
19.根据权利要求16所述的方法,在后端直接存储器存取驱动器处从所述第二虚拟机的前端直接存储器存取驱动器接收所述直接存储器存取映射控制信号。
20.根据权利要求16所述的方法,包括:
分配第一存储器页面;
将内容从第二存储器页面复制到所述第一存储器页面;以及
供应所述第二虚拟机以使用所述第一存储器页面,所述第一虚拟机被供应以使用所述第二存储器页面。
21.根据权利要求20所述的方法,包括:
分配第三存储器页面;
将内容从第四存储器页面复制到所述第三存储器页面;以及
供应所述第二虚拟机以使用所述第三存储器页面,第一虚拟机被供应以使用所述第二存储器页面和与所述第二存储器页面相邻的所述第四存储器页面。
22.一种计算设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求14-21中的任一项所述的方法。
23.一种计算装置,包括用于执行根据权利要求14-21中的任一项所述的方法的单元。
24.一种具有指令的计算机可读介质,所述指令在被处理器执行时,使所述处理器执行根据权利要求14-21中的任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/078130 WO2017166205A1 (en) | 2016-03-31 | 2016-03-31 | High density virtual machine container with copy-on-dma-write |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701047A CN108701047A (zh) | 2018-10-23 |
CN108701047B true CN108701047B (zh) | 2023-08-01 |
Family
ID=59963276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680082990.5A Active CN108701047B (zh) | 2016-03-31 | 2016-03-31 | 具有dma写时复制的高密度虚拟机容器 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3436938A1 (zh) |
CN (1) | CN108701047B (zh) |
WO (1) | WO2017166205A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10969988B2 (en) | 2019-06-07 | 2021-04-06 | International Business Machines Corporation | Performing proactive copy-on-write for containers |
US11593168B2 (en) * | 2019-06-26 | 2023-02-28 | Red Hat, Inc. | Zero copy message reception for devices via page tables used to access receiving buffers |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
WO2011120223A1 (en) * | 2010-03-31 | 2011-10-06 | Intel Corporation | Hot-swapping active memory for virtual machines with directed i/o |
CN103597451A (zh) * | 2011-03-31 | 2014-02-19 | 英特尔公司 | 用于高可用性的存储器镜像和冗余生成 |
CN105282135A (zh) * | 2014-06-23 | 2016-01-27 | 英特尔公司 | 采用软件定义联网中的虚拟机和虚拟化容器的本地服务链接 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8423747B2 (en) * | 2008-06-30 | 2013-04-16 | Intel Corporation | Copy equivalent protection using secure page flipping for software components within an execution environment |
US7868897B2 (en) * | 2006-06-30 | 2011-01-11 | Intel Corporation | Apparatus and method for memory address re-mapping of graphics data |
US20080065854A1 (en) * | 2006-09-07 | 2008-03-13 | Sebastina Schoenberg | Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor |
US9672058B2 (en) * | 2014-03-13 | 2017-06-06 | Unisys Corporation | Reduced service partition virtualization system and method |
-
2016
- 2016-03-31 WO PCT/CN2016/078130 patent/WO2017166205A1/en active Application Filing
- 2016-03-31 EP EP16895985.6A patent/EP3436938A1/en not_active Withdrawn
- 2016-03-31 CN CN201680082990.5A patent/CN108701047B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
WO2011120223A1 (en) * | 2010-03-31 | 2011-10-06 | Intel Corporation | Hot-swapping active memory for virtual machines with directed i/o |
CN102346683A (zh) * | 2010-03-31 | 2012-02-08 | 英特尔公司 | 用于具有定向i/o的虚拟机的热交换有源存储器 |
CN103597451A (zh) * | 2011-03-31 | 2014-02-19 | 英特尔公司 | 用于高可用性的存储器镜像和冗余生成 |
CN105282135A (zh) * | 2014-06-23 | 2016-01-27 | 英特尔公司 | 采用软件定义联网中的虚拟机和虚拟化容器的本地服务链接 |
Non-Patent Citations (3)
Title |
---|
一种基于虚拟工作空间的有状态网格服务副本复制方法;宋宝燕等;《电子学报》;20081015(第10期);全文 * |
云计算环境下的虚拟机快速克隆技术;郑婷婷等;《计算机工程与应用》;20110501(第13期);全文 * |
系统虚拟机实现技术综述;黄亭宇等;《农业网络信息》;20071026(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108701047A (zh) | 2018-10-23 |
EP3436938A1 (en) | 2019-02-06 |
WO2017166205A1 (en) | 2017-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11556437B2 (en) | Live migration of virtual devices in a scalable input/output (I/O) virtualization (S-IOV) architecture | |
US11036531B2 (en) | Techniques to migrate a virtual machine using disaggregated computing resources | |
CN107615244B (zh) | 在虚拟机上运行一个或多个容器的技术 | |
US20210232528A1 (en) | Configurable device interface | |
US11556363B2 (en) | Techniques for virtual machine transfer and resource management | |
US10817333B2 (en) | Managing memory in devices that host virtual machines and have shared memory | |
US20170075706A1 (en) | Using emulated input/output devices in virtual machine migration | |
CN108139937B (zh) | 多根i/o虚拟化系统 | |
US20210406050A1 (en) | Techniques to decrease a live migration time for a virtual machine | |
US10754783B2 (en) | Techniques to manage cache resource allocations for a processor cache | |
JP2023502509A (ja) | 異なるタイプのメモリ間のページマイグレーションの低減 | |
CN108701047B (zh) | 具有dma写时复制的高密度虚拟机容器 | |
US11900142B2 (en) | Improving memory access handling for nested virtual machines | |
US11748136B2 (en) | Event notification support for nested virtual machines | |
US20210157626A1 (en) | Prioritizing booting of virtual execution environments | |
US11635970B2 (en) | Integrated network boot operating system installation leveraging hyperconverged storage | |
WO2019000358A1 (en) | LIVE MIGRATING ASSISTANCE TECHNIQUES FOR VIRTUALIZING GRAPHICS PROCESSING UNIT | |
US20220358049A1 (en) | Memory access handling for peripheral component interconnect devices | |
CN117520215A (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 |