CN111712796B - 用于实时迁移具有分配的外围设备的虚拟机的系统 - Google Patents

用于实时迁移具有分配的外围设备的虚拟机的系统 Download PDF

Info

Publication number
CN111712796B
CN111712796B CN201880089473.XA CN201880089473A CN111712796B CN 111712796 B CN111712796 B CN 111712796B CN 201880089473 A CN201880089473 A CN 201880089473A CN 111712796 B CN111712796 B CN 111712796B
Authority
CN
China
Prior art keywords
host
page
memory
identified
data
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
Application number
CN201880089473.XA
Other languages
English (en)
Other versions
CN111712796A (zh
Inventor
本杰明·查尔斯·塞雷布林
格里戈里·马卡雷维奇
埃里克·诺瑟普
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN111712796A publication Critical patent/CN111712796A/zh
Application granted granted Critical
Publication of CN111712796B publication Critical patent/CN111712796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

硬件事务或其他技术(例如自定义PCIe处理设备)用于将页面从一个主机的存储器原子层面地移动到另一主机的存储器。主机通过一个或两个非透明桥(NTB)连接,这使每个主机的存储器和设备可供另一主机使用,同时允许每个主机独立地重新引导。

Description

用于实时迁移具有分配的外围设备的虚拟机的系统
技术领域
本公开涉及实时迁移具有分配的外围设备的虚拟机。
背景技术
云供应商使用实时迁移将访客从一个主机透明地移动到另一主机。这样做依赖于在访客从原始主机移动到新主机时,临时限制访客对存储器区域进行访问的能力,以实现脏跟踪等功能。同样,在新主机上阻止访问允许访客在传输访客存储器期间重新启动。如果访客访问的存储器的页面尚未完成移动,则访客将暂停直到所需的页面准备就绪。该暂停依赖于中央处理单元(CPU)的性能,即任何存储器的页面都可能被标记为不存在或不可写,并且在主机为了使页面可用而进行适当的维护时,任何访问都将暂停。然后,主机重新启动暂停的访问,该访问将完全恢复。
但是,分配的外围设备,例如图形处理单元(GPU),加速器或其他外围组件互联高速(PCIe)设备,没有一种干净且通用的方法来暂停和恢复操作。这阻碍了实时迁移分配有此类外围设备的访客的能力。
发明内容
本公开描述了使用硬件事务或其他技术(例如定制PCIe处理设备)来将页面从一个主机的存储器原子层面地移动到另一主机的存储器。主机通过一个或两个非透明桥(NTB)连接,这使每个主机的存储器和设备可供另一主机使用,同时允许每个主机独立地重新引导。
本公开的一个方面提供了一种实时迁移具有一个或多个附接的外围设备的访客虚拟机的方法。所述方法包括通过至少一个非透明桥(NTB)将源主机耦合到目标主机,识别对应访客的,要从源主机复制到目标主机的存储器页面,改变标识页面的映射,以标识目标主机的存储器地址,目标主机的存储器地址在源主机中被别名化显示,并且对一个或多个附接的外围设备不可见,并从源主机把复制该主机标识页面的数据到目标主机。所述方法还包括使与被复制的数据相对应的源主机的页面表条目无效化,以及向一个或多个附接的外围设备提供对目标主机上的复制页面的访问。
根据一些示例,改变标识页面的映射调用第一帮助器线程,并且使源主机的页面表条目无效化,复制标识页面的数据调用第二页面表条目(PTE)编辑线。在一些示例中,可以在改变标识页面的映射之后将第一信号从帮助器线程发送到PTE编辑线程,第一信号指示完成标识页面映射的改变,并且第二信号可以从PTE编辑线程发送到帮助器线程,第二个信号指示标识页面的数据从源主机到目标主机的复制完成。在其他示例中,可以实施预定时间限制,以完成以下各项中的至少一项的完成:标识页面的映射的改变,标识页面的数据的复制,或源主机的页面表条目的无效化。
本公开的另一方面提供了一种用于实时迁移具有一个或多个附接的外围设备的访客虚拟机的系统。该系统包括源主机物理机,该源主机物理机包括一个或多个存储器和一个或多个处理器,所述一个或多个存储器支持要迁移的客户虚拟机,所述主机物理机通过至少一个非透明桥(NTB)耦合到目标主机。源主机的一个或多个处理器被配置为识别要从源主机复制到目标主机的存储器的页面,所述存储器的页面对应于访客,改变识别页面的映射以识别存储器地址。目标主机的存储器地址在源主机中被别名化,并且对一个或多个附接的外围设备不可见,将标识页面的数据从源主机复制到目标主机,使源主机与复制的数据相对应,并向一个或多个附接的外围设备提供对目标主机上复制页面的访问。
在一些示例中,NTB可以被包括在外围组件互连设备中,外围组件互连设备耦合在源主机和一个或多个附接的外围设备之间。此外,一个或多个处理器可以包括一个或多个处理核,并且其中,第一处理核改变标识页面的映射,而第二处理核使源主机的页面表条目无效化,并且复制标识页面的数据。
附图说明
图1A是根据本公开的方面的使用至少一个非透明桥(NTB)将第一主机设备耦合至第二主机设备的示例计算机系统的示意图。
图1B示出了使用图1A的示例计算机系统来迁移访客的示例。
图2是根据本公开的方面的指示由计算系统中的线程进行的操作的表。
图3是根据本公开的方面的示例主机设备的框图。
图4是根据本公开的方面的具有至少一个附接的外围设备的访客的实时迁移的示例方法的流程图。
图5A是根据本公开的方面的使用至少一个NTB将第一主机设备耦合至第二主机设备的另一示例计算机系统的示意图。
图6是根据本公开的方面的用于在单个主机设备的存储器位置内移动固定的页面的示例计算机系统的示意图。
图6是根据本公开的方面的用于在单个主机设备的存储器位置内移动固定的页面的示例计算机系统的示意图。
图7A是根据本公开的方面的使用至少一个中介层将第一主机设备耦合到第二主机设备的示例计算机系统的示意图。
图7B是根据本公开的方面的使用至少一个中介层将第一主机设备耦合到第二主机设备的另一示例计算机系统的示意图。
图8是根据本公开的方面的使用至少一个中介层和NTB将第一主机设备耦合到第二主机设备的另一示例计算机系统的示意图。
图9是根据本公开的方面的用于在单个主机设备的存储器位置内移动固定的页面的另一示例计算机系统的示意图。
图10是根据本公开的方面的具有至少一个附接的外围设备的访客的实时迁移的另一示例方法的流程图。
图11是根据本公开的方面的包括至少一个侧上(OTS)可编程设备的示例计算机系统的示意图。
图12是根据本公开的方面的包括OTS可编程设备的另一示例计算机系统的示意图。
图13是根据本公开的方面的具有至少一个附接的外围设备的访客的实时迁移的另一示例方法的流程图。
图14是根据本公开的方面的具有至少一个附接的外围设备的访客的实时迁移的另一示例方法的流程图。
具体实施方式
在具有一个或多个附接的外围设备的虚拟机上运行的访客将被从主机A的存储器范围移动至主机B的存储器范围,调整了对访客的外围设备访问的路由。对于外围设备访问,移动和路由调整是在原子层面进行的,一次一个页面。在移动之前访问访客的外围设备将使用主机A后备存储器,在移动之后访问访客的外围设备将使用主机B后备存储器。在移动期间访问访客的中转页面的外围设备必须服从移动的原子性,因此访问可能会延迟,或者移动可能会中止并稍后重试。例如,在移动期间可能允许对主机A的存储器的页面的副本进行设备读取,但设备写入将被停止或中止移动。在移动期间,CPU写入访问可能类似地被禁止,例如,通过暂停虚拟机,通过从虚拟机页面映射中移除要访问的页面,或通过使用如下文所述的各种其他技术。原子层面的移动从访客的页面0迭代到页面N,并将每个页面从主机A移动到主机B。但是,其他优化也是可能的。
下文描述用于迁移具有附接的外围设备的访客的数个示例。这些示例包括使用事务性存储器,使用PCIe中介层设备,使用PCIe侧设备,使用IOMMU修改或击晕PCIe设备,将页面在原子层面上从主机移动到主机。虽然以下示例针对输入/输出存储器管理单元(IOMMU)和PCIe路由引用了4KB的粒度,但应当理解为了例如实现更好的批处理,可以使用更大的粒度。类似地,应当理解,例如,在具有较小页面映射粒度的系统中,可以使用较小的批处理。
图1A示出了系统100,其包括第一主机110(主机A)和第二主机120(主机B)。上文已经将系统100描述为可以包括数个电耦合的计算设备的任何配置的系统。例如,计算设备可以被布置在主板上,在互连外围设备的底板上,在扩展卡接口上等。计算设备之间的连接可以是硬线连接,无线连接或任何其他类型的连接。例如,系统100可以包括TCP/IP,802.11,以太网,InfiniBand或任何其他类型的网络。
每个主机110,120分别包括存储器112,122,例如随机存取存储器(RAM),动态RAM(DRAM),非易失性双列直插式存储器模块(NVDIMM)等。在该示例中,访客114将从主机A 110中的存储器块迁移到主机B 120中的存储器块。每个主机110,120可以进一步包括通常存在于主机计算设备中的其他组件,例如输入/输出存储器管理单元(IOMMU)等。
主机A 110耦合到PCIe交换机140。PCIe交换机140是高速互连,提供一个或多个系统设备170到系统100中的其他组件的互连。PCIe交换机140可以是主板级互连,扩展卡接口,高级可扩展接口(AXI)总线或任何其他类型的互连。系统设备170可以通过PCIe交换机140在一个或多个链路上进行通信。
系统设备170可以是能够通过系统100进行通信的任何类型的PCIe设备。仅作为示例,系统设备170可以是GPU,网络接口控制器(NIC)或任何其他符合PCIe的设备。尽管仅示出了一个系统设备170,但是系统100可以包括任何数量的系统设备。在本文的一些示例中,系统设备也可以被称为PCIe设备,或者简称为设备。
在该示例中,PCIe交换机140还包括非透明桥(NTB)142。非透明桥142可用于连接两个或更多个设备,并允许两个或更多个主机共享资源,从而使得每个主机的层次结构似乎都可以渗透到另一主机的层次结构中。例如,NTB 142用于通过PCIe交换机140将主机A110连接到主机B 120。就这一点而言,系统设备170对于主机A 110和主机B 120都是可见的。NTB 142还使主机A 110的存储器112或存储器112的一部分对于主机B 110可见,并使主机B 120的存储器122或存储器122的一部分对于主机A 110可见。例如,如图1A所示,主机B的存储器在主机A的映射输入/输出空间116(例如存储器映射输入/输出(MMIO))中被别名化。类似地,主机A的存储器在主机B的映射输入/输出空间126中被别名化。
根据第一示例,将访客114从主机A 110迁移到主机B 120包括使用事务性存储器。第一帮助器线程使IOMMU TLB无效化,并将4KB页面从主机A 110复制到主机B 120,而第二页面表条目(PTE)编辑线程在硬件事务内部编辑主机A的IOMMU页面表条目。PTE最初将主机A PCIe地址映射到主机A存储器112。在编辑之后,PTE在NTB 142可用的地址空间126中将主机A PCIe地址映射到主机B存储器126。在发生所有移动之后,将调整PCIe和NTB级别映射,以将所有设备访问直接重定向到主机B,从而避免了主机A IOMMU和NTB映射步骤。
对IOMMU页面表条目的读取或写入访问将在事务期间中止PTE编辑线程,使页面表条目保持其旧值。助手线程的工作是幂等的;由于在提交PTE编辑之前将无法访问页面的主机B副本,因此任何中止操作都将导致无用的,但是无害的副本和IOMMU TLB被帮助器线程无效化。重试将重新执行帮助器线程的工作。
图1B示出了将访客114从主机A 110迁移到主机B 120的示例。如图所示,主机A110中的页面表条目最初将PCIe设备(例如系统设备170)的地址映射到主机A存储器112中的存储位置。复制页面时,将更新复制页面的页面表条目,以指向地址空间116中的主机BRAM。一旦复制完成,访客114已经被移到主机B RAM 122,并且被显示为复制访客114’。此外,主机A中用于系统设备170的页面表条目映射到主机B存储器122。
图2提供了表格200,该表格示出了将访客从主机A 110移动至主机B 120的一系列操作。第一CPU0的操作(例如在主机A中)可以是PTE编辑线程的操作。第二CPU1的操作(例如也在主机A中)可能是帮助器线程的操作。在此示例中,访客一次被移动一个4KB页面。4KB页面具有多个别名。例如,$START是主机A 110的RAM地址,而$START_B是主机B 120中的被别名化的同一页的RAM地址。$END是主机B物理RAM页面$END B在主机A MMIO中的别名化。
在第一阶段,在表200的第1行,Xbegin指示事务开始。在某些示例中,将整个4KB页面放入读取集中,包括在事务期间读取或加载的所有数据项。可选地,读取4KB页面的每个高速缓存行,以便在硬件事务的读取集中跟踪对高速缓存行的访问。这是可选的,因为它用于在写入页面时中止。如果有设备写入,这将导致事务在第一阶段或第二阶段中止,因为IOMMU必须访问页面表条目($PTE)。PTE位于写入集中,因此从外部进行的读取和写入会中止。通过将高速缓存行放入读取集中,可以捕获对正在移动的页面进行写入访问的VCPU或虚拟机管理程序。在其他示例中,可以使用传统的页面不存在机制通过各种性能/复杂度的折衷来捕获VCPU写入。
与事务开始相关的操作在CPU0外部不可见。$PTE=$END导致映射结构更改。例如,如第1行的IOMMU列所示,转换后备缓冲区(TLB)或页面表转换的其他缓存可能包含输入/输出虚拟地址(IOVA)。如图所示,$IOVA可以是系统设备170用来与正在移动的4KB页面进行通信的PCIe地址。根据映射结构的更改,任何要访问存储器的设备都需要访问最终值,而不是旧值。通过将整个4KB页面添加到读取集中,事务可以检测到对该页面的写入。对于设备的页面表访问,这是多余的,但缓存了基于CPU的访问。如果允许虚拟CPU(VCPU)继续运行,或者不阻止主机级帮助器程序线程写入页面,则可能导致这些CPU访问。
在其他示例中,不是将整个4KB页面复制到读取集,而是使用在主机A MMIO上被别名化的主机B的存储器地址来更新页面表条目。
当CPU0完成第一步时,它发送“信号1”,告诉CPU1第一步完成。
在第2行中,一旦帮助器线程看到信号1,它将进入第二阶段。帮助器线程让IOMMU使表条目的缓存页面无效化,包括但不限于正在迁移的IOVA。此无效化会影响位于IOMMU本身的TLB以及位于设备中的所有符合ATS(地址转换服务)的TLB。IOMMU完成时将发送确认。在函数“memcpy”中,将主机A的值复制到主机B。主机B具有完全相同的副本,但是尚无其他设备可以访问所述完全相同的副本。无效化和复制操作可以按任何顺序执行。第二阶段完成后,CPU1将“信号2”发送到CPU0。
在第三阶段中,如表200的第3行所示,事务结束。如果事务是在不中断的情况下完成的,那么从架构上讲,在事务期间没有设备读取IOMME PTE,因此不存在PTE的过时缓存副本。此外,在事务期间,没有PCIe设备或任何其他CPU写入主机A的4KB页面。$END处的4KB页面的副本应与Xend时$START处的副本相同。现在,4KB页面的“实时”副本位于主机B上,并且Xend之后系统设备的访问将转到主机B副本。Xend之后,系统设备无法访问主机A的$START副本。只要在没有外部观察页面表条目并且没有外部修改4KB页面的情况下发生从START到END的页面复制和更新IOMMU页面表,事务就应该成功完成而不会中止。
如果事务未成功完成,则可能是由于多种原因中止事务。例如,如果IOMMU TLB没有缓存的转换并且PCIe设备读取或写入主机A 4KB页面,则在第一阶段(表200的行1)中可能终止事务。这会中止事务,因为IOMMU页面表条目位于写入集中,而IOMMU硬件会读取该值。作为另一示例,如果IOMMU TLB已缓存了转换$IOVA->$START并且PCIe设备写入主机的4KB页面,则在第一阶段中止事务。尽管PCIe读取是安全的(涉及要迁移的页面的外部观察的一致性),并且如果尚未执行PTE=END步骤,不会导致事务中止,但是PCIe写入可能并不安全,因为所述页面是在复制过程中,复制过程可能会丢失对页面子范围的写入。PCIe写入被检测到因为4KB页面位于读取集中,并且PCIe设备已写入该页面。作为又一示例,如果CPU0遇到中断,则可以在第一阶段中止事务。如果在第一阶段中止事务,则CPU0可能会丢弃读取值并因此而丢弃IOVA写操作。但是,CPU1仍可以执行阶段2中描述的工作。
在一些示例中,出于与第一阶段中止有关的上述相同的原因,事务可以在第二阶段中止。作为第二阶段中止事务的结果,CPU0丢弃了读取的值,并丢弃了IOVA写入。CPU1已将部分或全部4KB页面复制到主机B,但是由于IOVA写入被丢弃,因此PCIe设备无法访问主机B页面。关键的同步点是在存储器复制开始之前,IOMMU TLB的无效化(等待确认操作已完成)已经完成;因为该事务正在监视页面表条目,所以如果该事务在步骤2中没有中止,则根据架构,在步骤2中没有读取$IOVA。因此,memcpy从$START读取了一致的,未修改的数据集。
在事务尚未提交时,事务不被允许发送信号,这使得很难从事务内部发出进度信号。同样,一旦事务读取了存储器位置,外部线程就无法在不中止该事务的情况下更改该存储器位置。可以将预安排的时间表与读取时间戳计数器(RDTSC)指令一起使用,以同步两个CPU并构建信号1和信号2。例如,某些处理器(例如x86处理器)具有可在所有内核上精确同步的千兆赫兹时钟。线程在开始工作或事务之前传达开始时间START_TIME和集合时间。步骤之间的间隔是预先确定的,可以动态调整以平衡等待时间和虚假中止。在事务线程中,如果线程在调度“发送信号1”的时间之前未完成其工作,则通过使事务中止来实现“发送信号1”。在这样的使用预先安排的时间表的示例中,线程1之间没有信号1的显式通信。
在帮助器线程向事务线程发送信号的情况下,操作“发送信号2”由M个布尔值的集合来实施,每个布尔值的间隔不大于一个布尔值。线程预先安排了时间间隔INT(例如500个周期)。当事务线程等待信号时,它将读取条目N,其中N=(RDTSC()-START)/INT。因此,例如如果当前时间是启动后的1200个周期,则N=1200/500=2。如果条目N为真,则信号2已发送。否则,信号2尚未发送,线程等待直到下一次INT的倍数。然后线程读取N=3处的下一布尔值。当帮助器线程希望发送信号2时,它将计算N=(RDTSC()-START)/INT并将true写入从N+1到M索引的所有布尔值。这种安排使事务一次读取每个布尔值,并确保帮助程序线程不会将其写入已存在于事务中的布尔值并使事务中止。布尔值可以是链表,不按顺序分散在存储器中,以避免预取程序比预期的更早将布尔值引入事务中。
复制后的实时迁移与上文结合图2描述的基于事务的迁移方法兼容。访客存储器的子集(例如已知的热存储器页)可以从主机A移到主机B,然后可以将CPU执行转移到主机B。在复制后,访客将在主机B上恢复执行,并将在后台继续使用上述基于事务的迁移方法来传输页面。复制后的阶段完成后,主机A的IOMMU或主机B的IOMMU可能处于激活状态。主机B的IOMMU将转换对访客存储器的后续设备访问。设备访问已被重新定位到主机B的页面的操作将直接访问主机B的RAM。仍驻留在主机A上的页面将被IOMMU映射,通过NTB重定向到主机A中的后备位置。另一方面,将直接允许主机B中的页面进行VCPU访问,但是对于VCPU访问,页面驻留在主机B中会导致EPT页面错误。当VCPU出现页面错误时,将告知后台复制方法确定所需页面的优先级。
图3描绘了示例主机110。如图所示,主机110可以包括一个或多个处理器210,一个或多个存储器230和IOMMU 250。
处理器210可以是任何公知的处理器,例如可商购获得的CPU或微控制器。可替代地,处理器可以是专用控制器,例如ASIC。根据一些示例,处理器210可以是具有两个或更多个处理核的多核处理器。
存储器230存储处理器210可访问的信息,包括可由处理器210执行的指令234。存储器还包括可由处理器检索,操纵或存储的数据232。存储器230可以进一步包括运行一个或多个访客238的管理程序236。访客238可以是例如虚拟机。尽管管理程序236被示为在存储器230中实施,但是应当理解的是,管理程序236可以被实施为软件,硬件或固件,并且可以将访客存储器映射到存储器230。访客238可以在逻辑上附接到一个或多个系统设备(未示出),例如PCIe或其他外围设备。此类系统设备的示例包括GPU,网络接口卡(NIC),机器学习加速器(TPU),现场可编程逻辑门阵列(FPGA),视频编码器或代码转换器,硬件安全模块或其他加速器,硬盘或SSD或定制设备。
IOMMU 250是存储器映射单元,其可以将具有直接存储器访问(DMA)功能的I/O设备连接到存储器230和其他设备170。IOMMU 250可以将设备可见的PCIe虚拟地址(例如,设备地址或I/O地址)映射到物理地址。就这一点而言,IOMMU 250可以包括多个页面表条目(PTE),用于将I/O从访客238附加的外围设备映射到存储器230或其他设备170。
存储器230可以是能够存储处理器可访问的信息的任何类型,例如硬盘驱动器,存储卡,ROM,RAM,交叉点RAM,非易失性RAM,DVD,CD-ROM,可写入和只读存储器。存储器230包括可以根据指令234由处理器检索,操纵或存储的数据232。例如,尽管系统和方法不受任何特定数据结构的限制,但是数据可以存储在计算机寄存器中,在关系数据库中作为具有多个不同字段和记录的表或XML文档。数据也可以以任何计算机可读格式进行格式化,例如但不限于二进制值,ASCII或Unicode。此外,数据可以包含足以识别相关信息的任何信息,例如数字,描述性文字,专有代码,指针,引用存储在其他存储器(包括其他网络位置)中的数据或功能用来计算相关数据的信息。在所示的示例中,数据232包括主机B的存储器,该主机B通过NTB在主机A 110的MMIO中被别名化,主机B通过该NTB耦合到主机A。应当理解的是,数据232还包括主机A的存储器。
指令234可以是将由处理器210直接执行(例如,机器代码)或间接执行(例如,脚本)的任何指令集。在这方面,术语“指令”,“步骤”和“程序”在本文中可以互换使用。指令可以以目标代码格式存储以供处理器直接处理,或者以任何其他计算机语言存储,包括脚本或独立源代码模块的集合,这些脚本或集合按需进行解释或预先编译。
指令234可以由处理器210执行,例如,以提供访客238从主机A 110到目标主机(例如主机B 120,图1)的迁移。例如,指令234可以被执行以读取要从主机A 110上的访客238复制到目标主机的页面,或者指示DMA引擎执行类似的复制。此时,IOMMU 250中的页面表条目将主机A的PCIe地址映射到主机A的RAM。例如通过使用上文结合图2的表描述的$PTE=$END操作来改变要复制的页面的映射。例如,目标主机的存储器在主机A 110的映射I/O中被别名化。因此,外围设备必须访问对应于目标主机存储器的最终值,而不应该访问源主机存储器的旧值,指令234进一步使一个或多个处理器210中的帮助器线程告诉IOMMU 250使高速缓存的页面表条目无效化。IOMMU 250可以确认与无效化请求相对应的所有缓存的页面表条目已经被无效化。在页面表条目的IOMMU无效化之前,期间或之后,可以将来自源主机A112上的访客238的值复制到目标主机。一旦复制完成,IOMMU 250将主机A的PCIe地址映射到目标主机(例如,主机B)的RAM,该主机在NTB提供的地址空间中被别名化。因此,将给系统设备提供目标主机上复制的访客238的访问。例如,PCIe和NTB级别的映射会将所有外围设备访问直接重定向到目标主机,从而避免了IOMMU 250。
尽管图3在功能上将处理器210,存储器230和IOMMU 250示为在同一块内,但是应当理解的是,处理器和存储器实际上可以包含多个可以或不可以被安置在一个物理外壳中的处理器和存储器。例如,某些指令和数据可以存储在可移动CD-ROM上,而其他指令和数据则可以存储在只读计算机芯片中。一些或全部指令和数据可以存储在物理上远离处理器120但仍可被处理器120访问的位置。类似地,处理器120实际上可以包含可以或不可以并行运行的处理器的集合。此外,IOMMU 250可以位于耦合到主机A 110的不同外壳中。
图4示出了示例方法400,该示例方法400使用事务性存储器将具有附加外围设备的访客页面在原子层面地从源主机移动到目标主机。尽管下面以特定顺序描述了操作,但是应当理解的是,可以修改顺序或者可以同时执行操作。此外,可以添加或省略操作。
在框410中,使用一个或多个NTB将源主机A耦合到目标主机B。例如,如图1所示,源主机可以耦合到包含NTB的PCIe交换机。NTB可以耦合到目标主机。源主机和目标主机之间的连接可以是物理连接也可以是逻辑连接。因此,可以在不需要修改物理连接的情况下修改或移除逻辑连接。作为NTB连接的结果,目标主机的存储器可以在源主机的映射I/O中别名化,并且源主机的存储器可以在目标主机的映射I/O中别名化。
在框420中,CPU0事务代码读取要从源主机复制到目标主机的页面。该页面可以是例如4KB的页面。在其他示例中,页面可以更小或更大。应当理解的是,执行框420的操作以捕获VCPU的尝试写操作是可选地,但是也可以省略。
在框430中,改变要复制的页面的映射。例如,设备必须访问与目标主机的存储位置相对应的最终值,而不是访问与源主机上的存储位置相对应的旧值。这可以由例如源主机的PTE编辑线程执行。根据一些示例,当映射中的更改完成时,PTE编辑线程可以向另一个线程发出信号。在其他示例中,可以假定映射改变在预定时间段之后完成。
在框440中,帮助器线程告诉源主机中的IOMMU使高速缓存的页面表条目无效化。IOMMU可以提供确认,指示已丢弃所有页面表条目的缓存副本。
在框450中,将与访客相对应的存储器从源主机移动到目标主机。存储器一次可以移动一页。复制期间可能会禁止外围设备访问。外围设备尝试访问要复制的存储器可能会导致事务中止。尽管方框440和450被示为大致同时执行,但是应当理解的是,方框440的操作可以选择在方框450的操作之前或之后执行。
在框460中,将给外围设备提供目标主机上的访客的访问。
尽管上述示例利用单个NTB,如图1所示,但是应该理解的是,在其他示例中可以利用多个NTB。例如,图5A示出了包括主机A 110和主机B 120的系统500,其中每个主机A 110和主机B 120被连接到PCIe交换机540的单独的NTB 542、544。在这方面,与使用单个NTB相比,NTB在迁移过程中无需从一个主机移到另一个主机。NTB可以一直保持启用状态,从而降低了将NTB从主机A移到主机B的复杂性。但是,使用更多的NTB需要更多的硬件,因此设备成本也更高。
图5B示出了另一示例系统505,其类似于系统500,但是包括第二PCIe开关640。第二PCIe交换机640包括另一个NTB 642,其用于将第二PCIe交换机640耦合到PCIe交换机540。在此示例中,与图5A的PCIe开关540中可能需要的更复杂的地址映射调整相反,NTB642可以用作执行地址映射更改的单点。
图6示出了另一示例600,其中上述基于事务的方法可用于将固定的页面从存储器616中的第一位置移动到同一主机610的存储器618中的第二位置。第一存储器616可以是与第二存储器618分开的存储器。例如,第一存储器616和第二存储器618可以是相同主机610中的两种不同类型的存储器,或者可以是相同类型的两个独立存储器。在其他示例中,第一存储器616和第二存储器618可以是同一存储器单元的不同部分。在任何一种情况下,将固定的页面616移动到另一个存储器位置可能会影响连接的系统设备170的功能。因此,如以上关于复制访客所述,当将固定的页面移动到第二存储器618时,可以更新将系统设备170映射到第一存储器616的页面表条目。
用于将连接有外围设备的访客从源主机迁移到目标主机的其他示例系统和方法可能根本不使用NTB。例如,图7A示出了系统700,该系统700包括中介层设备730,该中介层设备730连接在主机A 110和PCIe交换机740之间以及主机B 120和PCIe交换机740之间。
中介层设备730可以是例如插入在PCIe业务模式上的ASIC或现场可编程门阵列(FPGA)。中介层730可以具有例如三个最大宽度(x16)的PCIe端口,从而允许其服务于全线速PCIe业务。中介层730可以观察和修改每个PCIe数据包,以进行脏跟踪,页面复制,原子延迟等。
中介层设备730可以读取每个PCIe分组的地址和大小。它可以以任何所需的粒度产生脏跟踪。例如,设备可以填充位向量,其中每个位代表一个4KB页面。该向量可以驻留在设备或主机存储器中。中介层设备730可以使用原子比较和交换(cmpxchg)来设置位,或使用与主机进行某种同步的非原子写入。中介层设备730还可以漫游IOMMU页面表条目并设置脏位,或者实现其自己的IOMMU并漫游页面表设置脏位。
中介层设备730可以例如通过执行页面复制并建立原子行为,来实现访客114从主机A 110到主机B 120的快速移动。根据来自主机(例如主机A 110)的请求,中介层设备730可以延迟或缓冲PCIe设备对指定页面的访问,将页面从主机A 110复制到主机B120,然后清空访问缓冲区。中介层设备730可以服务于在中介层设备730本身内部跟踪的来自进行中的拷贝的读取以及来自写入的差异更新。可选地,中介层设备730可以延迟对正在进行的页面的所有读取和写入的进度。
中介层设备730可以实施一整套实施的一部分,从而在主机(例如主机A 110)执行复制时延迟外围设备访问。
尽管在图7中示出了一个中介层730,但是应该理解的是,可以修改中介层设备730的数量和位置。例如,图7B示出了另一示例系统705,其包括第二中介层830。相应的,第一中介层730位于主机A 110与PCIe开关740之间,第二中介层830位于主机B 120与第一中介层730之间。该系统705在逻辑上与图7A中的单个中介层相同,但是将能够相同地构建主机A和主机B。
图8示出了又一示例系统800。在该示例中,中介层930位于PCIe交换机940的NTB942和主机B 120之间。与例如图7A的中介层730相比,中介层930的功能被更少使用到。在该示例800中,中介层930仅需要调整由系统设备170发出的地址。例如NTB 942可以被用来避免重建某些机制。
图9示出了包括单个主机610的另一示例系统,类似于上文结合图6描述的系统。在该示例中,被固定的页面再次从第一存储器616移动到第二存储器618。然而,在该示例中,中介层740用于引导移动,起到了类似于上文结合图7A描述的作用。
图10示出了使用上述任何示例系统中的中介层执行访客1114迁移的示例方法1000。
在框1010中,中介层从主机A接收请求,该请求可以指定要从主机A复制到主机B的特定页面。
在框1020中,中介层可以缓冲PCIe设备对指定页面的访问。在这方面,中介层可能会延迟PCIe设备访问。
在框1030中,中介层将指定的页面从主机A复制到主机B。复制完成后,在方框1040中,中介层将PCIe设备访问的缓冲区耗尽。
图11-12示出了用于迁移具有一个或多个附接的外围设备的访客114的另一示例系统1100、1210。这些示例系统1100、1200每个都实现兼容PCIe的可编程的侧上(OTS)设备1180,该设备可能不具有完整的x16双端口流量,但是可以被编程或设计为执行如上所述中介层的一部分操作。在图10的示例系统1000中,OTS可编程设备1180被放置在PCIe交换结构上。在图11的示例系统1100中,PCIe开关140耦合到主机A 110的第一PCIe端口1217,而OTS可编程设备1180耦合到主机A 110的第二PCIe端口1218。在任一系统中,OTS可编程设备1180可以跟踪脏位并允许从主机A 110复制到主机B 120。
给定IOMMU和NTB地址映射能力,OTS可编程设备1180可以在任何给定时间映射主机A 110地址空间的子范围。例如,给定通过OTS可编程设备1180来影射设备业务的4KB移动窗口,则典型的DMA模式将长时间不会集中在任何一个4KB页面上。相应地,可以以最小的性能扰动将OTS可编程设备1180插入4KB范围。OTS可编程设备1180可以修改或监视定向到它的分组,然后将该分组传递到其最终目的地。
OTS可编程设备1180可以跟踪整个地址空间的脏位。如果IOMMU页面表的叶节点被放置在OTS可编程设备1180中,则OTS可编程设备1180将知道页面表漫游器何时执行对页面表叶节点的读取。虽然页面表漫游器可能不会直接将读取或写入意向通知给OTS可编程设备1180,但是OTS可编程设备1180可以推断出脏位和访问位。例如,对于每个接触到的页面表条目,如果它是可读或可写的,则引用的4KB页已被弄脏并访问。如果页面仅可读,则说明已访问4KB页面。可以在页面表条目本身中或如关于中介层730所述那样跟踪脏位。
主机可以通过OTS可编程设备1180重定向4KB页面,以便监视对整个4KB页面的访问。例如,图13示出了用于使用OTS可编程设备1180将访客从主机A复制到主机B的示例方法1300。在该方法的开始,要移动的存储器的页面驻留在主机A上,主机A的IOMMU直接定位到页面。尽管在此示例中提到了4KB页面,但是应该理解的是,该页面可以是任何大小,例如2KB,8KB等。
在框1310中,主机A将主机A上的页面地址通知给OTS可编程设备。在框1320中,主机A更改IOMMU映射以将OTS设备的地址范围作为目标。
在框1330中,OTS设备将对于主机A上的页面的读取和写入重新定向。OTS设备进一步跟踪是否存在对指定页面的任何读取或写入。
在框1340中,主机A将指定的页面复制到主机B。在框1350中,主机A将所复制的页面的IOMMU映射更改为主机B。
用于迁移具有附接的PCIe设备的访客的另一示例系统包括修改的IOMMU。IOMMU接受寄存器或命令队列中的命令。命令被添加到IOMMU,要求它进行原子层面的修改。为了提高效率,可以立即为命令队列提供多个“修改”命令,以允许批量处理IOMMU TLB无效化。
“修改”命令可以包含诸如受影响的一个或多个设备的PCI标识符,域名,其映射将被修改的I/O虚拟地址(IOVA)以及IOVA映射条目中要改变的目的地物理地址之类的信息。在某些示例中,“修改”命令可以包括识别页面表条目本身的主机物理地址,而不包括其映射将被修改的IOVA。在这方面,IOMMU无需漫游页面表即可找到要修改的页面表条目。在一些示例中,“修改”命令可以进一步指示命令队列中是否存在影响共享相同高速缓存行的页面表条目的后续命令。在此示例中,无效化和页面表条目修改工作可以分批进行。
图14示出了当IOMMU处理“修改”命令时所执行的示例方法1400。与上述方法类似,可以以不同顺序或同时执行操作,并且可以修改、添加或省略操作。
在框1410中,IOMMU获取包含行表条目的高速缓存行,该页面表条目对应于排他高速缓存状态下的迁移。
在框1420中,IOMMU延迟对该高速缓存行的任何读取或写入请求。延迟可以一直持续到根据“修改”命令的内容修改页面表条目为止(方框1460)。IOMMU自己对页面表漫游的高速缓存行的任何访问都包括在此延迟中。虽然拒绝访问缓存行,但是由于页面表漫游而导致的任何读取都将被延迟。PCIe结构包含用于容纳等待服务的PCI请求的缓冲区,并且缓冲区将继续保留所有请求,直到IOMMU释放高速缓存行以进行进一步访问。标准的背压机制将确保PCIe层次结构中不会丢失任何数据包。快速执行序列将有助于避免超时或性能问题。
在框1430中,IOMMU将IOVA无效化请求发送到IOMMU自己的TLB。在一些示例中,可以预先缓存在IOVA范围内被无效化的条目的新转换。在框1440中,IOMMU将IOVA无效化请求发送到域中启用了地址转换服务(ATS)的任何设备。ATS允许设备拥有自己的TLB,以将IOVA缓存到物理转换。ATS要求设备遵守并确认IOMMU发送的无效化请求。IOMMU可以进一步等待对在框1430和1440中发送的请求的确认。
在框1450中,IOMMU将页面的内容复制到目标地址。
在框1460中,IOMMU根据“修改”命令的内容来修改页面表条目。
在框1470中,IOMMU释放高速缓存行,为其他设备提供访问权限。此时,在框1420中延迟的对高速缓存行的读取或写入不再被延迟。
方法1400确保在无效化,页面复制和修改期间没有设备可以使用IOVA映射。如果发生这种情况,系统将处于不一致状态。可以使用与以上结合图1-4描述的事务类似的机制,修改方法1400以进行可能的优化。例如,如果请求在框1410-1450期间进入,则IOMMU可以中止该过程且不会造成损害,而不用延迟(框1420)目标高速缓存行的任何读取或写入请求。框1460-1470一旦开始就不会中断,但是可以很快完成。IOMMU可以给定次数重试此类似事务的序列。如果类似事务的序列继续失败,则IOMMU可以执行图14所示的方法1400,而无需进行优化,以确保进度前进。
在保留原子性的同时,用于迁移具有连接的PCIe设备的访客的另一种系统和方法,包括暂停正在访问感兴趣范围的PCIe设备。如果所有PCIe设备都通过单个瓶颈访问主机,则有可能利用该拓扑结构立即使多个设备暂停。这可以通过引起PCIe链路级大小调整或速度重新训练事件来执行。一些高级芯片可能允许以编程方式完成此操作。
上述技术的优点在于,它们提供了具有需要迁移的附接的外围设备的虚拟机的运行时间的增加。例如,上述技术将增加神经网络处理机器的正常运行时间,该机器通常将许多机器组合在一起并且几乎没有故障容限。此外,这些技术可以改善具有非常大存储器占用的虚拟机的复制后延迟。
除非另有说明,否则前述替代示例不是互相排斥的,而是可以以各种组合实现独特的优点。由于可以在不脱离权利要求所限定的主题的情况下利用上述的特征的变形以及组合,因此,对实施方式的前述描述应当对于权利要求所限定的主题的进行说明而不是进行限定。另外,本文描述的示例的提供以及用短语表达为“诸如”,“包括”等的用语不应被解释为将权利要求的主题限制于特定示例。这些示例仅旨在说明许多可能的实施例之一。此外,在不同附图中的相同附图标记可以标识相同或相似的元件。

Claims (20)

1.一种实时迁移具有一个或多个附接的外围设备的访客虚拟机的方法,其特征在于,所述方法包括:
通过至少一个非透明网桥NTB将源主机耦合到目标主机;
标识要从所述源主机复制到所述目标主机的存储器的页面,所述存储器的页面对应于所述访客;
改变标识的所述页面的映射,以标识所述目标主机的存储器地址,所述目标主机的所述存储器地址在所述源主机中被别名化,并且对于所述一个或多个附接的外围设备不可见;
将标识的所述页面的数据从所述源主机复制到所述目标主机;
使与复制的所述数据相对应的所述源主机的页面表条目无效化;以及
向所述一个或多个附接的外围设备提供对所述目标主机上复制的所述页面的访问。
2.根据权利要求1所述的方法,其特征在于,所述NTB被包括在外围组件互连设备中。
3.根据权利要求1所述的方法,其特征在于,改变标识的所述页面的所述映射调用第一帮助器线程。
4.根据权利要求3所述的方法,其特征在于,使所述源主机的所述页面表条目无效化以及复制标识的所述页面的所述数据调用第二页面表条目PTE编辑线程。
5.根据权利要求4所述的方法,其特征在于,还包括:在改变标识的所述页面的所述映射之后,将第一信号从所述帮助器线程发送到所述PTE编辑线程,所述第一信号指示完成对标识的所述页面的所述映射的改变。
6.根据权利要求4所述的方法,其特征在于,还包括:从所述PTE编辑线程向所述帮助器线程发送第二信号,所述第二信号指示将标识的所述页面的所述数据从所述源主机复制到所述目标主机的完成。
7.根据权利要求1所述的方法,其特征在于,还包括:实施预定的时间限制,以完成以下各项中的至少一项:标识的所述页面的所述映射的改变,标识的所述页面的所述数据的复制,或所述源主机的所述页面表条目的无效化。
8.根据权利要求1所述的方法,其特征在于,还包括:如果一个或多个虚拟中央处理单元VCPU能够访问标识的所述页面,则在复制所述数据之前,读取要复制的标识的所述页面。
9.根据权利要求1所述的方法,其特征在于,还包括:当所述一个或多个附接的外围设备在复制期间尝试访问所述数据时,中止所述数据的复制。
10.根据权利要求1所述的方法,其特征在于,所述目标主机的所述存储器地址在所述源主机的存储器映射输入/输出中被别名化。
11.一种用于实时迁移具有一个或多个附接的外围设备的访客虚拟机的系统,其特征在于,所述系统包括:
源主机,所述源主机包括一个或多个存储器和一个或多个处理器,所述一个或多个存储器支持要迁移的所述访客虚拟机,所述源主机通过至少一个非透明桥NTB耦合到目标主机;
其中,所述源主机的所述一个或多个处理器被配置为:
标识要从所述源主机复制到所述目标主机的存储器的页面,所述存储器的页面对应于所述访客;
改变标识的所述页面的映射,以标识所述目标主机的存储器地址,所述目标主机的所述存储器地址在所述源主机中被别名化,并且对于所述一个或多个附接的外围设备不可见;
将标识的所述页面的数据从所述源主机复制到所述目标主机;
使与复制的所述数据相对应的所述源主机的页面表条目无效化;以及
向所述一个或多个附接的外围设备提供对所述目标主机上复制的所述页面的访问。
12.根据权利要求11所述的系统,其特征在于,所述NTB被包括在外围组件互连设备中,所述外围组件互连设备耦合在所述源主机与所述一个或多个附接的外围设备之间。
13.根据权利要求11所述的系统,其特征在于,所述一个或多个处理器包括一个或多个处理核,并且其中,第一处理核改变标识的所述页面的所述映射。
14.根据权利要求13所述的系统,其特征在于,第二处理核使所述源主机的所述页面表条目无效化,并且复制标识的所述页面的所述数据。
15.根据权利要求14所述的系统,其特征在于,所述第一处理核在改变标识的所述页面的所述映射之后,向所述第二处理核发送第一信号,所述第一信号指示完成对标识的所述页面的所述映射的改变。
16.根据权利要求14所述的系统,其特征在于,所述第二处理核向所述第一处理核发送第二信号,所述第二信号指示将标识的所述页面的所述数据从所述源主机复制到所述目标主机的完成。
17.根据权利要求11所述的系统,其特征在于,所述一个或多个处理器还被配置为实施预定的时间限制,以完成以下各项中的至少一项:标识的所述页面的所述映射的改变,标识的所述页面的所述数据的复制,或所述源主机的所述页面表条目的无效化。
18.根据权利要求11所述的系统,其特征在于,所述一个或多个处理器还被配置为:如果一个或多个虚拟中央处理单元VCPU能够访问标识的所述页面,则在复制所述数据之前,读取要复制的标识的所述页面。
19.根据权利要求11所述的系统,其特征在于,所述一个或多个处理器还被配置为:当所述一个或多个附接的外围设备在复制期间尝试访问所述数据时,中止所述数据的复制。
20.根据权利要求11所述的系统,其特征在于,所述目标主机的所述存储器地址在所述源主机的存储器映射输入/输出中被别名化。
CN201880089473.XA 2018-02-14 2018-02-14 用于实时迁移具有分配的外围设备的虚拟机的系统 Active CN111712796B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/018164 WO2019160542A1 (en) 2018-02-14 2018-02-14 System for live migration of virtual machines with assigned peripheral devices

Publications (2)

Publication Number Publication Date
CN111712796A CN111712796A (zh) 2020-09-25
CN111712796B true CN111712796B (zh) 2024-01-05

Family

ID=61521832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880089473.XA Active CN111712796B (zh) 2018-02-14 2018-02-14 用于实时迁移具有分配的外围设备的虚拟机的系统

Country Status (4)

Country Link
US (3) US11360794B2 (zh)
EP (1) EP3752915B1 (zh)
CN (1) CN111712796B (zh)
WO (1) WO2019160542A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11126464B2 (en) 2018-07-27 2021-09-21 Vmware, Inc. Using cache coherent FPGAS to accelerate remote memory write-back
US11231949B2 (en) 2018-07-27 2022-01-25 Vmware, Inc. Using cache coherent FPGAS to accelerate post-copy migration
US11947458B2 (en) 2018-07-27 2024-04-02 Vmware, Inc. Using cache coherent FPGAS to track dirty cache lines
US11099871B2 (en) * 2018-07-27 2021-08-24 Vmware, Inc. Using cache coherent FPGAS to accelerate live migration of virtual machines
US10817462B1 (en) * 2019-04-26 2020-10-27 Xilinx, Inc. Machine learning model updates to ML accelerators
US11074208B1 (en) 2019-07-24 2021-07-27 Xilinx, Inc. Routing network using global address map with adaptive main memory expansion for a plurality of home agents
US11474871B1 (en) 2019-09-25 2022-10-18 Xilinx, Inc. Cache coherent acceleration function virtualization
US12001869B2 (en) * 2021-02-25 2024-06-04 Red Hat, Inc. Memory over-commit support for live migration of virtual machines
US20230036054A1 (en) * 2021-07-29 2023-02-02 International Business Machines Corporation Memory migration within a multi-host data processing environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223737B1 (en) * 2013-03-14 2015-12-29 Google Inc. Computer interconnect isolation
CN105335223A (zh) * 2014-06-20 2016-02-17 富士通株式会社 源主机和目的主机上的虚拟机内存迁移装置、方法及系统
CN107015844A (zh) * 2015-12-18 2017-08-04 英特尔公司 虚拟机批量在线迁移

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804729B2 (en) 2002-09-30 2004-10-12 International Business Machines Corporation Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel
US8417913B2 (en) * 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
US7904692B2 (en) * 2007-11-01 2011-03-08 Shrijeet Mukherjee Iommu with translation request management and methods for managing translation requests
US8405666B2 (en) 2009-10-08 2013-03-26 Advanced Micro Devices, Inc. Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
JP5541117B2 (ja) * 2010-11-26 2014-07-09 富士通株式会社 仮想マシン移行システム、仮想マシン移行プログラム、及び仮想マシン移行方法
US9519606B2 (en) * 2013-07-22 2016-12-13 GigaIO Networks, Inc. Network switch
US9672056B2 (en) * 2014-01-29 2017-06-06 Red Hat Israel, Ltd. Reducing redundant network transmissions in virtual machine live migration
US9996494B2 (en) * 2015-09-03 2018-06-12 Red Hat Israel, Ltd. Asynchronous mapping of hot-plugged device associated with virtual machine
US10430221B2 (en) * 2015-09-28 2019-10-01 Red Hat Israel, Ltd. Post-copy virtual machine migration with assigned devices
US9639388B2 (en) * 2015-09-30 2017-05-02 Red Hat, Inc. Deferred assignment of devices in virtual machine migration
US10417141B2 (en) * 2017-05-22 2019-09-17 Arm Limited Method and apparatus for hardware management of multiple memory pools

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223737B1 (en) * 2013-03-14 2015-12-29 Google Inc. Computer interconnect isolation
CN105335223A (zh) * 2014-06-20 2016-02-17 富士通株式会社 源主机和目的主机上的虚拟机内存迁移装置、方法及系统
CN107015844A (zh) * 2015-12-18 2017-08-04 英特尔公司 虚拟机批量在线迁移

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于设备代理机制的虚拟机动态迁移技术研究;李志伟 等;《计算机应用研究》;第26卷(第4期);第1349-1352页 *

Also Published As

Publication number Publication date
EP3752915B1 (en) 2024-02-07
US11928496B2 (en) 2024-03-12
US20230297407A1 (en) 2023-09-21
US11360794B2 (en) 2022-06-14
EP3752915A1 (en) 2020-12-23
US11635984B2 (en) 2023-04-25
CN111712796A (zh) 2020-09-25
US20220291945A1 (en) 2022-09-15
WO2019160542A1 (en) 2019-08-22
US20200125384A1 (en) 2020-04-23

Similar Documents

Publication Publication Date Title
CN111712796B (zh) 用于实时迁移具有分配的外围设备的虚拟机的系统
Marathe et al. Persistent Memcached: Bringing Legacy Code to {Byte-Addressable} Persistent Memory
US9830276B2 (en) Replaying memory transactions while resolving memory access faults
TWI526829B (zh) 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體
US9767036B2 (en) Page state directory for managing unified virtual memory
US6920521B2 (en) Method and system of managing virtualized physical memory in a data processing system
US10146696B1 (en) Data storage system with cluster virtual memory on non-cache-coherent cluster interconnect
US20170364394A1 (en) System and method to perform live migration of a virtual machine without suspending operation thereof
US11741015B2 (en) Fault buffer for tracking page faults in unified virtual memory system
EP0480858A2 (en) Hardware primary directory lock
WO2021027069A1 (zh) 分布式虚拟机自适应内存一致性协议及其设计方法、终端
JP3836836B2 (ja) メモリ複製オペレーション時の不正確なキャッシュ・ライン保護機構
US11726693B2 (en) Migrating pages of memory accessible by input-output devices
US20040111569A1 (en) High speed memory cloning facility via a coherently done mechanism
Bhattacharjee et al. Heterogeneity and Virtualization

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