CN108713189B - 推测性虚拟机执行 - Google Patents
推测性虚拟机执行 Download PDFInfo
- Publication number
- CN108713189B CN108713189B CN201780016248.9A CN201780016248A CN108713189B CN 108713189 B CN108713189 B CN 108713189B CN 201780016248 A CN201780016248 A CN 201780016248A CN 108713189 B CN108713189 B CN 108713189B
- Authority
- CN
- China
- Prior art keywords
- page
- virtual machine
- target host
- future
- migration target
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种方法包括将访客虚拟机(200)从迁移源主机(110,110a)后复制迁移到迁移目标主机(110,110b),在迁移目标主机上执行访客虚拟机的指令流,以及由迁移目标主机确定访客虚拟机何时遇到页面错误(240)。当访客虚拟机遇到页面错误时,该方法包括从迁移源主机请求非当前页面(230,230a)以在迁移目标主机上加载,并且在仿真器(250)上仿真访客虚拟机的指令流的继续执行。该方法还包括由仿真器从所仿真的指令流的继续执行识别对未来页面(230,230b)的未来页面引用(220),并且与未非当前页请求并行地,从迁移源主机请求未来页面。
Description
技术领域
本公开涉及推测性虚拟机执行。
背景技术
Web服务可以在服务器上操作虚拟机。每个服务器可以托管存在并且操作为服务器内的独立机器的多个虚拟机。此外,每个虚拟机可以包含一个或多个虚拟中央处理单元(vCPU)。当服务器由于其他原因而需要维护或退化时,可以将虚拟机转移到不同的服务器。可以执行实时迁移以将虚拟机转移到不同的服务器。实时迁移通常静默或挂起当前服务器上的虚拟机,并且将虚拟机复制或转移到不同的服务器。然后,不同的服务器恢复虚拟机并且继续操作。实时迁移要求在进行复制或转移的同时,静默或挂起虚拟机的操作。由静默或挂起虚拟机而产生的延迟对于虚拟机操作是不可接受的。因此,期望快速且不停机地将虚拟机转移到另一个服务器。
发明内容
本公开的一个方面提供一种用于推测性VM执行的方法。该方法包括将访客虚拟机从迁移源主机后复制迁移到迁移目标主机。访客虚拟机具有指令的指令流。该方法进一步包括在迁移目标主机上执行访客虚拟机的指令流,以及迁移目标主机确定访客虚拟机何时遇到页面错误。当访客虚拟机遇到对非当前页面的指令流中的页面引用的页面错误时,访客虚拟机停止执行指令流。非当前页面驻留在迁移源主机上,而不是驻留在迁移目标主机上。当访客虚拟机遇到页面错误时,该方法包括由迁移目标主机从迁移源主机请求非当前页面,以在迁移目标主机上加载;以及在迁移目标主机上执行或与迁移目标主机通信的仿真器上仿真访客虚拟机的指令流的继续执行。该方法还包括由仿真器从所仿真的指令流的继续执行识别对未来页面的未来页面引用,以及与非当前页面请求并行地,由迁移目标主机从迁移源主机请求未来页面,以便在迁移目标主机上加载非当前页面同时,将未来页面预取到迁移目标主机。
本公开的实施方式可以包括一个或多个下述可选特征。在一些实施方式中,该方法包括当识别未来页面引用时,从迁移源主机请求未来页面。在仿真访客虚拟机的指令流的继续执行的同时,该方法搁置取决于非当前页面的加载值的指令,允许仿真器识别除未来页面错误外的未来页面引用。
迁移目标主机可以包括一个或多个计算设备;以及与一个或多个计算设备通信的一个或多个存储器主机。一个或多个存储器主机存储页面。该方法还可以包括基于未来页面引用和非当前页面之间的关系,识别未来页面引用。该关系可以包括父页面与一个或多个子页面之间的页面导航映射。在一些示例中,识别未来页面引用包括在与所识别的未来页面引用相关联的至少一个指令中,识别至少一个附加的未来页面引用。该方法还包括当非当前页面已经被递送到迁移目标主机时,由仿真器终止仿真指令流的继续执行。该方法进一步包括当非当前页面驻留在迁移目标主机上时,在迁移目标主机上继续执行访客虚拟机的指令流。从所仿真的对指令流的继续执行中识别未来页面引用进一步可以包括识别所识别的未来页面引用的未来页面地址。
本公开的另一方面提供一种迁移目标主机,包括数据处理硬件,以及与数据处理硬件通信的存储器硬件。存储器硬件存储指令,指令当在数据处理硬件上被执行时,使得数据处理硬件执行操作。操作包括将访客虚拟机从迁移源主机后复制迁移到存储器硬件。访客虚拟机具有指令的指令流。操作进一步包括执行访客虚拟机的指令流以及确定访客虚拟机何时遇到页面错误。当访客虚拟机遇到对非当前页面的指令流中的页面引用的页面错误时,访客虚拟机停止执行指令流,非当前页面驻留在迁移源主机上,而不是驻留在迁移目标主机的存储器硬件上。当访客虚拟机遇到页面错误时,操作包括从迁移源主机请求非当前页面,以在迁移目标主机的存储器硬件上加载;以及在数据处理硬件上执行或与迁移目标主机通信的仿真器上仿真访客虚拟机的指令流的继续执行。操作还包括由仿真器从所仿真的指令流的继续执行识别对未来页面的未来页面引用,以及与非当前页面请求并行地,从迁移源主机请求未来页面,以便在迁移目标主机的存储器硬件上加载非当前页面同时,将未来页面预取到迁移目标主机的存储器硬件。
该方法可以包括一个或多个下述可选特征。在一些实施方式中,操作包括当识别相应的未来页面引用时,从迁移源主机请求未来页面。操作还可以包括在仿真访客虚拟机的指令流的继续执行的同时,搁置取决于非当前页面的加载值的指令,允许仿真器识别除未来页面错误外的未来页面引用。存储器硬件可以进一步包括与数据处理硬件通信的一个或多个存储器主机,一个或多个存储器主机存储页面。在一些示例中,操作包括基于未来页面引用和非当前页面之间的关系,识别未来页面引用。该关系可以包括父页面与一个或多个子页面之间的页面导航映射。
在一些实施方式中,识别未来页面引用的操作包括在与所识别的未来页面引用相关联的至少一个指令中,识别至少未来的一个页面引用。操作还可以包括当非当前页面已经被递送到迁移目标主机的存储器硬件时,仿真器终止仿真指令流的继续执行。操作可以进一步包括当非当前页面驻留在迁移目标主机的存储器硬件上时,继续执行访客虚拟机的指令流。从所仿真的指令流的继续执行中识别未来页面引用可以进一步包括识别所识别的未来页面引用的未来页面地址。
在附图和下文的描述中阐述了本公开的一个或多个实施方式的细节。其他方面、特征和优点将从描述和附图以及权利要求书中变得显而易见。
附图说明
图1是具有存储器主机的分布式系统的示意图。
图2A是从迁移源主机转移到迁移目标主机的虚拟机的示意图。
图2B是在从迁移源主机转移到迁移目标主机的过程中的虚拟机的示意图。
图2C是在从迁移源主机转移到迁移目标主机并且检索页面的过程中的虚拟机的示意图。
图2D是在所请求的页面已经从迁移源主机转移到迁移目标主机之后的虚拟机的示意图。
图3是用于推测性虚拟机执行的方法的操作的示例性方案。
图4是可以为用于实现本文档中所述的系统和方法的主机的示例性计算设备的示意图。
各附图中的相同附图标记表示相同的元件。
具体实施方式
在使用后复制迁移,将虚拟机(例如,访客vCPU)从迁移源主机迁移到迁移目标主机的同时,在访客vCPU静默时,仅物理静态和最小动态(例如,寄存器状态)转移。因此,当虚拟机在迁移目标主机上恢复时,访客页面引用会导致非当前错误(因为在该新主机-迁移目标主机上还未加载访客页面)。当访客vCPU遇到非当前页面错误时,访客vCPU停止执行指令流,同时从迁移源主机请求非当前页面并且等待迁移目标主机加载非当前页面。为了满足/补救该错误,迁移目标主机请求按需将页面从迁移源传送到迁移目标。当访客vCPU从非当前页面错误停止时,仿真器可以由访客vCPU继续执行指令流,以与非当前页面并行地,从指令流中提取未来页面引用,并且当被发现时,从迁移源主机请求所提取的未来页面引用——以便在迁移目标主机上加载非当前页面的同时,将所识别的页面引用预取到迁移目标主机。
图1是具有服务器或主机110的分布式系统100的示意图。一个或多个服务器或主机110,110a,110b…110n中的每一个包括数据处理硬件112(例如,一个或多个计算机处理器)以及与数据处理硬件112通信的存储器硬件130。每个主机110包括被配置为与其他主机110或经由网络140(例如,经由互联网),与一个或多个客户端120通信的网络接口连接(NIC)116。
在一些实施方式中,一个或多个主机110通过执行存储在相应的存储器硬件130中的相应的指令210,提供虚拟机200。指令210可以是由一个或多个主机110,110a,…110n接收的指令流的一部分。虚拟机200可以是对特定的计算机系统的仿真。此外,虚拟机200可以基于特定的计算机架构以及真实或假设计算机的一个或多个功能来操作,并且其实施方式可以涉及专用硬件、软件或其组合。在一些示例中,虚拟机200是系统虚拟机,而在其他示例中,虚拟机200是过程虚拟机。
系统虚拟机(也称为完全虚拟化VM)提供对针对性真机的完全替代以及允许执行完整操作系统的功能级。系统虚拟机通常仿真现有的架构,其目的是构建:i)提供运行程序的平台,其中,真实硬件不可用(例如,在其他过时的平台上执行);ii)提供多个虚拟机实例,从而更有效地使用计算资源(例如,提供硬件虚拟化);或iii)两者。管理程序可以共享和管理硬件,以执行同一物理机器上彼此隔离的不同环境。
过程虚拟机通过提供抽象且与平台无关的程序执行环境来执行单个计算机程序。在一些示例中,过程虚拟机仿真不同的架构并且允许执行为另一CPU或架构编写的软件应用程序和操作系统。
每个虚拟机200包括物理状态202和动态状态204。物理状态202表示多个vCPU206、虚拟PCI插槽、PCI插槽中的虚拟设备和/或其他计算机设备。在一些实施方式中,虚拟机200具有一个关联的vCPU206;而在其他实施方式中,当物理主机110具有可以支配的多个CPU内核时,虚拟机200具有多个相关联的vCPU 206。在这样的实施方式中,CPU调度器可以指派执行场境,并且vCPU基本上变为逻辑处理器上的一系列时隙。动态状态204表示虚拟机200操作和仿真计算机所需的虚拟CPU寄存器的内容、访客存储器的内容等。
指令210可以包括页面引用220,页面引用220是与客户端120交互的命令或访问包含在页面230内的数据或信息的数据源。指令210可以代表一个或多个vCPU 206。此外,由数据处理硬件112执行的指令210可以与一个或多个vCPU 206的指令相同。在至少一个实施方式中,指令210是x86命令。在至少一个其他实施方式中,指令210是用于由数据处理硬件112执行的任何命令系列。
页面230可能非常大,例如,超过208Gb,并且更大的实施方式也是可能的。例如,客户端120可以通过网络140,向虚拟机200发送对信息或数据150的请求122。NIC 116在适当的主机110处接收请求。主机110的数据处理硬件112将该请求引导到位于主机110的存储器130内的正确的虚拟机200。然后,主机110的数据处理硬件112访问指令210,以根据虚拟机200的物理状态202和动态状态204,如虚拟机2200那样,对请求122执行适当处理。数据处理硬件112可以访问包含数据150的各种页面230。数据处理硬件112根据页面230确定适当的数据150并且将该数据150或整个页面230返回给客户端120。在一些示例中,多个客户端120,120a,120b…110n同时访问多个主机110,110a,110b…110n,每个主机110,110a,110b…110n操作一个或多个虚拟机200,200a,200b…200n。
图2A是从迁移源主机110,110a转移到迁移目标主机110,110b的虚拟机200的示意图。由于各种原因,可能需要将虚拟机200从迁移源主机110,110a迁移到迁移目标主机110,110b。可以使用后复制迁移。在这样的实施方式中,当虚拟机200静默时,迁移源主机110,110仅将物理状态202、最小动态状态204(例如,寄存器状态)以及与虚拟机200相关联的部分或全部指令210传送或后复制到迁移目标主机110,110b。在一些示例中,迁移源主机110,110a通过网络140,经由NIC 116,传送物理状态202、可选的一些动态状态204,以及与虚拟机200相关联的部分或全部指令210。迁移目标主机110,110b通过网络140,经由NIC 116,接收物理状态202、任何动态状态204以及与虚拟机200相关联的部分或全部指令210。后复制迁移传送虚拟机200的最少信息量并且可以被用来最小化虚拟机200的停机时间。等待将所有页面230传送到迁移目标主机110,110b可能导致虚拟机200的不可接受的停机时间。迁移源主机110,110a可以保留页面230并且根据需要,将页面230传送到迁移目标主机110,110b。迁移目标主机110,110b将物理状态202、动态状态204以及与虚拟机200相关联的部分或全部指令210加载到其存储器130,130b中。数据处理硬件112,112b可以执行以包括要求访问指定页面230的指令或请求的指令流格式的指令210。
图2B是在从迁移源主机110,110a转移到迁移目标主机110,110b的过程中的虚拟机200的示意图。迁移目标主机110,110b的数据处理硬件112,112b可以开始执行指令210以操作充当vCPU 206的虚拟机200a。许多指令210要求访问给定页面230。当数据处理硬件112遇到指令210要求尚未从迁移源主机110,110a传送的页面230时,数据处理硬件112引发非当前页面错误240。非当前页面错误240停止执行指令210,直到相应的页面230,230a可以被取得为止,充当停机的vCPU 206。在非当前页面错误240之后,迁移目标主机110,110b执行仿真器250,该仿真器250检查或执行指令210以识别通过在迁移目标主机110,110b上接收非当前页面230来清除非当前页面错误240之后,数据处理硬件112可以访问的未来页面230,230b。在一些示例中,仿真器250继续执行指令210,并且仿真器250搁置非当前的任何页面230或值并且继续识别由指令210接下来调用或需要的页面230,230b。仿真器250还可以直接检查页面230以基于关系确定数据处理硬件112或vCPU 206需要哪些页面230,230b来防止更多非当前页面错误240。仿真器250可以检查,包括但不限于页面230之间过去使用的频率、公共地址位置、存储器访问要求、嵌入式链接或页面230之间的其他关系以确定对未来页面230,230b的引用。在一些示例中,对未来页面230,230b的页面引用220包括父页面230与一个或多个子页面230之间的页面导航映射。
图2C是在从迁移源主机110,110a转移到迁移目标主机110,110b并且检索页面230的过程中的虚拟机200的示意图。当在迁移目标主机110,110b的数据处理硬件112,112b上执行的虚拟机200由于非当前页面错误240仍然停机时,数据处理硬件112,112b可以发送对位于地址232的非当前页面230a的非当前页面请求242。在使用数据处理硬件112,112b,对非当前页面230a的非当前页面请求242期间,仿真器250保持运行。地址232识别可能正在产生非当前页面错误240的特定页面230。迁移目标主机110,110b将非当前页面请求242递送到迁移源主机110,110a或包含非当前页面230a的其他主机110。迁移源主机110,110a可以经由非当前页面返回244,检索非当前页面230a并且将其递送到迁移目标主机110,110b。非当前页面返回244将非当前页面230,230a返回到迁移目标主机110,110b,允许迁移目标主机110,110b清除非当前页面错误240。
当正在发送和返回非当前页面请求242时,仿真器250从发生非当前页面错误240的点开始对指令210的继续执行,充当vCPU 206。仿真器250通过单步调试数据处理硬件112,112b执行的下一指令210,仿真对指令210的继续执行,并且基于仿真的指令212,识别对未来页面230,230b的未来页面引用220。数据处理硬件112也可以使用其他引用来识别页面230。此外,未来页面引用220可以包括识别页面230的地址232或其他引用。当仿真器250仿真对指令210的继续执行并且识别未来页面引用220时,仿真器250生成与所识别的未来页面引用220相对应的未来页面230,230b的未来页面请求252,并且可选地基于所仿真的指令212,确定对继续未来执行指令210哪些可能是必要的(例如,其他资源)。在仿真指令210时,仿真器250可以搁置引用非当前页面230a的指令210并且继续识别未来页面引用220。与对生成非当前页面错误240的非当前页面230a的非当前页面请求242并行地,迁移目标主机110,110b可以发送与从仿真的指令212发现的未来页面引用220相对应的未来页面230b的一个或多个未来页面请求252。
响应于接收到一个或多个未来页面请求252,迁移源主机110,110a将包括所请求的未来页面230,230b的一个或多个相应的未来页面返回254发送到迁移目标主机110,110b。非当前页面请求242、非当前页面返回244、未来页面请求252和未来页面返回254可以在类似和/或重叠的时间帧中发生。这允许迁移源主机110,110a将多个页面230完全或部分地传送到迁移目标主机110,110b,从而减少未来出现非当前页面错误240以及相关停止执行用于vCPU的指令210。在一些示例中,数据处理硬件112在经由非当前页面返回244返回非当前页面230,230a后,挂起仿真器250。迁移源主机110,110a可以继续实现未来页面请求252并且将未来页面返回254发送到迁移目标主机110,110b,即使仿真器250已经停止。在一些示例中,仿真器250从仿真的指令212错误地识别未来页面引用220,并且生成对与不正确识别的未来页面引用220相对应的未来页面230b的相应的未来页面请求252,从而预取相应的未来页面230,230b。这样的实例是可接受的,因为数据处理硬件112可以稍后在后续对指令210的继续执行时使用不正确识别的未来页面引用220的未来页面230,230b。
图2D是在所请求的页面230已经从迁移源主机110,110a传送到迁移目标主机110,110b之后的虚拟机200的示意图。当非当前页面230,230a已被返回并且加载到迁移目标主机110,110b的存储器130,130b中时,可以停止或挂起仿真器250,从而导致虚拟机200根据需要访问来经由数据处理硬件112,112b继续操作vCPU 206。迁移目标主机110,110b可以清除非当前页面错误240(经由vCPU 206),允许迁移目标主机110,110b上的vCPU 206继续执行指令210并且在迁移目标主机110,110b上操作虚拟机200。继续生成非当前页面错误240和检索页面230可以继续,直到由指令210引用的必要页面230已经从迁移源主机110,110a传送到迁移目标主机110,110b为止。只要由指令210引用的所有页面230都驻留在迁移目标主机110,110b上,迁移目标主机110,110b就可以经由数据处理硬件112,112b执行指令210,以在没有任何其他非当前页面错误240的情况下提供虚拟机200。完全转移的虚拟机200具有完整的物理状态202和动态状态204。
图3提供了用于推测性虚拟机执行的方法300的操作的示例性方案。在框302处,方法300包括将访客虚拟机200从迁移源主机110,110a后复制迁移到迁移目标主机110,110b。每个虚拟机200可以包括虚拟机操作所需的物理状态202,其表示虚拟CPU 206的数量、PCI插槽、PCI插槽中的器件等,以及动态状态204,其包括虚拟CPU寄存器的内容、访客存储器的内容等。每个虚拟机200具有引用各种页面230的指令集210。网络140可以将虚拟机200(包括其物理状态202和动态状态204)从迁移源主机110,110a转移到迁移目标主机110,110b。在框304处,方法300包括在迁移目标主机110,110b上执行访客虚拟机200的指令210。迁移目标主机110,110b的数据处理硬件112,112b可以执行指令210以提供具有至少一个关联的vCPU 206的虚拟机200。当访客虚拟机200在对非当前页面230,230a的指令210的指令流中遇到对页面230的页面引用或地址232的页面错误240时,访客虚拟机200可以停止执行指令210的指令流。非当前页面230,230a可以驻留在迁移源主机110,110a上,而不驻留在迁移目标主机110,110b上。在框306处,方法300可以包括由迁移目标主机110,110b确定访客虚拟机200何时遇到页面错误240。当继续执行指令210所需的页面230为迁移目标主机110,110b的存储器130,130b中的非当前时,迁移目标主机110,110b的数据处理硬件112遇到非当前页面错误240。当访客虚拟机200遇到页面错误240时,方法300可以包括以下内容。在框308处,方法300包括由迁移目标主机110,110b从迁移源主机110,110a请求非当前页面230,230a以在迁移目标主机110,110b上加载。可以由对包括非当前页面230,230a的地址232的非当前页面242的请求来请求非当前页面230,230。在框310处,方法300可以包括在迁移目标主机110,110b上执行或与迁移目标主机110,110b通信的仿真器250仿真对访客虚拟机200的指令210的指令流的继续执行。仿真器250可以通过处理指令210来继续仿真对指令210的继续执行。仿真器250可以充当停机的虚拟机200(和/或vCPU 206),绕过非当前页面错误240并且继续检查指令210以确定在非当前页面错误240之后,虚拟机200(和/或vCPU206)可能需要哪些页面230。在框312,方法300可以包括由仿真器250从所仿真的对指令210的指令流的继续执行或指令210的指令流中所仿真的指令212识别未来页面引用220。仿真的指令212可以通过检查指令210并且搁置页面230所需的值来确定指令210对其继续执行稍后需要哪些页面230来识别未来页面引用220。在一些示例中,仿真器250检查页面230与非当前页面230,230a的关系,以识别对未来页面230,230b的未来页面引用220。在框314处,方法300可以包括与对非当前页面242的请求并行地,由迁移目标主机110,110b从迁移源主机110,110a请求未来页面230,230b,以便将未来页面230,230b预取到迁移目标主机110,110b,同时在迁移目标主机110,110b上加载非当前页面230,230a。所识别的未来页面引用220可以包括识别特定未来页面230b的地址232。迁移源主机110,110a可以经由未来页面返回254,将所识别的未来页面230b部分或完全地传送到迁移目标主机110,110b。非当前页面返回244可以返回非当前页面230,230a。非当前页面返回244和未来页面返回254可以并行地操作。
在一些实施方式中,方法300包括当仿真器250识别相应的未来页面引用220时,经由未来页面请求252,从迁移源主机110,110b请求未来页面230,230b。一个或多个未来页面请求252在非当前页面请求242和非当前页面返回244期间可以处于正在进行中。在仿真对访客虚拟机200的指令210的指令流的继续执行时,方法300可以包括搁置取决于非当前页面230,230a的加载值的指令210,允许仿真器250识别除未来页面错误或非当前页面错误240的未来页面引用220。
迁移目标主机110,110b可以包括一个或多个计算设备400或处理器112,以及与一个或多个计算设备400或处理器112通信的一个或多个存储器主机或存储器130,一个或多个存储器主机或存储器130存储页面230。方法300还可以包括基于未来页面引用220和非当前页面230,230a之间的关系来识别未来页面引用220。该关系可以包括父页面230与一个或多个子页面230之间的页面导航映射260。页面导航映射260可以是父页面230的相关使用和子页面230的先前使用的连接。在一些示例中,识别未来页面引用220包括在至少一个指令210中识别与所识别的未来页面引用220相关联的至少一个附加的未来页面引用220。方法300还可以包括当非当前页面230,230a已经被递送到迁移目标主机110,110b时,终止由仿真器250仿真对指令210的指令流的继续执行。非当前页面230,230a可以由非当前页面返回244从迁移源主机110,110a返回。方法300可以进一步包括当非当前页面230,230a驻留在迁移目标主机110,110b上时,在迁移目标主机110,110b上继续执行访客虚拟机200的指令210的指令流。从方法300的所仿真的对指令210的指令流的继续执行中识别未来页面引用220可以进一步包括识别所识别的未来页面引用220的未来页面地址232。
图4是可以是用于实现本文档中所述的系统和方法的主机110的示例性计算设备400的示意图。计算设备400旨在表示各种形式的数字计算机,诸如膝上型计算机、台式机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。这里所示的组件、它们的连接和关系以及它们的功能仅仅是示例性的,并不意味着限制本文中所述和/或要求保护的发明的实施方式。
计算设备400包括数据处理硬件112、存储器130、存储设备430、连接到存储器130和高速扩展端口450的高速接口/控制器440、以及连接到低速总线470和存储设备430的低速接口/控制器460。组件112,130,430,440,450和460中的每一个使用各种总线互连,并且可以安装在公共主板上或以其他方式适当地安装。处理器112可以处理用于在计算设备400内执行的指令,包括存储在存储器130中或存储设备430上的指令,以在诸如耦接到高速接口440的显示器480的外部输入/输出设备上显示图形用户界面(GUI)的图形信息。在其他实施方式中,可以适当地使用多个处理器和/或多个总线以及多个存储器和多个类型的存储器。此外,可以连接多个计算设备400,每个设备提供必要操作的一部分(例如,作为服务器组、刀片服务器组或多处理器系统)。
存储器130在计算设备400内非瞬时地存储信息。存储器130可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非瞬时存储器130可以是用于在临时或永久的基础上存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备400使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,例如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及磁盘或磁带。
存储设备430能够为计算设备400提供大容量存储。在一些实施方式中,存储设备430是计算机可读介质。在各种不同的实施方式中,存储设备430可以是软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其他类似的固态存储设备、或者包括在存储区域网络或其他配置中的设备的设备阵列。在附加的实施方式中,计算机程序产品被有形地体现在信息载体中。计算机程序产品包含指令,当指令被执行时,执行一个或多个方法,例如上述的方法。信息载体是计算机或机器可读介质,诸如存储器130、存储设备430或处理器410上的存储器。
高速控制器440管理计算设备400的带宽密集型操作,而低速控制器460管理较低带宽密集型操作。这种职责分配只是示例性的。在一些实施方式中,高速控制器440耦接到存储器130、显示器480(例如,通过图形处理器或加速器)并且耦接到高速扩展端口450,高速扩展端口450可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器460耦接到存储设备430和低速扩展端口470。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口470可以耦接到一个或多个输入/输出设备,诸如键盘、指示设备、扫描仪、或诸如交换机或路由器的联网设备,例如通过网络适配器。
计算设备400可以以多种不同的形式来实现,如图所示。例如,它可以被实现为标准服务器400a,或者在一组这样的服务器400a被多次实现、实现为膝上型计算机400b或实现为机架式服务器系统400c的一部分。本文所述的系统和技术的各种实施方式可以在数字电子和/或光学电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些各种实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,所述可编程系统包括可以是专用或通用的至少一个可编程处理器(其被耦接以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令以及向其传送数据和指令)。
已经描述了许多实施方式。然而,将理解到,在不脱离本公开的精神和范围的情况下,可以做出各种改进。因此,其他实施方式在所附权利要求的范围内。例如,权利要求中所述的动作可以以不同的顺序执行并且仍然实现期望的结果。
Claims (20)
1.一种用于推测性虚拟机执行的方法,包括:
将访客虚拟机从迁移源主机后复制迁移到迁移目标主机,所述访客虚拟机具有指令的指令流;
在所述迁移目标主机上执行所述访客虚拟机的所述指令流,当所述访客虚拟机遇到对非当前页面的所述指令流中的页面引用的页面错误时,所述访客虚拟机停止所述指令流的执行,所述非当前页面驻留在所述迁移源主机上,而不是驻留在所述迁移目标主机上;
由所述迁移目标主机确定所述访客虚拟机何时遇到所述页面错误;以及
当所述访客虚拟机遇到所述页面错误时:
由所述迁移目标主机从所述迁移源主机请求所述非当前页面,以在所述迁移目标主机上加载;
于在所述迁移目标主机上执行或与所述迁移目标主机通信的仿真器上仿真所述访客虚拟机的所述指令流的继续执行;
由所述仿真器从所仿真的所述指令流的继续执行识别对未来页面的未来页面引用;以及
与对所述非当前页面的所述非当前页面请求并行地,由所述迁移目标主机从所述迁移源主机请求与所识别的未来页面引用相对应的所述未来页面,以便在所述迁移目标主机上加载所述非当前页面的同时,将所述未来页面预取到所述迁移目标主机。
2.如权利要求1所述的方法,进一步包括在所述未来页面引用被识别时,从所述迁移源主机请求所述未来页面。
3.如权利要求1所述的方法,进一步包括在仿真所述访客虚拟机的所述指令流的所述继续执行的同时,搁置依赖于所述非当前页面的加载值的指令,允许所述仿真器识别除未来页面错误外的未来页面引用。
4.如权利要求1所述的方法,其中,所述迁移目标主机包括:
一个或多个计算设备;以及
与所述一个或多个计算设备通信的一个或多个存储器主机,所述一个或多个存储器主机存储页面。
5.如权利要求1所述的方法,进一步包括基于所述未来页面引用和所述非当前页面之间的关系,识别所述未来页面引用。
6.如权利要求5所述的方法,其中,所述关系包括父页面与一个或多个子页面之间的页面导航映射。
7.如权利要求1所述的方法,其中,识别所述未来页面引用包括在与所识别的未来页面引用相关联的至少一个指令中,识别至少一个附加的未来页面引用。
8.如权利要求1所述的方法,进一步包括当所述非当前页面已经被递送到所述迁移目标主机时,由所述仿真器终止所述指令流的所述继续执行的仿真。
9.如权利要求8所述的方法,进一步包括当所述非当前页面驻留在所述迁移目标主机上时,在所述迁移目标主机上继续所述访客虚拟机的所述指令流的执行。
10.如权利要求1所述的方法,其中,从所仿真的所述指令流的继续执行中识别未来页面引用进一步包括识别所识别的未来页面引用的未来页面地址。
11.一种迁移目标主机,包括:
数据处理硬件;以及
与所述数据处理硬件通信的存储器硬件,所述存储器硬件存储指令,所述指令当在所述数据处理硬件上执行时,使得所述数据处理硬件执行操作,所述操作包括:
将访客虚拟机从迁移源主机后复制迁移到所述存储器硬件,所述访客虚拟机具有指令的指令流;
执行所述访客虚拟机的所述指令流,当所述访客虚拟机遇到对非当前页面的所述指令流中的页面引用的页面错误时,所述访客虚拟机停止所述指令流的执行,所述非当前页面驻留在所述迁移源主机上,而不是驻留在所述迁移目标主机的所述存储器硬件上;
确定所述访客虚拟机何时遇到所述页面错误;以及
当所述访客虚拟机遇到所述页面错误时:
从所述迁移源主机请求所述非当前页面,以在所述迁移目标主机的所述存储器硬件上加载;
于在所述数据处理硬件上执行或与所述迁移目标主机通信的仿真器上仿真所述访客虚拟机的所述指令流的继续执行;
由所述仿真器从所仿真的所述指令流的继续执行识别对未来页面的未来页面引用;以及
与所述非当前页面请求并行地,从所述迁移源主机请求与所识别的未来页面引用相对应的所述未来页面,以便在所述迁移目标主机的所述存储器硬件上加载所述非当前页面的同时,将所述未来页面预取到所述迁移目标主机的所述存储器硬件。
12.如权利要求11所述的迁移目标主机,其中,所述操作进一步包括在所述未来页面引用被识别时,从所述迁移源主机请求所识别的未来页面引用。
13.如权利要求11所述的迁移目标主机,其中,所述操作进一步包括在仿真所述访客虚拟机的所述指令流的所述继续执行的同时,搁置依赖于所述非当前页面的加载值的指令,允许所述仿真器识别除未来页面错误外的未来页面引用。
14.如权利要求11所述的迁移目标主机,其中,所述存储器硬件进一步包括与所述数据处理硬件通信的一个或多个存储器主机,所述一个或多个存储器主机存储页面。
15.如权利要求11所述的迁移目标主机,其中,所述操作进一步包括基于所述未来页面引用和所述非当前页面之间的关系,识别所述未来页面引用。
16.如权利要求15所述的迁移目标主机,其中,所述关系包括父页面与一个或多个子页面之间的页面导航映射。
17.如权利要求11所述的迁移目标主机,其中,识别所述未来页面引用的操作包括在与所识别的未来页面引用相关联的至少一个指令中,识别至少未来的一个页面引用。
18.如权利要求11所述的迁移目标主机,其中,所述操作进一步包括当所述非当前页面已经被递送到所述迁移目标主机的所述存储器硬件时,由所述仿真器终止所述指令流的所述继续执行的仿真。
19.如权利要求18所述的迁移目标主机,其中,所述操作进一步包括当所述非当前页面驻留在所述迁移目标主机的所述存储器硬件上时,继续所述访客虚拟机的所述指令流的执行。
20.如权利要求11所述的迁移目标主机,其中,从所仿真的所述指令流的继续执行中识别未来页面引用进一步包括识别所识别的未来页面引用的未来页面地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/178,937 | 2016-06-10 | ||
US15/178,937 US9880872B2 (en) | 2016-06-10 | 2016-06-10 | Post-copy based live virtual machines migration via speculative execution and pre-paging |
PCT/US2017/032617 WO2017213802A1 (en) | 2016-06-10 | 2017-05-15 | Speculative virtual machine execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108713189A CN108713189A (zh) | 2018-10-26 |
CN108713189B true CN108713189B (zh) | 2020-05-22 |
Family
ID=58794154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780016248.9A Active CN108713189B (zh) | 2016-06-10 | 2017-05-15 | 推测性虚拟机执行 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9880872B2 (zh) |
EP (2) | EP3570166B1 (zh) |
JP (2) | JP6768823B2 (zh) |
KR (1) | KR102044717B1 (zh) |
CN (1) | CN108713189B (zh) |
WO (1) | WO2017213802A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797878A (zh) * | 2016-09-06 | 2018-03-13 | 阿里巴巴集团控股有限公司 | 虚拟机热迁移处理方法及系统 |
CN108595250B (zh) * | 2018-05-02 | 2021-05-28 | 南京大学 | 一种面向IaaS云平台的资源调度效率优化方法及系统 |
JP7010272B2 (ja) * | 2019-10-08 | 2022-01-26 | 横河電機株式会社 | リアルタイム通信処理システム、およびリアルタイム通信処理方法 |
US11409619B2 (en) | 2020-04-29 | 2022-08-09 | The Research Foundation For The State University Of New York | Recovering a virtual machine after failure of post-copy live migration |
US11870846B2 (en) | 2021-02-25 | 2024-01-09 | Red Hat, Inc. | Post-copy migration cross cluster synchronization for post-copy migration of virtual machines |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2408481C (en) * | 2002-10-17 | 2009-10-06 | Ibm Canada Limited-Ibm Canada Limitee | Autonomic reallocation of memory among buffer pools |
US7404067B2 (en) * | 2003-09-08 | 2008-07-22 | Intel Corporation | Method and apparatus for efficient utilization for prescient instruction prefetch |
US7089370B2 (en) * | 2003-09-30 | 2006-08-08 | International Business Machines Corporation | Apparatus and method for pre-fetching page data using segment table data |
EP1589433A1 (en) * | 2004-04-20 | 2005-10-26 | Ecole Polytechnique Federale De Lausanne | Virtual memory window with dynamic prefetching support |
US20060095679A1 (en) * | 2004-10-28 | 2006-05-04 | Edirisooriya Samantha J | Method and apparatus for pushing data into a processor cache |
US7444498B2 (en) * | 2004-12-17 | 2008-10-28 | International Business Machines Corporation | Load lookahead prefetch for microprocessors |
US8903888B1 (en) * | 2006-10-27 | 2014-12-02 | Hewlett-Packard Development Company, L.P. | Retrieving data of a virtual machine based on demand to migrate the virtual machine between physical machines |
US8799494B1 (en) * | 2008-02-04 | 2014-08-05 | Symantec Corporation | Application streaming proactive failover |
US8151100B2 (en) * | 2008-02-06 | 2012-04-03 | Broadcom Corporation | Operating system for a computing device with handheld and extended computing units |
US8639886B2 (en) * | 2009-02-03 | 2014-01-28 | International Business Machines Corporation | Store-to-load forwarding mechanism for processor runahead mode operation |
US8490088B2 (en) | 2010-09-10 | 2013-07-16 | International Business Machines Corporation | On demand virtual machine image streaming |
US9086981B1 (en) * | 2010-11-02 | 2015-07-21 | Vmware, Inc. | Exporting guest spatial locality to hypervisors |
US8935506B1 (en) * | 2011-03-31 | 2015-01-13 | The Research Foundation For The State University Of New York | MemX: virtualization of cluster-wide memory |
JP5858371B2 (ja) * | 2012-05-31 | 2016-02-10 | 株式会社日立製作所 | 解析システム、計算機システム及び解析方法 |
US9547591B1 (en) * | 2012-09-28 | 2017-01-17 | EMC IP Holding Company LLC | System and method for cache management |
CN103049308B (zh) | 2012-11-30 | 2016-01-20 | 华为技术有限公司 | 实现虚拟机热迁移的方法、装置及系统 |
US9372726B2 (en) * | 2013-01-09 | 2016-06-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US9055119B2 (en) * | 2013-03-26 | 2015-06-09 | Vmware, Inc. | Method and system for VM-granular SSD/FLASH cache live migration |
JP2015022380A (ja) | 2013-07-16 | 2015-02-02 | 日本電信電話株式会社 | 情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム |
US9710386B1 (en) * | 2013-08-07 | 2017-07-18 | Veritas Technologies | Systems and methods for prefetching subsequent data segments in response to determining that requests for data originate from a sequential-access computing job |
US9454400B2 (en) | 2013-08-16 | 2016-09-27 | Red Hat Israel, Ltd. | Memory duplication by origin host in virtual machine live migration |
US9459902B2 (en) * | 2013-08-16 | 2016-10-04 | Red Hat Israel, Ltd. | Memory duplication by destination host in virtual machine live migration |
US9183035B2 (en) * | 2013-11-08 | 2015-11-10 | International Business Machines Corporation | Virtual machine migration with swap pages |
US9354918B2 (en) * | 2014-02-10 | 2016-05-31 | International Business Machines Corporation | Migrating local cache state with a virtual machine |
CN105095227B (zh) * | 2014-04-28 | 2019-03-26 | 小米科技有限责任公司 | 网页预加载的方法及装置 |
US10318325B2 (en) * | 2015-01-07 | 2019-06-11 | International Business Machines Corporation | Host-side cache migration |
WO2016202364A1 (en) * | 2015-06-16 | 2016-12-22 | Telefonaktiebolaget Lm Ericsson (Publ) | A method of live migration |
US9710401B2 (en) * | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
CN105512254B (zh) * | 2015-12-01 | 2018-11-13 | 上海携程商务有限公司 | 终端、网页信息预加载方法及系统 |
-
2016
- 2016-06-10 US US15/178,937 patent/US9880872B2/en active Active
-
2017
- 2017-05-15 KR KR1020187026616A patent/KR102044717B1/ko active IP Right Grant
- 2017-05-15 CN CN201780016248.9A patent/CN108713189B/zh active Active
- 2017-05-15 JP JP2018548748A patent/JP6768823B2/ja active Active
- 2017-05-15 EP EP19182269.1A patent/EP3570166B1/en active Active
- 2017-05-15 EP EP17726406.6A patent/EP3414658B1/en active Active
- 2017-05-15 WO PCT/US2017/032617 patent/WO2017213802A1/en active Application Filing
- 2017-12-20 US US15/849,505 patent/US10481940B2/en active Active
-
2020
- 2020-09-23 JP JP2020158874A patent/JP7047036B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20170357527A1 (en) | 2017-12-14 |
EP3570166B1 (en) | 2023-03-15 |
JP6768823B2 (ja) | 2020-10-14 |
US10481940B2 (en) | 2019-11-19 |
JP2019526083A (ja) | 2019-09-12 |
WO2017213802A1 (en) | 2017-12-14 |
JP7047036B2 (ja) | 2022-04-04 |
EP3414658B1 (en) | 2019-09-18 |
US9880872B2 (en) | 2018-01-30 |
CN108713189A (zh) | 2018-10-26 |
KR102044717B1 (ko) | 2019-12-02 |
EP3570166A1 (en) | 2019-11-20 |
US20180136963A1 (en) | 2018-05-17 |
JP2021007027A (ja) | 2021-01-21 |
EP3414658A1 (en) | 2018-12-19 |
KR20180112846A (ko) | 2018-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108713189B (zh) | 推测性虚拟机执行 | |
Ben-Yehuda et al. | The turtles project: Design and implementation of nested virtualization | |
US7313793B2 (en) | Method for forking or migrating a virtual machine | |
US8151263B1 (en) | Real time cloning of a virtual machine | |
US9063821B1 (en) | Method for updating operating system without memory reset | |
US8464259B2 (en) | Migrating virtual machines configured with direct access device drivers | |
US9304878B2 (en) | Providing multiple IO paths in a virtualized environment to support for high availability of virtual machines | |
US9052949B2 (en) | Scheduling a processor to support efficient migration of a virtual machine | |
US20150205542A1 (en) | Virtual machine migration in shared storage environment | |
Kozuch et al. | Migration without Virtualization. | |
US8621461B1 (en) | Virtual machine based operating system simulation using host ram-based emulation of persistent mass storage device | |
US20110320556A1 (en) | Techniques For Migrating A Virtual Machine Using Shared Storage | |
US10620963B2 (en) | Providing fallback drivers for IO devices in a computing system | |
Wang | Can “micro VM” become the next generation computing platform?: Performance comparison between light weight Virtual Machine, container, and traditional Virtual Machine | |
Fukai et al. | OS-independent live migration scheme for bare-metal clouds | |
US20230019814A1 (en) | Migration of virtual compute instances using remote direct memory access | |
US20240053983A1 (en) | Performance Optimized Task Duplication and Migration | |
US20240184612A1 (en) | Virtual machine live migration with direct-attached non-volatile memory express device | |
WO2019000358A1 (en) | LIVE MIGRATING ASSISTANCE TECHNIQUES FOR VIRTUALIZING GRAPHICS PROCESSING UNIT | |
Alliance | Virtualization: State of the art | |
Verboven et al. | Evaluating Nested Virtualization Support | |
Doddamani | Hyperfresh: Live Replacement of Hypervisor Using Lightweight Nested Virtualization | |
Sheuly | Resource Virtualization for Real-time Industrial Clouds | |
Wu et al. | Vshadow: Promoting Physical Servers into Virtualization World | |
CN117591252A (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 |