CN111213127A - 用于直接分配的设备的虚拟化操作 - Google Patents
用于直接分配的设备的虚拟化操作 Download PDFInfo
- Publication number
- CN111213127A CN111213127A CN201880067051.2A CN201880067051A CN111213127A CN 111213127 A CN111213127 A CN 111213127A CN 201880067051 A CN201880067051 A CN 201880067051A CN 111213127 A CN111213127 A CN 111213127A
- Authority
- CN
- China
- Prior art keywords
- hardware
- state
- hardware device
- virtualization layer
- hypervisor
- 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.)
- Granted
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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3246—Power saving characterised by the action undertaken by software initiated power-off
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
实施例涉及实现对已经直接分配有硬件设备的虚拟机(VM)的状态操纵。管理程序利用访客操作***来管理VM的执行。管理程序将物理的(非虚拟的)硬件设备直接分配给VM,使得VM拥有硬件设备的排他使用并且访客操作***使用硬件,而无需管理程序进行虚拟化抽象/映射。当需要暂停、挂起、恢复或以类似方式操纵VM时,管理程序与VM通信以引起访客操作***执行对硬件设备来说可能是必要的任何操作。管理程序和VM/访客可以通过各种机制进行通信,诸如与访客驱动程序通信的主机驱动程序、由计算机的硬件总线支持的虚拟总线服务、虚拟总线通道等。
Description
背景技术
在很多形式的计算机虚拟化中,由于许多已知的优点,机器或***虚拟化已经变得很普遍。***虚拟化涉及抽象计算机的硬件资源,并且将计算机呈现为虚拟机。被称为管理程序(hypervisor)或虚拟机监测器(VMM)的软件层直接运行在计算机的硬件上。管理程序通过虚拟机(VM)管理对计算机的硬件的访问,这些VM也称为分区、域或访客(guest)。每个VM是能够托管其自己的访客操作***的软件环境或构造。管理程序管理VM对计算机的硬件、特别是处理硬件和存储器的共享。访客操作***与计算机硬件之间的软件管理程序层的存在对访客操作***几乎是透明的。
用于机器虚拟化的正在开发中的技术是将硬件设备直接分配给VM的能力。该技术(称为直接设备分配(DDA))允许虚拟化层(“具体实施方式”中讨论的术语)将硬件设备移交给VM并且然后VM直接使用硬件设备而无需实质性(如果有的话)参与虚拟化层以访问和使用硬件设备。也就是说,硬件设备由VM使用,而无需虚拟化层进行虚拟化抽象或映射,并且在一些情况下,即使虚拟化层已经暂停VM或尚未调度CPU时间用于VM,主机和其他VM也都不使用硬件设备。
尽管DDA为VM提供了快速的性能,但是存在只有本发明人才意识到的一些缺点。大多数机器虚拟化***具有控制VM的执行状态的功能。用于控制VM状态的典型操作包括暂停、保存、恢复、迁移等。这样的操作在云环境中特别有用。云提供商可能需要对租户或访客透明地改变VM的状态。例如,主机可能需要对主机/虚拟化软件进行安全更新。正如只有发明人才意识到的,不同于通知租户或客户需要保存或关闭VM才允许重新启动主机,云提供商偏好能够透明地挂起租户的VM,使得主机能够被更新和重新启动,而不会显著干扰租户的VM的操作并且也不需要租户采取任何措施。尽管从理论上讲虚拟化***可以保留或暂停由管理程序虚拟化的VM的硬件状态(参见例如美国专利公开2014/0157264),但是虚拟化***不可能在管理程序的权限范围之外在直接分配给VM的硬件上执行这样的操作。也就是说,由于直接分配的设备归VM所有,因此无法在直接分配有硬件的VM上执行用于控制VM状态的操作。
需要使得机器虚拟化***能够控制VM的状态并且,其考虑了直接分配给VM的硬件的存在。
发明内容
包括以下发明内容仅是为了介绍下面的具体实施方式中讨论的一些概念。该概述不是全面的,并非旨在描述由最后提出的权利要求书阐明的所要求保护的主题的范围。
实施例涉及实现对已经直接分配有硬件设备的虚拟机(VM)的状态操纵。管理程序利用访客操作***来管理VM的执行。管理程序将物理的(非虚拟的)硬件设备直接分配给VM,使得VM拥有硬件设备的排他使用并且访客操作***使用物理硬件设备,而无需管理程序进行虚拟化抽象/映射。当需要暂停、挂起、恢复或以类似方式操纵VM时,管理程序与VM通信以引起访客操作***执行对硬件设备来说可能是必要的任何操作。管理程序和VM/访客可以通过各种机制进行通信,诸如与访客驱动程序通信的主机驱动程序、由计算机的硬件总线支持的虚拟总线服务、虚拟总线通道等。
下面参考结合附图考虑的以下具体实施方式来解释许多附带特征。
附图说明
根据参考附图阅读的以下就同时实施方式,将能够更好地理解本说明书,其中在附图中,相似的附图标记用于指示相似的部分。
图1示出了包括已知类型的管理程序的示例虚拟化环境。
图2示出了用于促进具有直接分配的硬件设备的VM上进行状态操作的一般过程。
图3示出了VM和虚拟化层如何协作以使得VM上的状态操作能够在直接分配的硬件上执行。
图4示出了适用于某些类型的硬件设备的实施例。
图5示出了与图4相对应的过程。
图6示出了由驱动程序之间的通信执行的暂停操作的示例。
图7示出了可以在其上实现上述实施例的计算设备的细节。
具体实施方式
图1示出了包括已知类型的管理程序100的示例虚拟化环境。计算机102具有硬件104,包括中央处理单元(CPU)106、存储器108、网络接口卡(NIC)110、非易失性存储装置112、以及未示出的其他组件,诸如总线、显示器和/或显示适配器等。管理程序100管理和促进虚拟机(VM)114、116的执行。每个虚拟机114、116通常已经对设备进行虚拟化,包括其中存储有访客/主机操作***118、120的虚拟盘。管理程序100与在特权VM 116中执行的主机操作***120协作,提供机器或***虚拟化。
虚拟化的任务可以以已知方式在管理程序100与主机操作***120之间被分布。在某些情况下,主机操作***120可能仅包含最少的虚拟化元素,诸如用于管理管理程序100的工具和用户界面。在其他情况下,主机操作***120可能包括以下一项或多项:设备虚拟化管理、VM间通信设施、运行设备驱动程序、启动或停止其他VM。在一些实施例中,虚拟化可能主要发生在管理程序内核(或***到现成的内核(stock kernel)的虚拟化模块)内,并且不存在特权VM 116。
图2示出了用于促进对已经直接分配有硬件设备的VM进行执行状态操作的一般过程。假设主机计算机具有虚拟化层(以下称为“管理程序”)、VM 114和直接可分配给VM的硬件设备。硬件设备可以是任何类型的设备,包括图形处理单元(GPU)、诸如固态驱动程序(SSD)等的存储设备、NIC等。硬件设备可以是本地附接到主机102的物理总线的设备(例如,***连接接口(PCI)或PCI-e)、经由数据网络可访问的设备等。
在步骤140,管理程序100将硬件设备直接分配给VM 114。如下面参考图3所描述的,这可以涉及诸如向VM 114提供设备的标识符以及注册设备与VM 114的关联等步骤。在步骤142,VM 114的访客操作***118通过将设备并入其设备管理堆栈中(例如将设备连接到其虚拟总线)来对设备分配进行响应。在步骤144,在硬件设备已经被附接到VM 114并且VM 114直接使用硬件设备之后,虚拟化层指示VM执行诸如暂停、保存、恢复等的状态操作。该请求可以以下面描述的不同方式而被呈现和实现。例如,可以在虚拟总线上向VM发送适当的信号,该虚拟总线提供管理程序与VM之间的通信。在步骤146,VM的访客操作***通过在直接分配的硬件设备上执行相关状态操作来对来自虚拟化层的信号进行响应。
图3示出了VM 114和虚拟化层160如何协作以使得对VM 114的状态操作在直接分配的硬件上被执行。虚拟化层160是I型管理程序或虚拟化内核模块以及可能的其他特权组件(诸如主机操作***120)的任何组合。虚拟化层可以包括灵活的设备管理器162。如果存在,则灵活的设备管理器162处理标签跟踪硬件设备到VM的直接分配。尽管直接分配的硬件设备是由VM使用的,而不是由主机使用的,但是主机或虚拟化层160仍然需要知道哪些硬件已经被直接分配,使得其可以避免与已经分配给其的VM发生冲突。因此,灵活的设备管理器162可以维持设备映射164以跟踪哪些硬件设备已经被分配给哪些VM。
初始地,虚拟化层160将硬件设备166分配给VM 114。执行分配过程165(阶段A)。选择硬件设备166,并且从硬件设备166获取设备标识符(ID)。灵活的设备管理器162将条目168添加到设备映射164。新条目168包括设备ID和VM 114的ID。条目168指示硬件设备166被直接分配并且指示其被分配给哪个VM。作为分配过程166的一部分,灵活的设备管理器162经由处理管理程序VM和VM-VM通信的虚拟总线的通道169与VM 114通信。灵活的设备管理器162将设备ID发送给VM。虚拟化层160还采取步骤以将硬件设备166分配给VM,例如向VM的虚拟计算机总线发信号通知新设备可用,这允许访客操作***添加硬件设备166。
响应于来自虚拟化层的直接分配信号或消息,VM 114执行附接过程170(阶段B)。实际上,VM和访客操作***以添加设备的常规方式来添加硬件设备;将设备添加到虚拟计算机总线(例如,虚拟***设备连接接口(PCI))设备树,根据需要设置设备驱动程序,等等。然后,访客操作***就能够直接和排他性地访问和使用硬件设备166。
一旦VM和访客操作***已经开始使用直接分配的硬件设备166,出于各种原因,将需要VM状态管理操作。执行状态操作(诸如暂停、保存、恢复和迁移VM)是公知的,并且对于VM在管理计算资源时扮演的角色是至关重要的。然而,如在背景技术中所讨论的,这样的操作对于直接分配有设备的VM是不实际的。
当需要VM状态操作时,状态操作过程172(阶段C)在虚拟化层开始。状态操作可以以多种方式被发起。网络控制器或云结构可以向主机发送消息以指示要在哪个VM上执行哪个操作。主机可以基于用户命令或触发事件来发起操作。在任何情况下,虚拟化层本身可以作为VM状态操作的一部分来执行各种功能。被虚拟化以用于目标VM的硬件的这样的先前已知的功能包括保存或注水目标VM的存储器以及捕获或恢复目标的CPU状态,仅举几例。由虚拟化层执行的新的状态管理功能是检查目标VM是否具有直接分配的设备。可以在设备映射164中搜索目标VM的ID;它的存在表明目标VM已经直接分配有硬件,并且因此其他步骤将要被执行。然后,虚拟化层经由虚拟总线通道169向VM发送消息。该消息至少指示要执行的操作的类型;例如,保存状态,恢复/加载状态,暂停,改变电源状态,等等。可选地,消息(或相关消息)包括来自与目标VM相关联的任何硬件设备的设备映射164的标识符。是否需要向VM标识直接附接的硬件设备可以取决于VM或访客操作***是否能够标识直接附接的设备。如果访客能够这样做,则虚拟化层仅指示要被执行的状态操作的类型就足够了。
目标VM通过执行设备状态改变过程174来对来自虚拟化层和通道169的状态操作信号进行响应。如果来自虚拟化层的消息包括硬件设备的ID,则访客操作***可以使用该ID以标识设备。如果访客操作***能够标识直接附接的硬件,则可以省略来自虚拟化层的设备ID。访客操作***可以通过其连接方式、安装方式或其他标志来识别直接分配的硬件设备。访客操作***通过与硬件设备进行普通协作所使用的相同通信路径来与目标硬件设备进行通信,例如通过包括设备驱动程序、虚拟PCI连接等的设备/存储堆栈。
由访客操作***调用的硬件设备的功能将取决于单个设备和要执行的操作的类型。一些类型的硬件设备可以具有虚拟化支持,并且可以很容易执行一些功能,诸如暂停执行,将状态转储到存储器缓冲器,从存储器中恢复状态,同步到已知状态,同步设备的多个部分,等等。例如,符合虚拟化标准(诸如Intel VT-d(TM))的设备将易于使用。符合功率标准(诸如ACPI(高级配置和电源接口))的设备也可能很方便,因为可以输入某些电源状态以适应虚拟化操作,诸如暂停或挂起VM。这种支持的可用性和性质可以指定从虚拟化层传递给目标VM的请求的通信路径和内容。具有新的执行状态功能的新设备正在出现,并且也可以使用。直接可分配的设备还可以包括物理设备的单独可分配的物理部分。例如,一些网络接口可以分为多个子设备,每个子设备可以被直接分配。
图4示出了适用于一些类型的硬件设备的实施例。VM工作进程200由虚拟化层管理(例如,作为管理程序线程或主机操作***中的线程)。VM工作进程200可以是虚拟化***用来表示VM的任何类型的对象。初始地,主机侧的设备驱动程序向虚拟化层报告直接可分配硬件设备166的可用性。虚拟PCI(vPCI)服务202管理PCI硬件204与vPCI设备206之间的虚拟化映射。经由vPCI服务202对PCI硬件204的可访问性使得VM工作进程200能够将PCI通信注入vPCI设备206中。当VM工作进程200确定目标VM需要状态操作时,工作进程200为该vPCI服务202制定消息,赋予其PCI-vPCI映射角色的该消息能够将PCI通信注入vPCI设备206中。对于vPCI设备206,该请求看起来像任何其他PCI消息一样。在一个实施例中,使用来自硬件设备166的记录的信息,由vPCI服务202和/或VM工作进程200将请求寻址到硬件设备166。在另一实施例中,请求通过PCI/vPCI通道传递给负责硬件设备166的调度操作的硬件调度器208。硬件调度器208有助于避免与访客操作***对硬件设备166的使用发生冲突。在任一种情况下,传递给硬件设备166的请求都将标识要被执行的操作的类型(例如,改变为诸如热或冷状态等特定电源状态)。
硬件设备166接收请求,尝试执行所请求的状态操作,并且然后通过同一通信路径输出返回值(例如,成功/失败代码)以及可能的其他返回数据。如果VM工作进程200接收回成功的指示,则VM工作进程200可以继续进行被引导到VM的执行状态的其他操作,例如,捕获或恢复存储器,虚拟CPU状态,执行实时迁移,等等。尽管硬件设备166在已经被直接分配时对于虚拟化层是不透明的,但是对硬件设备166的了解以及经由虚拟化总线与其通信的能力使得虚拟化层可以向硬件设备166发送指令。
图5示出了与图4相对应的过程。作为示例,硬件设备166将被假定为GPU。在步骤220,虚拟化层将物理GPU设备直接分配给VM。如上所述,直接分配可以使用主机的硬件总线(例如,PCI)和虚拟化***的虚拟总线(例如,vPCI)来实现。对于目标VM和访客操作***,所分配的GPU只是另一PCI设备。
在步骤222,可能在VM工作进程的发起下,虚拟化层执行VM状态操作,在该示例中为暂停操作。在一个实施例中,虚拟化层保留对GPU向VM的分配的指示,并且在此基础上,虚拟化层使用PCI/vPCI路径向访客/VM注入请求。在另一实施例中,虚拟化层不知道目标VM是否已经直接分配有硬件,假设这是可能的,并且向目标VM发送盲请求。VM/访客接收盲通用操作请求(例如,暂停),如果不适用则将其忽略,或者如果适用则将其转换为给GPU的vPCI请求,并且返回有关该请求是否被VM/访客接受的反馈。
在步骤224,硬件调度器(例如,图形调度器)通过在目标VM的vPCI上发出GPU的电源状态改变来对请求进行操作。图形硬件调度器还可以使用其调度功能来暂停正在馈送给GPU的图形工作。在步骤226,GPU改变电源状态以执行暂停并且返回成功或失败代码,硬件调度器可以在步骤228将成功或失败代码推送给VM的vPCI上,该代码在此由虚拟化层中的vPCI服务被拦截并且传递给VM工作进程,然后,VM工作进程可以决定总体暂停操作是应当继续进行、被视为成功完成、还是由于失败而撤消。
调度访客对虚拟和/或物理硬件的访客使用的访客硬件调度器(例如,内核模块或服务)是主机对访客进行干预的有用点,因为调度器是异步控制的点;调度器是访问的仲裁程序,可能已经具有用于排队请求的队列,等等。因此,调度器可以进行各种操作,如隐藏已经被暂停、断电(热或冷)的直接分配的设备的不存在,或者以其他方式避免由于相关硬件设备的可能的暂时不可用而导致的故障。
图6示出了由驱动程序之间的通信执行的暂停操作的示例。驱动程序可以使用虚拟总线通道169(不要与VM的虚拟总线设备混淆)进行通信以进行VM到管理程序的通信。在该示例中,要在目标VM上执行的VM状态操作是将VM的状态保存到缓冲器。VM状态操作可能尤其需要保存直接附接的硬件设备的状态,该硬件设备可以连接到目标VM的vPCI设备206。与上面的状态操作类似,VM工作进程200或VM的等效管理程序表示向灵活的设备管理器162发出保存请求。该请求指示请求的类型,并且还可以标识目标直接附接的硬件设备166。请求可以包括目标VM将在其中存储硬件设备166的硬件状态的存储器位置指针或存储地址。
在该示例中,在主机(虚拟化)侧存在主机驱动程序240,该主机驱动程序240可以被配置为驱动硬件设备166(尽管在设备直接附接到VM时实际上并未驱动它)。与硬件设备166兼容的同一驱动程序或另一访客驱动程序242通过vPCI设备206与访客操作***通信。驱动程序被设计为经由虚拟总线通道169彼此通信。当主机驱动程序240接收到保存硬件设备的状态的请求时,主机驱动程序240发信号通知访客驱动程序242。访客驱动程序242经由vPCI设备206向硬件设备166发送请求,可能包括从虚拟化层接收的缓冲器位置。在步骤244,硬件设备166通过将其硬件状态存储到所提供的缓冲器并且提供沿着相同的通信路径返回的返回值来执行所请求的保存操作。可以使用相同的技术来实现其他类型的VM状态操作。例如,可以通过将硬件设备166的先前存储的状态的位置传递给VM/访客来执行状态恢复操作,硬件设备166使用该位置来恢复其先前恢复的状态并且恢复执行。
应当注意,虚拟总线是由虚拟化层提供以使得能够根据定义的命令(可能在主机侧和访客侧)进行灵活的消息传递的通用消息***。示例包括微软的VM总线、Xen的XenBus、VMWare的VMCI套接字,仅举几例。虚拟总线不应当与VM/访客的虚拟总线设备混淆。虚拟总线设备(例如,vPCI设备)是驻留在访客中的模拟总线设备。虚拟总线设备可以依赖于虚拟化层的虚拟总线以与主机交换消息。此外,尽管虚拟总线可能很方便,但是可以利用任何主机访客通信路径,包括网络路径(主机可以将分组传输给访客,而访客中的代理可以处理经由网络分组接收的上述请求)、专用硬件门铃、主机和访客直接可访问的共享存储器页面等。
进一步关于术语,为了方便,在此使用术语“虚拟机”。该术语也被认为是指虚拟化“分区”以及与VM相同的其他等同物。
在到VM或访客操作***的给定通道的情况下,存在管理程序可以控制其他类型的操作。在大多数情况下,即使可以直接分配设备,主机也仍然具有访问设备本身的能力。然而,无限制地这样做可能会干扰访客与设备的交互。即使由主机对设备进行简单的轮询也会造成问题。如果主机能够确保不会影响访客,则主机与设备的交互将不会有太大问题。例如,如果主机将相关VM置于足够的空闲状态(不关闭电源),诸如暂停VM的虚拟CPU,则主机将可能能够与设备进行交互而无需担心冲突。
图7示出了可以在其上实现上述实施例的计算设备102的细节。本文中的技术公开将满足程序员编写软件和/或配置可重新配置的处理硬件(例如,现场可编程门阵列(FPGA))和/或设计专用集成电路(ASIC)等,以在计算设备220上运行以实现本文中描述的任何特征或实施例的需求。
计算设备102可以具有一个或多个显示器322、一个或多个网络接口324、以及存储硬件326和处理硬件328,它们可以是以下中的任何一个或多个的组合:中央处理单元、图形处理单元、模数转换器、总线芯片、FPGA、ASIC、专用标准产品(ASSP)或复杂可编程逻辑器件(CPLD)等。存储硬件326可以是磁性存储、静态存储器、易失性存储器、非易失性存储器、光学或磁性可读物等的任何组合。本文中使用的术语“存储装置”的含义并不是指信号或能量本身,而是指物理装置和物质的状态。计算设备102的硬件元件可以以机器计算领域中众所周知的方式进行协作。另外,输入设备可以与计算设备102集成或与计算设备102通信。计算设备102可以具有任何形状因数,或者可以在任何类型的包围设备中使用。计算设备102可以是手持设备的形式,诸如智能电话、平板计算机、游戏设备、服务器、机架安装或背板式机载计算机、片上***等。
以上讨论的实施例和特征可以以被存储在易失性或非易失性计算机或设备可读存储硬件中的信息的形式来实现。这被认为至少包括硬件,诸如光存储装置(例如,光盘只读存储器(CD-ROM))、磁性介质、闪存只读存储器(ROM)、或将数字信息存储到其中以使得处理硬件228可以容易地获取它们的任何装置。所存储的信息可以采用以下形式:机器可执行指令(例如,编译的可执行二进制代码)、源代码、字节码、或者可以用于启用或配置计算设备以执行上面讨论的各种实施例的任何其他信息。这也被认为至少包括在执行实施例的程序的执行期间存储诸如中央处理器(CPU)指令等信息的易失性存储器(诸如随机存取存储器(RAM)和/或虚拟存储器),以及存储允许加载或执行程序或可执行文件的信息的非易失性介质。可以在任何类型的计算设备上执行实施例和特征,包括便携式设备、工作站、服务器、移动无线设备等。
Claims (15)
1.一种由包括处理硬件、存储硬件和硬件设备的计算机执行的方法,所述方法包括:
提供虚拟化层,所述虚拟化层被配置为将设备直接分配给由所述虚拟化层管理的虚拟机(VM),所述虚拟化层包括管理程序,其中所述硬件设备被直接分配给VM,使得所述VM直接而不是通过所述虚拟化层访问所述硬件设备,所述VM包括访客操作***,所述硬件设备被排他性地附接到所述访客操作***;
由所述虚拟化层接收或者生成对所述VM执行状态操作的第一请求,所述状态操作与所述VM的执行状态有关;
在所述虚拟化层与所述VM之间建立通信通道;
通过所述通信通道将所述第一请求从所述虚拟化层传递到所述VM;以及
由所述访客操作***通过以下来对所述第一请求进行响应:发信号通知直接附接的所述硬件设备,以在这样附接的同时与所述操作相一致地改变状态。
2.根据权利要求1所述的方法,其中所述状态操作包括挂起、保存或恢复所述VM的执行状态。
3.根据权利要求1所述的方法,其中所述通信通道在虚拟机总线上被建立,所述虚拟机总线提供VM与所述管理程序之间以及VM之间的通信通道,其中所述发信号通知在所述访客操作***的虚拟总线设备上被执行,其中所述虚拟总线设备的通信由所述虚拟机总线传送,并且其中所述方法还包括经由所述通信通道来提供所述硬件设备的操作的成功或失败的指示,所述虚拟总线设备通过所述虚拟化层被映射到物理总线。
4.根据权利要求1所述的方法,还包括由所述虚拟化层维持指示哪些硬件设备被直接分配给哪些VM的分配信息,所述分配信息包括所述硬件设备已经被直接分配给所述VM的记录,并且其中所述第一请求根据所述分配信息中的所述记录而被引导到所述VM。
5.根据权利要求1所述的方法,其中被发信号通知到所述硬件设备的所述状态操作包括引起所述硬件设备至少部分停止执行的功率改变状态,并且其中由所述虚拟化层对所述VM执行的所述状态操作包括挂起或暂停所述VM。
6.根据权利要求5所述的方法,还包括:根据所述硬件设备的所述改变状态来保存所述硬件设备的状态,重新启动所述计算机,以及然后通过将所述硬件设备的保存的所述状态加载回所述硬件设备中来恢复所述VM的执行。
7.一种由包括处理硬件和存储硬件的计算设备执行的方法,所述方法包括:
执行管理程序,所述管理程序管理虚拟机在所述计算设备上的执行,包括硬件设备被直接分配给的虚拟机(VM),使得所述硬件设备被直接映射到所述VM,并且所述VM直接访问所述硬件设备而没有所述管理程序的介入,并且同时所述管理程序正管理所述VM在所述处理硬件和所述存储硬件上的执行;
由所述管理程序接收对暂停并且保存所述VM的状态的请求,并且作为响应,请求所述VM暂停并且保存所述硬件设备的所述状态;以及
由所述VM通过所述VM的访客操作***直接指示所述硬件设备暂停并且保存所述硬件设备的所述状态来对暂停并且保存所述VM的所述请求进行响应。
8.根据权利要求7所述的方法,还包括通过以下来恢复所述VM:将保存的所述状态的位置从所述虚拟化层传递到所述VM和所述访客操作***,使用所述位置将保存的所述状态加载到所述硬件设备中。
9.根据权利要求7所述的方法,其中所述虚拟化层包括第一设备驱动程序,所述访客操作***包括第二设备驱动程序,并且其中所述请求所述VM暂停并且保存所述硬件设备的所述状态通过以下而被请求:所述第一设备驱动程序经由所述虚拟化层与所述VM之间的通信通道与所述第二设备驱动程序通信。
10.根据权利要求9所述的方法,其中所述第二设备驱动程序通过经由所述VM的虚拟总线设备向所述硬件设备发送信号来指示所述硬件设备保存所述硬件设备的状态。
11.根据权利要求9所述的方法,其中所述第二驱动程序经由所述VM的虚拟总线设备与所述硬件设备通信,所述虚拟总线设备由所述计算设备的物理总线设备支持,所述物理总线设备由所述管理程序管理。
12.根据权利要求7所述的方法,其中对暂停的所述请求包括缓冲器位置和所述硬件设备的设备标识符。
13.一种计算机,包括:
处理硬件;
硬件设备;
存储硬件,其存储用于由所述处理硬件执行的虚拟机(VM)和虚拟化层;
所述VM包括访客操作***;
所述虚拟化层包括管理程序以及被配置为在所述VM与所述管理程序之间提供通信的通信通道,所述虚拟化层被配置为将所述硬件设备直接分配给所述VM,使得所述硬件由所述VM排他性地使用而无需通过所述管理程序,并且使得在所述硬件设备被直接分配给所述VM的同时,所述访客操作***使用所述硬件设备而无需虚拟化抽象或者无需所述管理程序的介入;
所述虚拟化层被配置为在所述硬件设备被直接分配给所述VM的同时,通过所述通信通道向所述VM发送请求;以及
所述VM被配置为通过所述访客操作***发信号通知直接分配的所述硬件设备暂停执行、保存所述硬件设备的状态、加载状态或者恢复执行来对所述请求进行响应。
14.根据权利要求13所述的计算机,其中所述操作***包括与所述硬件设备通信以发信号通知所述硬件设备的硬件调度器或设备驱动程序。
15.根据权利要求13所述的计算机,其中在直接分配的所述硬件设备被暂停或被挂起的同时,所述计算机重新启动。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/790,598 US10552194B2 (en) | 2017-10-23 | 2017-10-23 | Virtualization operations for directly assigned devices |
US15/790,598 | 2017-10-23 | ||
PCT/US2018/055758 WO2019083745A1 (en) | 2017-10-23 | 2018-10-13 | VIRTUALIZATION OPERATIONS FOR DIRECTLY ASSIGNED DEVICES |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111213127A true CN111213127A (zh) | 2020-05-29 |
CN111213127B CN111213127B (zh) | 2023-10-10 |
Family
ID=64110120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880067051.2A Active CN111213127B (zh) | 2017-10-23 | 2018-10-13 | 用于直接分配的设备的虚拟化操作 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10552194B2 (zh) |
EP (1) | EP3701373B1 (zh) |
CN (1) | CN111213127B (zh) |
WO (1) | WO2019083745A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10956197B2 (en) * | 2017-12-13 | 2021-03-23 | Citrix Systems, Inc. | Virtual machine with an emulator manager for migration of synchronized streams of state data |
US10860363B1 (en) * | 2019-03-14 | 2020-12-08 | Amazon Technologies, Inc. | Managing virtual machine hibernation state incompatibility with underlying host configurations |
US11194615B2 (en) | 2019-12-05 | 2021-12-07 | Red Hat, Inc. | Dynamic pause exiting |
CN113157624B (zh) * | 2021-04-21 | 2021-12-07 | 科东(广州)软件科技有限公司 | 一种串口通信方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132365A1 (en) * | 2003-12-16 | 2005-06-16 | Madukkarumukumana Rajesh S. | Resource partitioning and direct access utilizing hardware support for virtualization |
US20050198632A1 (en) * | 2004-03-05 | 2005-09-08 | Lantz Philip R. | Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another |
US20100250824A1 (en) * | 2009-03-25 | 2010-09-30 | Vmware, Inc. | Migrating Virtual Machines Configured With Pass-Through Devices |
US20140245050A1 (en) * | 2013-02-22 | 2014-08-28 | Red Hat Israel,Ltd. | Power management for host with devices assigned to virtual machines |
CN105426253A (zh) * | 2015-12-18 | 2016-03-23 | 广州广电运通金融电子股份有限公司 | 一种自助设备硬件管理方法和装置 |
US20170046184A1 (en) * | 2015-08-14 | 2017-02-16 | Red Hat Israel, Ltd. | Guest Management of Devices Assigned to a Virtual Machine |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454756B2 (en) * | 2004-03-05 | 2008-11-18 | Intel Corporation | Method, apparatus and system for seamlessly sharing devices amongst virtual machines |
US8856782B2 (en) * | 2007-03-01 | 2014-10-07 | George Mason Research Foundation, Inc. | On-demand disposable virtual work system |
JP4947081B2 (ja) * | 2009-03-30 | 2012-06-06 | 日本電気株式会社 | パススルーi/oデバイスを伴うlparの動的マイグレーション装置、その方法及びそのプログラム |
JPWO2010122709A1 (ja) * | 2009-04-23 | 2012-10-25 | 日本電気株式会社 | 若化処理装置、若化処理システム、コンピュータプログラムおよびデータ処理方法 |
US9069591B1 (en) * | 2009-09-10 | 2015-06-30 | Parallels IP Holding GmbH | Patching host OS structures for hardware isolation of virtual machines |
US8473947B2 (en) * | 2010-01-18 | 2013-06-25 | Vmware, Inc. | Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions |
US8533713B2 (en) * | 2011-03-29 | 2013-09-10 | Intel Corporation | Efficent migration of virtual functions to enable high availability and resource rebalance |
JP2013137649A (ja) * | 2011-12-28 | 2013-07-11 | Toshiba Corp | 情報処理装置および仮想マシンの制御方法 |
US9110762B2 (en) | 2012-12-04 | 2015-08-18 | Microsoft Technology Licensing, Llc | Virtual machine-preserving host updates |
US9971616B2 (en) * | 2013-02-26 | 2018-05-15 | Red Hat Israel, Ltd. | Virtual machine suspension |
US20150067681A1 (en) * | 2013-09-03 | 2015-03-05 | Connectloud, Inc. | Method and apparatus for intelligent virtual machine sleep modes |
US9875115B2 (en) | 2013-12-20 | 2018-01-23 | Microsoft Technology Licensing, Llc | Memory-preserving reboot |
US9361145B1 (en) * | 2014-06-27 | 2016-06-07 | Amazon Technologies, Inc. | Virtual machine state replication using DMA write records |
US9619268B2 (en) | 2014-08-23 | 2017-04-11 | Vmware, Inc. | Rapid suspend/resume for virtual machines via resource sharing |
US9772962B2 (en) * | 2015-05-28 | 2017-09-26 | Red Hat Israel, Ltd. | Memory sharing for direct memory access by a device assigned to a guest operating system |
-
2017
- 2017-10-23 US US15/790,598 patent/US10552194B2/en active Active
-
2018
- 2018-10-13 EP EP18797320.1A patent/EP3701373B1/en active Active
- 2018-10-13 WO PCT/US2018/055758 patent/WO2019083745A1/en unknown
- 2018-10-13 CN CN201880067051.2A patent/CN111213127B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132365A1 (en) * | 2003-12-16 | 2005-06-16 | Madukkarumukumana Rajesh S. | Resource partitioning and direct access utilizing hardware support for virtualization |
US20050198632A1 (en) * | 2004-03-05 | 2005-09-08 | Lantz Philip R. | Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another |
US20100250824A1 (en) * | 2009-03-25 | 2010-09-30 | Vmware, Inc. | Migrating Virtual Machines Configured With Pass-Through Devices |
US20140245050A1 (en) * | 2013-02-22 | 2014-08-28 | Red Hat Israel,Ltd. | Power management for host with devices assigned to virtual machines |
US20170046184A1 (en) * | 2015-08-14 | 2017-02-16 | Red Hat Israel, Ltd. | Guest Management of Devices Assigned to a Virtual Machine |
CN105426253A (zh) * | 2015-12-18 | 2016-03-23 | 广州广电运通金融电子股份有限公司 | 一种自助设备硬件管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111213127B (zh) | 2023-10-10 |
EP3701373A1 (en) | 2020-09-02 |
EP3701373B1 (en) | 2022-09-14 |
WO2019083745A1 (en) | 2019-05-02 |
US20190121656A1 (en) | 2019-04-25 |
US10552194B2 (en) | 2020-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8671403B2 (en) | Pre-creating virtual machines in a grid environment | |
JP4921384B2 (ja) | メモリを1台のバーチャル・マシンからもう一方へダイナミックに再割り当てする方法、装置及びシステム | |
US8402462B2 (en) | Detection and management of dynamic migration of virtual environments | |
US7421533B2 (en) | Method to manage memory in a platform with virtual machines | |
CN111213127B (zh) | 用于直接分配的设备的虚拟化操作 | |
US7971203B2 (en) | Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another | |
US7979869B2 (en) | Method and system for performing I/O operations using a hypervisor | |
US8904159B2 (en) | Methods and systems for enabling control to a hypervisor in a cloud computing environment | |
US20120054740A1 (en) | Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments | |
CN107479943B (zh) | 基于工业互联网操作***的多操作***运行方法及装置 | |
US9164784B2 (en) | Signalizing an external event using a dedicated virtual central processing unit | |
JP2013516021A (ja) | プロセッサコアのハイパーバイザ離隔 | |
JP2016529614A (ja) | 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ | |
JP2014219977A (ja) | 動的仮想マシンサイジング | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
GB2525003A (en) | Data Processing Systems | |
CN110447012B (zh) | 协作虚拟处理器调度 | |
WO2021018267A1 (zh) | 虚拟机热迁移方法和通信设备 | |
CN111880891A (zh) | 基于微内核的可扩展虚拟机监控器及嵌入式*** | |
WO2019079128A1 (en) | REMAPPING VIRTUAL DEVICES FOR VIRTUAL MACHINES | |
KR102001641B1 (ko) | 가상화 환경에서의 gpu 자원 관리 방법 및 장치 | |
Awasthi et al. | Multiple hypervisor based Open Stack cloud and VM migration | |
US9122549B2 (en) | Method and system for emulation of instructions and hardware using background guest mode processing | |
US8402191B2 (en) | Computing element virtualization | |
US10152341B2 (en) | Hyper-threading based host-guest communication |
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 |