CN113424149A - 跨虚拟机边界的低时延事件 - Google Patents
跨虚拟机边界的低时延事件 Download PDFInfo
- Publication number
- CN113424149A CN113424149A CN201980088224.3A CN201980088224A CN113424149A CN 113424149 A CN113424149 A CN 113424149A CN 201980088224 A CN201980088224 A CN 201980088224A CN 113424149 A CN113424149 A CN 113424149A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- event
- register
- value
- identifier
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 166
- 230000008569 process Effects 0.000 claims abstract description 84
- 230000011664 signaling Effects 0.000 claims abstract description 65
- 238000004891 communication Methods 0.000 claims description 53
- 235000014510 cooky Nutrition 0.000 claims description 47
- 230000001360 synchronised effect Effects 0.000 claims description 5
- 230000007727 signaling mechanism Effects 0.000 description 11
- 230000009471 action Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 239000004744 fabric Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000007812 deficiency Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000007781 signaling event Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/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/45587—Isolation or security of 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Storage Device Security (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
跨虚拟机边界传送低时延事件。基于在第一虚拟机处运行的第一进程的事件信令请求,第一虚拟机更新由第二虚拟机可访问的共享寄存器。更新共享寄存器包括更新被存储在共享寄存器中的信号。第一虚拟机通过虚拟化结构向第二虚拟机发送包括寄存器标识符的事件信号消息。第二虚拟机接收事件信令消息,并且从消息标识寄存器标识符。基于寄存器标识符,第二虚拟机读取共享寄存器,标识被存储在共享寄存器中的信号的值。至少基于信号的值包括第一值,第二虚拟机用信号通知在第二虚拟机处运行的第二进程。
Description
背景技术
虚拟化技术使得单个物理计算系统(经常被称为虚拟化主机,或简称为主机)能够运行多个虚拟计算机系统,通常被称为虚拟机(VM)。在操作期间,每个VM仿真支持正在执行的操作系统的计算硬件,包括在该操作系统内正在执行的应用。通常,虚拟化主机提供通常被称为超级监督者(hypervisor)的虚拟化结构,该虚拟化结构使用物理计算资源来仿真用于每个VM的虚拟资源。虚拟化的一个目标是使超级监督者在VM之间提供隔离。因此,从任何给定的VM的视角来看,超级监督者提供了VM专有地与物理资源(例如,(多个)处理器、存储器、磁盘存储器等)接口的错觉,即使VM仅接口那些物理资源的抽象。因此,超级监督者可以在多个VM之中共享物理资源。频繁地,超级监督者操作至少两个VM:一个有特权的“主机”VM以及一个或多个“访客”VM。主机虚拟机经常可以直接地访问物理硬件,并且通常被用于管理访客VM。
通过使得操作系统(包括应用)能够在相同的计算机系统处与彼此隔离地执行,虚拟化技术提供了许多安全效益以及很大的灵活性。尽管如此,在不同的VM处的应用与彼此交互可以是受期望的。当被联网时,VM可以以与不同的物理机可以交互的方式相同的方式来交互——例如,经由网络分组,诸如TCP/IP分组、UDP分组等。另外,一些虚拟机超级监督者可以使得虚拟机能够更直接地交互,诸如通过使得两个VM能够(例如,利用可视化的串行端口)在彼此之间创建命名管道。然而,网络分组和命名管道包括引入时延的开销,并且因此针对某些类型的通信来说经常太慢。例如,可以期望使一个VM(例如,访客VM)与另一VM(例如,可以访问音频输入/输出硬件的主机VM)传送音频数据。然而,音频回放可能需要近似500μs的时延,这以当前的技术水平(诸如通过使用网络分组和命名管道)是无法被达成的。
发明内容
如背景技术中所提及,现有的VM间通信技术(例如,诸如网络通信和管道)引入了对某些用途(例如,诸如音频)可能是不可接受的时延量。由于使用这些通信信道的固有开销,这些时延被引入。例如,为了通过网络结构将给定数据从第一VM处的第一用户模式进程传送到第二VM处的第二用户模式进程,第一用户模式进程可以向第一VM处的网络堆栈传送数据,该网络堆栈然后将数据分成适当的分组大小的块,(例如,通过添加以太网帧、TCP/IP或UDP报头等来)围绕数据的每个块构建网络分组,将网络分组放入发送队列,并且最终从发送队列移除分组并且通过网络结构发送网络分组。在网络结构处接收分组之后,第二VM处的网络堆栈可以将分组放入接收队列中,最终从接收队列中移除分组,解码分组(例如,解析TCP/IP或UDP报头、以太网帧等),重新汇编数据的块,并且向第二用户模式进程发送数据。虽然命名管道能够达成比网络通信低的开销,但是它们同样地需要将数据分块和列队,导致在管道两端处的处理开销。
通过提供用于在多个VM之间的非常低开销(并且因此而低时延)的信令的机制,包括用于在那些VM处运行的进程相互发送信号的机制,本文所描述的至少一些实施例克服了现有VM间通信中的这些缺陷。这些低时延信令机制在两个(或更多个)VM之间提供相对少量的共享存储器,共享存储器被这些VM用于存储状态信息。这些低时延信令机制还使得这些VM能够向彼此发送轻量VM间事件信号消息,使得给定的VM能够非常快速地指令另一VM检查状态信息。在实施例中,状态信息包括一个或多个信号位以及一个或多个唤醒cookie(甜饼)位;在接收到事件信号消息之后,接收VM使用这些(多个)信号位以及这些(多个)唤醒cookie位以确定是否应当响应于事件信号消息而用信号通知本地进程。实施例可以将这些低时延信令机制与附加的共享存储器耦合以传送实际数据。因此,例如,第一VM可以向该附加的共享存储器写入数据,并且然后使用本文所描述的信令机制来非常快速地指令第二VM从该共享存储器读取(或者反之亦然)。
根据前述,一些实施例包括跨虚拟机边界传送低时延事件的方法、系统和计算机程序产品。计算机系统提供托管多个虚拟机的虚拟化结构。基于由在第一虚拟机处运行的第一进程进行的事件信令请求,第一虚拟机更新由第二虚拟机可访问的共享寄存器。更新共享寄存器包括更新被存储在共享寄存器中的信号。第一虚拟机通过虚拟化结构向第二虚拟机发送事件信号消息。事件信号消息包括共享寄存器的寄存器标识符。第二虚拟机接收由第一虚拟机发送的事件信令消息,并且从该消息中标识寄存器标识符。基于寄存器标识符,第二虚拟机读取共享寄存器,包括标识被存储在共享寄存器中的信号的值。至少基于信号的值包括第一值,第二虚拟机向在第二虚拟机处运行的第二进程发信号。
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
为了描述可以获取本发明的上述和其他优点和特征的方式,将通过参考在附图中示出的本发明的特定实施例来呈现上面发明内容的本发明的更具体的描述。理解这些附图仅描绘了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明将通过使用附图以附加的特性和细节被描述和解释,其中:
图1图示了促进跨虚拟机边界传送低时延事件的示例计算环境;
图2图示了用于在VM之间建立低时延通信的示例方法的流程图;
图3图示了用于跨VM边界传送低时延事件的示例方法的流程图;
图4图示了可以联系事件信令对象以及联系寄存器而被存储的数据的示例;以及
图5图示了在跨虚拟机边界传送低时延事件的同时使用等待cookie的示例。
具体实施方式
通过提供用于在多个VM之间的非常低开销(并且因此而低时延)的信令的机制,包括用于在那些VM处运行的进程相互发送信号的机制,本文所描述的至少一些实施例克服了现有VM间通信的缺陷。这些低时延信令机制在两个(或更多个)VM之间提供相对少量的共享存储器,共享存储器被这些VM用于存储状态信息。这些低时延信令机制还使得这些VM能够向彼此发送轻量VM间事件信号消息,使得给定的VM能够非常快速地指令另一VM检查状态信息。在实施例中,状态信息包括一个或多个信号位以及一个或多个唤醒cookie位;在接收到事件信号消息之后,接收VM使用这些(多个)信号位以及这些(多个)唤醒cookie位以确定是否应当响应于事件信号消息而用信号通知本地进程。实施例可以将这些低时延信令机制与附加的共享存储器耦合以传送实际数据。因此,例如,第一VM可以向该附加的共享存储器写入数据,并且然后使用本文所描述的信令机制来非常快速地指令第二VM从该共享存储器读取(或者反之亦然)。
为达成前述,图1图示了促进跨虚拟机边界传送低时延事件的示例计算环境100。如图所示,计算环境100包括计算硬件101,计算硬件包括例如一个或多个处理器102、系统存储器103、以及适用于其中实现本文描述的实施例的特定计算环境100的其他任何硬件104(例如,持久存储设备、网络通信硬件、用户输入/输出硬件、音频输入/输出硬件等)。
如图所示,硬件101被配置为以超级监督者105的形式提供虚拟化结构的虚拟化主机。如前所讨论,超级监督者通常使用物理计算资源来支持多个VM。因此,在图1中,超级监督者105被示出为通过向VM 106暴露硬件101的部分作为虚拟化的硬件资源来支持VM106a-106n(通常被称为VM 106),VM 106包括至少VM 106a和VM 106b。这样做时,超级监督者105强制VM 106之间的隔离,从而在VM之间创建逻辑边界。例如,超级监督者105可以在VM106之中划分处理器102的资源(例如,关于在VM 106之中分配不同的处理时间段,在VM 106之中分配不同的个体处理器核等),并且超级监督者105可以划分并且给每个VM 106分配存储器103的不同部分,同时防止给定的VM 106访问被分配给其他VM 106的存储器。
使用虚拟化的硬件资源,每个VM 106可以执行操作系统内核以及一个或多个用户模式进程(例如,操作系统进程、和/或第三方进程)。像这样,图1示出了VM 106a和VM 106b,每个VM都提供操作的内核模式(即,执行操作系统内核和相关的系统进程),以及操作的用户模式(即,执行用户模式进程)。在实施例中,VM 106可以全部执行相同类型的操作系统内核或者可以执行完全不同的操作系统内核。同时,为了完整性,图1图示了用户模式和内核模式的两者,本文的实施例可以完全在内核模式内、完全在用户模式内、或者(如图所示)在用户模式和内核模式的组合内操作。
在图1中,VM 106a和VM 106b被配置为用于跨分开VM的边界107来传送低时延事件。例如,图1图示了存储器103包括一部分存储器被配置为一个或多个状态寄存器108。跟随线条108a,这些状态寄存器108也概念性地被示出为状态寄存器108'——状态寄存器108'被图示为逻辑地桥接VM 106a和VM 106b之间的边界107。因此,状态寄存器108'对VM106a和VM 106b两者都是可访问的。在实施例中,并且如图所示,状态寄存器108'可以包括多个寄存器,每个寄存器都能够存储针对VM 106a和VM 106b之间的不同逻辑数据连接(例如,事件)的事件状态信息。
VM 106a和VM 106b也被示出为包括对应的事件信令(ES)提供方109(即,VM 106a内的ES提供方109a,以及VM 106b内的ES提供方109b),以及对应的超级监督者驱动110(即,VM 106a内的超级监督者驱动110a,以及VM 106b内的超级监督者驱动110b)。通常,ES提供方109负责在其对应的VM处创建本地事件信令对象(例如,VM106b-Event1、VM106b-Event2等),以及用于将这些本地ES对象与适当的状态寄存器108'同步(例如,如由ES提供方109a/109b和状态寄存器108'之间的箭头所示)。通常,超级监督者驱动110负责通过由超级监督者105提供的总线105a在两个(或更多个)VM之间传送事件信号消息(例如,基于由与超级监督者驱动在相同VM内的ES提供方109进行的请求,如由ES提供方109a和超级监督者驱动110a之间的箭头以及在ES提供方109b和超级监督者驱动110b之间的箭头指示的)。虽然在图1中示出为分开的组件,但是在给定VM 106处的ES提供方109和超级监督者驱动110可以是统一组件的部分。
虽然前述组件(即,状态寄存器108'、ES提供方109和超级监督者驱动110)提供了用于跨边界107传送低时延事件的框架,这些组件通常操作以促进其他软件组件之间的事件信令。因此,VM 106a被示出为包括一个或多个对应的进程111a,并且VM 106b被示出为包括一个或多个对应的进程111b。这些进程111a/111b分别调用ES提供方109a/109b,以便在边界107之上相互用信号通知(例如,如由进程111a和ES提供方109a之间的箭头、以及进程111b和ES提供方109b之间的箭头所指示的)。
虽然进程111被示出为在用户模式内,并且尽管状态寄存器108'、ES提供方109和超级监督者驱动110被示出为在内核模式内,再次强调,实施例可以完全在内核模式内、完全在用户模式内、或者在用户模式和内核模式的组合内操作。像这样,这些组件/数据结构中的每个组件/数据结构(即,进程111、状态寄存器108'、ES提供方109和超级监督者驱动110)可以单独地或集体地存在于用户模式和/或内核模式内。
如图1所示,存储器103还可以包括共享存储器112的部分,该部分由超级监督者105配置为对VM 106a和VM 106b两者可访问。因此,跟随线条112a,该共享存储器112(如果存在)也概念性地被示出为共享存储器112',该共享存储器112'也逻辑地桥接VM 106a和VM106b之间的边界107。如由进程111a/111b和共享存储器112'之间的箭头所示,该共享存储器112'可以由进程111a/111b访问(即,读取和/或写入)。
图2图示了用于在VM之间建立低时延通信的示例方法200的流程图。现在联系图1的示例计算环境100的组件和数据结构来描述方法200。因此,方法200的实施例可以在提供托管多个虚拟机(例如,VM 106)的虚拟化结构(例如,超级监督者105)的计算机系统(例如,硬件101)处被实现,包括第一虚拟机(例如,VM 106a)和第二虚拟机(例如,VM 106b)。
在图2中,方法200包括由两个不同的VM所执行的动作/步骤——左列中的VM1和右列中的VM2。在下面的描述中,VM1将使用VM 106a来被描述,同时VM2将使用VM 106b来被描述,但是应当理解,如果反过来,方法200也可以同样良好地操作。在实施例中,由VM1所执行的动作可以由具有提升的特权的VM(诸如主机VM)执行。因此,在实施例中,VM1(即,VM106a)可以是主机VM,同时VM2(即,VM 106b)是访客VM。可以期望VM1是主机VM,使得其可以具有提升的访问权限,诸如对硬件(例如,其他硬件104中的音频输入/输出硬件)的有特权的访问。然而,也可能是VM的两者都是主机VM,或者VM的两者都是访客VM。
如图2所示,方法200包括在VM1处确定事件标识符的动作201。例如,作为发起与VM106b的低时延通信会话(事件)的部分,VM 106a可以确定将被用于管理会话的事件信令对象的事件标识符。该事件标识符可以是任何类型的标识符,只要其唯一地标识会话。因此,事件标识符可以包括一个或多个全局唯一标识符(GUID)、一个或多个通用唯一标识符(UUID)等。在实施例中,事件标识符可以包括VM 106b的身份(例如,通过名称、通过GUID、通过UUID等)以及用于与VM 106b的特定低时延通信会话的标识符。出于说明的目的,如果这是与VM 106b的第一次低时延通信会话,则VM 106a可以选择诸如“VM106b-Event1”的事件标识符。在VM 106a内确定事件标识符的特定组件可以取决于实现而变化,但是在实施例中,事件标识符可以由进程111a作为发起与进程111b的通信的部分来确定,或者事件标识符可以由ES提供方109a基于来自进程111a的调用来确定。
基于在动作201中已经确定了事件标识符,方法200包括在VM1处针对事件标识符创建本地事件信令对象的动作202。例如,ES提供方109a可以基于事件标识符创建本地ES对象。这在图1中被示出为ES提供方109a内被标记为“VM106b-Event1”的对象。ES提供方109a可以基于例如从进程111a所接收的应用编程接口(API)调用来创建该ES对象。联系动作202,方法200还包括将状态寄存器与事件信令对象相关联的动作203。例如,如状态寄存器108'中所示,ES提供方109a可以将特定寄存器分配给“VM106b-Event1”事件。虽然动作202和动作203被示出为串行地发生,但是实现可以并行地或者甚至以相反的顺序来执行这些动作。
考虑到动作202和动作203,将理解,方法200的实施例可以包括在第一虚拟机处创建与事件标识符对应的第一事件信令对象,并且将共享寄存器与第一事件信令对象相关联。
同样基于在动作201中已经确定了事件标识符,方法200包括向VM2发送事件标识符的动作204。例如,VM 106a可以向VM 106b传送事件标识符。在VM 106a内执行该通信的特定组件可以取决于实现而变化,但是在实施例中,该通信可以由进程111a(再次,作为发起与进程111b通信的部分)执行。对应地,方法200还包括在VM2处接收从VM1接收事件标识符的动作205。例如,VM 106b可以从VM 106a接收事件标识符。再次,在VM 106b内接收该通信的特定组件可以取决于实现而变化,但在实施例中接收该通信可以由进程111b执行。
值得注意的是,动作204和动作205之间的箭头使用虚线而被示出,而所有其他箭头使用粗实线而被示出(与图1的总线105a对应)。这是为了指示事件标识符的通信可以使用总线105a以外的通信信道而发生。例如,事件标识符可以通过在进程111a和进程111b之间所建立的网络通信信道而被传送、通过共享存储器112'而被传送等。在实施例中,该通信信道是可以由操作系统本身创建和维护的信道(例如,诸如网络信道),并且因此可以被称为操作系统级通信信道。在实施例中,这与总线105a形成对比,总线105a是联系超级监督者105而被创建和维护的,并且因此可以被称为超级监督者级通信信道。
考虑到动作204和动作205,将理解,在方法200的实施例中,第一通信信道可以包括操作系统级通信信道,并且第二通信信道可以包括超级监督者级通信信道。另外,方法200的实施例可以包括:在第一虚拟机处,通过第一通信信道向第二虚拟机传送事件标识符;以及,在第二虚拟机处,通过第一通信信道从第一虚拟机接收事件标识符。
基于VM2已经接收事件标识符(动作205),方法200包括在VM2处从所接收的事件标识符创建本地事件信令对象的动作206。例如,类似于动作202,ES提供方109b可以基于事件标识符来创建本地ES对象。这在图1中被示出为ES提供方109b内被标记为“VM106b-Event1”的对象。ES提供方109b可以基于例如从进程111b所接收的API调用来创建该ES对象。考虑到动作206,将理解,方法200的实施例可以包括在第二虚拟机处创建与事件标识符对应的第二事件信令对象。
方法200还包括在VM2处向VM1发送所接收到的事件标识符的动作207,以及在VM1处从VM2接收事件标识符的对应动作208。值得注意的是,连接动作207和208的箭头使用粗实线,这意味着这次该事件标识符是通过超级监督者级通信信道而被发送的。因此,例如,动作207和动作208可以包括超级监督者驱动110b(例如,基于来自ES提供方109b的请求)通过总线105a发送事件标识符,以及超级监督者驱动110a在总线105a处接收事件标识符。考虑到动作207和动作208,将理解方法200的实施例可以包括:在第二虚拟机处,通过第二通信信道向第一虚拟机发送事件标识符;以及,在第一虚拟机处,通过第二通信信道从第二虚拟机接收事件标识符。
方法200还包括在VM1处认证所接收的事件标识符的动作209。例如,ES提供方109a可以验证存在与所接收的事件标识符的ES对象(即,ES对象“VM106b-Event1”)。ES提供方109a还可以验证该ES对象与该事件标识符从其被接收的VM对应。
如果动作209的认证成功,则方法200还包括在VM1处向VM2发送状态寄存器索引的动作210,以及在VM2处从VM2接收状态寄存器索引的对应动作211。再次,连接动作210和动作211的箭头使用粗实线,意味着状态寄存器索引通过超级监督者级通信信道而被发送。因此,例如,动作210和211可以包括超级监督者驱动110a(例如,基于来自ES提供方109a的请求)通过总线105a向与VM106b-Event1对应的状态寄存器108'发送索引,以及超级监督者驱动110b在总线105a处接收该寄存器索引。
方法200还包括在VM1处的动作212a和在VM2处的动作212b,动作212a和动作212b经由相关联的状态寄存器传送(多个)跨域事件。例如,ES提供方109a和ES提供方109b可以通过总线105a传送事件信号消息,同时经由与VM106b-Event1对应的状态寄存器108'传送实际事件信号。联系图3的方法300(其在动作211之后继续)更详细地描述了该过程。
值得注意的是,动作201-动作211可以被重复以创建多个通信会话(事件)。例如,图1示出了动作201-动作211可以被重复以针对VM 106b创建第二事件(即,针对图1中的“VM106b-Event2”本地ES对象以及寄存器)。另外,方法200可以被应用于右列中的多个VM。例如,图1示出了VM1也可以与VM 106n一起参与方法200,以创建针对“VM106n-Event1”的本地ES对象并且关联寄存器。
考虑到动作209-动作211,将理解,方法200的实施例可以包括:在第一虚拟机处,认证事件标识符,并且通过第二通信信道向第二虚拟机发送寄存器标识符。方法200的实施例还可以包括:在第二虚拟机处,通过第二通信信道从第一虚拟机接收寄存器标识符。
如本领域普通技术人员将理解的,方法200操作以使得VM1起作用以发起和管理事件的创建,并且使得VM2参与该进程。像这样,VM1可以被视为主机或主设备(master),并且VM2可以被视为客户端或从设备(slave)。例如,VM1首先建立事件标识符,创建针对事件标识符的本地ES对象,分配针对事件标识符的状态寄存器,并且向VM2发送事件标识符。在接收到事件标识符之后,VM2针对事件标识符创建其自己的本地ES对象,并且通过有特权的信道向VM1发送回事件标识符。然后,VM1验证事件标识符的有效性,并仅在事件标识符有效时才通过有特权的信道向VM2发送寄存器索引。值得注意的是,在没有首先从VM1接收事件标识符的情况下,VM2无法参与事件。此外,VM2无法通过向VM1发送无效事件标识符来使得VM1(经由ES对象或者状态寄存器)分配任何存储器。像这样,方法200对于会引起VM1进行存储器分配的针对VM1的拒绝服务(DoS)攻击是有弹性的。
如前所提及,一旦通信会话(事件)已经(使用动作201-动作211)在VM1和VM2之间被建立,它们就可以经由相关联的状态寄存器来传送(多个)跨域事件(即,动作212a和动作212b)。为了演示该过程,图3图示了用于跨VM边界传送低时延事件的示例方法300的流程图。现在联系图1的示例计算环境100的组件和数据结构来描述方法300,并且在方法200的动作211之后继续(并且因此可以被视为对方法200的扩展)。与方法200类似,方法300的实施例可以在提供托管多个虚拟机(例如,VM 106)的虚拟化结构(例如,超级监督者105)的计算机系统(例如,硬件101)处被实现,包括第一虚拟机(例如,VM 106a)和第二虚拟机(例如,VM 106b)。
方法300包括由左列中的信令VM执行的动作/步骤,以及由右列中的接收VM执行的动作/步骤。因此,每列中的VM的身份将取决于哪个VM发起特定信号的发送,以及哪个VM是该信号的接收者。在以下描述中,VM 106b将被描述为信令VM,而VM 106a将被描述为接收VM。然而,实施例可以允许VM 106a和VM 106b两者作为信令VM在几乎任何时间发起方法300。像这样,方法300可以被用于单向信令(例如,从VM 106b到VM 106a)和双向信令(例如,在VM 106a与VM 106b之间)两者。
如果存在共享存储器112',则方法300可以在与共享存储器同步的信令VM处以动作301开始。例如,如果VM 106a处的进程111a和VM 106b处的进程111b使用共享存储器112'来传送数据,则在VM 106b处的进程111b可以在其被用信号通知时利用要由进程111a读取的数据来更新共享存储器112'。作为更具体的示例,假设VM 106a是具有对音频硬件(即,其他硬件104)的有特权访问的主机VM。在这种情形中,VM 106b处的进程111b可能需要向VM106a处的进程111a发送音频数据以供回报。像这样,在动作301中,进程111b可以向共享存储器112'写入要被传送给进程111a的音频数据的部分。考虑到动作301,将理解方法300的实施例可以包括在与共享存储器同步的第一虚拟机处运行的第一进程。
不管动作301是否被实际执行,方法300都包括在信令VM处调用事件信令提供方的动作302。例如,进程111b可以对ES提供方109b进行API调用,请求针对(之前使用图2中的动作201-动作211而被创建的)事件VM106b-Event1向VM 106a发送信号。在实施例中,进程111b中的一个或多个进程然后可以阻塞/休眠,等待应答信号。
方法300还包括在信令VM处更新本地事件信令对象(动作303)和更新状态寄存器(动作304)的动作。虽然动作303和动作304被示出为并行发生,但是实现可以串行地(以任一顺序)执行这些动作。例如,ES提供方109b可以更新在提供方109b内与VM106b-Event1对应的ES对象,以及状态寄存器108'内与VM106b-Event1对应的寄存器。这可以包括并行地更新ES对象和寄存器,或者更新这些结构中一个结构(例如,ES对象)并且将其(多个)值复制到另一结构(例如,寄存器)中。不管用于更新ES对象和寄存器的确切机制是什么,结果是其两者都存储相同的(多个)值。考虑到动作303和动作304,将理解,方法300的实施例可以包括第一虚拟机将在第一虚拟机处的第一事件信令对象与共享寄存器同步。
在ES对象和寄存器中被更新的特定数据取决于实现而变化。然而,在实施例中,寄存器(以及类似地,ES对象)存储与信号对应的一个或多个位,以及与唤醒cookie对应的一个或多个位。例如,图4图示了根据一个或多个实施例的可以联系ES对象以及可以联系寄存器而被存储的数据的示例400。特别地,图4包括第一表格401,第一表格401示了出ES对象至少可以存储针对ES对象的事件标识符、寄存器索引(即,在动作203中与ES对象相关联的寄存器的索引)、信号以及唤醒cookie。另一方面,表格402示出了寄存器至少可以存储信号和唤醒cookie。在该示例中,更新本地事件信令对象(动作303)和更新状态寄存器(动作304)可以包括更新一个或多个信号位,以及更新与VM106b-Event1对应的ES对象和寄存器中的一个或多个唤醒位。在实施例中,信号可以包括二进制指示(例如,设置或清除),并且唤醒cookie可以包括递增值。信号和唤醒cookie的交互的示例稍后将联系图5而被描述。
考虑到动作303,将理解方法300的实施例可以包括:在第一虚拟机处、并且基于由在第一虚拟机处运行的第一进程的事件信令进行的请求,更新由第二虚拟机可访问的共享寄存器,更新共享寄存器包括更新被存储在共享寄存器中的信号。方法300的实施例还可以包括更新唤醒cookie。
返回到图3,方法300还包括在信令VM处向接收VM发送信号的动作305,以及在接收VM处从信令VM接收信号的对应动作306。值得注意的是,连接动作305和动作306的箭头使用粗实线,意味着事件标识符是通过超级监督者级通信信道(例如,总线105a)而被发送的。例如,超级监督者驱动110b可以(例如,基于来自ES提供方109b的请求)通过总线105a来发送事件信号消息,并且超级监督者驱动110a在总线105a处接收事件信号消息。值得注意的是,该事件信号消息可以极其轻量,可能仅包括状态寄存器索引作为有效负载。考虑到动作305,将理解方法300的实施例可以包括在第一虚拟机处通过虚拟化结构来向第二虚拟机发送事件信号消息,该事件信号消息包括共享寄存器的寄存器标识符。类似地,方法300的实施例可以包括在第二虚拟机处接收由第一虚拟机发送的事件信令消息并且从该消息标识寄存器标识符。
方法300还包括在接收VM处读取状态寄存器的动作307。例如,基于在动作306中所接收的事件信号消息,ES提供方109a可以读取状态寄存器108'中的适当寄存器,以便获取由VM 106b在动作304中放置在状态寄存器中的(多个)值——诸如信号值、唤醒cookie值等。在实施例中,ES提供方109a基于被包括在事件信号消息中的寄存器索引来标识适当的状态寄存器。然而,ES提供方109a可以以某种其他方式来标识适当的寄存器,诸如基于事件标识符(例如,VM106b-Event1)。考虑到动作307,将理解方法300的实施例可以包括,在第二虚拟机处、并且基于寄存器标识符来读取共享寄存器,包括标识被存储在共享寄存器中的信号的值。另外,方法300的实施例可以包括在第二虚拟机处,并且基于寄存器标识符来标识被存储在共享寄存器中的唤醒cookie的值。
方法300还包括在接收VM处读取和更新本地事件信令对象的动作308。例如,ES提供方109a可以读取被存储在适当ES对象(例如,与VM106b-Event1对应的ES对象)中的一个或多个值。然后,(如果从寄存器所读取的值不同于被本地存储的值,则)ES提供方109a可以利用在动作307中从状态寄存器所读取的(多个)对应值来更新被存储在该ES对象中的这些值中的一个或多个值。例如,ES提供方109a可以读取和更新信号值、唤醒cookie值等中的一个或多个值。考虑到动作308,将理解,方法300的实施例可以包括第二虚拟机将第二虚拟机处的第二事件信令对象与共享寄存器同步。
方法300还包括在接收VM处确定信号是否存在的动作309。例如,ES提供方109a可以确定在动作307中从状态寄存器所读取的信号的值是否指示信号应当被发送给一个或多个进程。为了说明,如果一个或多个信号位存储了二进制值(例如,单个位),则:如果二进制值被设置(例如,被设置为1),信号可以被指示。如果信号被指示(例如,如果信号位被设置为1),则跟随来自决策框的“是”箭头,方法300可以包括在接收VM处用信号通知进程的动作311。例如,ES提供方109a可以向进程111a发送信号。在实施例中,该信号唤醒进程111a中的至少一个进程,并且使该进程响应于该信号而采取一些动作。考虑到动作309和动作311,将理解方法300的实施例可以包括在第二虚拟机处、并且至少基于信号的值包括第一值来用信号通知在第二虚拟机处运行的第二进程。
如图所示,如果存在共享存储器112',则方法300可以包括在接收VM处与共享存储器同步的动作312。例如,进程111a可以读取共享存储器112'以获取由进程111b在动作301中写入的数据。因此,如果VM 106a是具有对音频硬件(即,其他硬件104)的有特权的访问的主机VM,则进程111a可以回放从共享存储器所获取的音频数据。不管动作312是否存在,方法300都可以在动作313处结束。考虑到动作312,将理解,方法300的实施例可以包括:基于第二进程已经被用信号通知,在第二虚拟机处运行的第二进程与共享存储器同步。
返回到动作309,如果信号没有被指示(例如,如果信号位被设置为0),则跟随来自决策框的“否”箭头,方法300可以包括在接收VM处确定唤醒cookie是否已经改变的动作310。例如,ES提供方109a可以确定在动作307中从状态寄存器所读取的唤醒cookie的值是否不同于在动作308中从本地ES对象所读取的值。如果是这种情况,则跟随来自决策框的“是”箭头,方法300可以继续进行到在接收VM处用信号通知该进程的动作311(以及后续动作)。否则,如果唤醒cookie未改变,则跟随来自决策框的“否”箭头,方法300可以在动作313处结束。
考虑到动作310和动作311,将理解方法300的实施例可以包括:在第二虚拟机处,将唤醒cookie的第一值与被本地存储的唤醒cookie的第二值相比较,并且其中仅当唤醒cookie的第一值与被本地存储的唤醒cookie的第二值不同时,第二虚拟机才用信号通知在第二虚拟机处运行的第二进程。
值得注意的是,接收VM的ES提供方可能不在每次事件信号消息被发送给它时都唤醒。例如,当事件信号消息被接收时,接收ES提供方可以不被分配处理器时间,当事件信号消息被接收时,接收ES提供方可能因中断而被阻塞,在接收VM处的内核可以选择不向接收ES提供方转发事件信号消息等。像这样,接收ES提供方可能错过由另一VM发送给它的事件信号消息。即使一个或多个事件信号消息被错过,在动作310中对唤醒cookie的使用也确保接收ES提供方的正确行为。
作为演示,图5图示了在跨虚拟机边界传送低时延事件的同时使用等待cookie的示例500。特别地,示例500包括三个计时图501-503。计时图501与第一VM处的第一ES对象(例如,ES提供方109a处与事件VM106b-Event1对应的ES对象)对应,计时图502与状态寄存器(例如,与事件VM106b-Event1对应的状态寄存器)对应,并且计时图503与第二VM处的第二ES对象(例如,ES提供方109b处与事件VM106b-Event1对应的ES对象)对应。
如图5所示,在时间T1处,ES对象和唤醒cookie两者中的信号的值和唤醒cookie的值都是0秒。例如,这可以是在最初设立事件VM106b-Event1之后(例如,在方法200的动作211之后)这些数据结构的状态。在图5的示例中,每次一个ES提供方用信号通知另一ES提供方时,其都会发送信令事件对:设置信号位(即,用信号通知另一VM以唤醒进程)的第一个信令事件,以及清除信号位的另一信令事件。唤醒cookie针对每个信号事件对而递增。例如,在时间T2处,第一VM处的第一ES提供方将在其本地ES对象和寄存器两者中的信号和唤醒cookie更新为1,并且然后在时间T3处,该ES提供方将在在其本地ES对象和寄存器两者中的信号更新为0。
如图所示,如果第二VM处的第二ES提供方在时间T4处唤醒,则其从寄存器中读取信号为0以及唤醒cookie为1(并且用这些值更新其本地副本)。如果方法300缺少动作310,则在时间T4处,第二ES提供方会在动作309中看到针对信号的零值,并且不会在动作311处用信号通知进程。然而,由于方法300包括动作310,所以第二ES提供方看到刚被从寄存器所读取的cookie值与其被本地存储的唤醒cookie不同,并且因此其继续进行到在动作311处用信号通知进程。像这样,即使第二ES提供方未针对第一ES提供方进行的每个更新而唤醒,由第一VM发送的信号也未丢失。
在实施例中,如果接收ES提供方错过多个设置/清除周期,则其仅唤醒一次被用信号通知的进程。这在图5中的时间T5-T9处被演示。在此,在第二ES提供方在时间T9处唤醒之前,第一ES提供方完成了两个设置/清除周期(即,时间T5-T8)。然而,遵循方法300,第二ES提供方在其在时间T9处唤醒时将仅用信号通知进程一次。值得注意的是,通过将ES提供方配置为使用唤醒cookie以在每次ES提供方唤醒时仅用信号通知进程一次——即使在自上次ES提供方唤醒以来另一VM已经发送了多个信号的情况下——方法300提供了针对DoS攻击的弹性,因为其可以对信号进程可以多经常地由另一虚拟机唤醒进行速率限制。时间T10-T12演示了包括使用唤醒cookie的信令也可以操作以供在另一方向上用信号通知。
因此,通过提供用于多个VM之间的非常低开销(并且因此低时延)的信令的机制,本文中的实施例克服了现有VM间通信技术的缺陷。这些低时延信令机制使用VM之间的共享存储器(即寄存器)来存储状态信息,诸如信号和唤醒cookie。这些低时延信令机制还使得这些VM能够向彼此发送轻量VM间事件信号消息,使得给定的VM能够非常快速地指令另一VM检查寄存器中的状态信息。在接收到事件信号消息之后,接收VM使用信号和唤醒cookie来确定其是否应当响应于事件信号消息而用信号通知本地进程。这些低时延信令机制可以与附加的共享存储器耦合以传送实际数据。
尽管已经以特定于结构特征和/或方法动作的语言描述了该主题,但是应当理解,所附权利要求中定义的主题不一定限于以上所描述的特征或动作,或者上述动作的顺序。确切地说,所描述的特征和动作被公开为实现权利要求的示例形式。
本发明的实施例可以包括或利用专用或通用计算机系统,其包括计算机硬件,诸如例如一个或多个处理器和系统存储器,如下文更详细讨论的。本发明范围内的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令和/或数据结构的计算机可读介质是计算机存储介质。承载计算机可执行指令和/或数据结构的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:计算机存储介质和传输介质。
计算机存储介质是存储计算机可执行指令和/或数据结构的物理存储介质。物理存储介质包括计算机硬件,诸如RAM、ROM、EEPROM、固态驱动器(“SSD”)、闪存、相变存储器(“PCM”)、光盘存储设备、磁盘存储设备或其他磁存储设备,或者可以用于以计算机可执行指令或数据结构的形式存储程序代码的任何其他(多个)硬件存储设备,其可以由通用或专用计算机系统访问和执行以实现本发明所公开的功能性。
传输介质可以包括网络和/或数据链路,其可以用于承载计算机可执行指令或数据结构形式的程序代码,并且可以由通用或专用计算机系统访问。“网络”被定义为支持计算机系统和/或模块和/或其他电子设备之间的电子数据传输的一个或多个数据链路。当信息通过网络或者另一通信连接(硬连线、无线、或者或硬连线或无线的组合)被传输或者被提供给计算机系统时,计算机系统可以将该连接视为传输介质。上述的组合也应当包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码可以自动从传输介质被传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路所接收的计算机可执行指令或数据结构可以在网络接口模块(例如,“NIC”)内的RAM中被缓冲,并且然后最终被传输到计算机系统RAM和/或计算机系统处易失性较低的计算机存储介质。因此,应当理解,计算机存储介质可以被包括在也(或者甚至主要地)利用传输介质的计算机系统组件中。
计算机可执行指令包括,例如,当在一个或多个处理器上被执行时使通用计算机系统、专用计算机系统或者专用处理设备执行某项功能或者某个功能组。计算机可执行指令可以是例如二进制、中间格式指令(诸如汇编语言)、或者甚至源代码。
本领域技术人员将理解,本发明可以在具有多个类型的计算机系统配置的网络计算环境中被实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、平板电脑、寻呼机、路由器、交换机,等等。本发明还可以在分布式系统环境中被实践,在分布式系统环境中,通过网络(由硬连线数据链路、无线数据链路、或者由硬连线和无线数据链路的组合)链接的本地和远程计算机系统两者都执行任务。像这样,在分布式系统环境中,计算机系统可以包括多个组成计算机系统。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备的两者中。
本领域技术人员还将理解,本发明可以在云计算环境中被实践。云计算环境可以是分布式的,尽管这不是必需的。当是分布式的时,云计算环境可以国际性地被分布在组织内和/或具有跨多个组织所拥有的组件。在本说明书和以下权利要求中,“云计算”被定义为一种模型,该模型用于支持对可配置计算资源(例如,网络、服务器、存储装置、应用和服务)的共享池的按需网络访问。“云计算”的定义不限于在被适当部署时可以从这样的模型所获取的其他众多优点中的任何一个优点。
云计算模型可以由各种特性组成,诸如按需自助服务、广泛的网络访问、资源池化、快速弹性、经测量的服务,等等。云计算模型还可以以各种服务模型的形式出现,诸如软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。云计算模型还可以使用不同的部署模型而被部署,诸如私有云、社区云、公共云、混合云,等等。
一些实施例(诸如云计算环境)可以包括系统,该系统包括一个或多个主机,每个主机都能够运行一个或多个虚拟机。在操作期间,虚拟机仿真操作的计算系统,支持操作系统以及可能还有一个或多个其他应用。在一些实施例中,每个主机包括超级监督者,该超级监督者使用从虚拟机的视图中所抽象的物理资源来仿真用于虚拟机的虚拟资源。超级监督者还提供虚拟机之间的适当隔离。因此,从任何给定虚拟机的视角,超级监督者提供了虚拟机正在与物理资源接口的错觉,即使虚拟机仅与物理资源的外观(例如,虚拟资源)接口。物理资源的示例包括处理容量、存储器、磁盘空间、网络带宽、媒体驱动器,等等。
本发明可以在不脱离其精神或本质特征的情况下以其他特定形式被体现。所描述的实施例在所有方面都应被视为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前述说明指示。落入权利要求的等效含义和范围内的所有变化都应包含在其范围内。
Claims (15)
1.一种在包括一个或多个处理器的计算机系统处被实现的方法,所述计算机系统提供托管多个虚拟机的虚拟化结构,所述多个虚拟机包括第一虚拟机和第二虚拟机,所述方法用于跨虚拟机边界传送低时延事件,所述方法包括:
在所述第一虚拟机处:
基于由在所述第一虚拟机处运行的第一进程进行的事件信令请求,更新由所述第二虚拟机可访问的共享寄存器,更新所述共享寄存器包括更新被存储在所述共享寄存器中的信号;以及
通过所述虚拟化结构向所述第二虚拟机发送事件信号消息,所述事件信号消息包括所述共享寄存器的寄存器标识符;以及在所述第二虚拟机处:
接收由所述第一虚拟机发送的所述事件信令消息,并且从所述消息标识所述寄存器标识符;
基于所述寄存器标识符,读取所述共享寄存器,包括标识被存储在所述共享寄存器中的所述信号的值;以及
至少基于所述信号的所述值包括第一值,用信号通知在所述第二虚拟机处运行的第二进程。
2.根据权利要求1所述的方法,其中更新所述共享寄存器包括更新唤醒cookie。
3.根据权利要求2所述的方法,其中所述第二虚拟机读取所述共享寄存器包括所述第二虚拟机标识被存储在所述共享寄存器中的所述唤醒cookie的第一值。
4.根据权利要求3所述的方法,还包括:所述第二虚拟机将所述唤醒cookie的所述第一值与被本地存储的唤醒cookie的第二值相比较,并且其中仅当所述唤醒cookie的所述第一值与所述被本地存储的唤醒cookie的所述第二值不同时,所述第二虚拟机才用信号通知在所述第二虚拟机处运行的所述第二进程。
5.根据权利要求1所述的方法,所述方法还包括:
所述第一虚拟机将所述第一虚拟机处的第一事件信令对象与所述共享寄存器同步;以及
所述第二虚拟机将所述第二虚拟机处的第二事件信令对象与所述共享寄存器同步。
6.根据权利要求1所述的方法,还包括:
在发送所述事件信令请求之前,在所述第一虚拟机处运行的所述第一进程与共享存储器同步;以及
基于所述第二进程已经被用信号通知,在所述第二虚拟机处运行的所述第二进程与所述共享存储器同步。
7.根据权利要求1所述的方法,所述方法还包括:
在所述第一虚拟机处:
通过第一通信信道向所述第二虚拟机传送事件标识符;
创建与所述事件标识符对应的第一事件信令对象;
将所述共享寄存器与所述第一事件信令对象相关联;
通过第二通信信道,从所述第二虚拟机接收所述事件标识符;
认证所述事件标识符;以及
在认证所述事件标识符之后,通过所述第二通信信道向所述第二虚拟机发送所述寄存器标识符;以及
在所述第二虚拟机处:
通过所述第一通信信道,从所述第一虚拟机接收所述事件标识符;
创建与所述事件标识符对应的第二事件信令对象;
通过所述第二通信信道向所述第一虚拟机发送所述事件标识符;以及
通过所述第二通信信道,从所述第一虚拟机接收所述寄存器标识符。
8.根据权利要求7所述的方法,其中所述第一通信信道是操作系统级通信信道,并且其中所述第二通信信道是超级监督者级通信信道。
9.根据权利要求7所述的方法,其中所述第一进程和所述第二进程包括用户模式进程,并且其中所述第一事件信令对象和所述第二事件信令对象包括内核模式数据结构。
10.一种计算机系统,包括:
一个或多个处理器;以及
一个或多个其上存储有计算机可执行指令的计算机可读介质,所述计算机可执行指令由所述一个或多个处理器可执行,以使所述计算机系统提供托管包括第一虚拟机和第二虚拟机的多个虚拟机的虚拟化结构、并且促进跨虚拟机边界的低时延事件的传送,所述计算机可执行指令包括指令,所述指令可执行以使所述计算机系统至少执行:
在所述第一虚拟机处:
基于由在所述第一虚拟机处运行的第一进程进行的事件信令请求,更新由所述第二虚拟机可访问的共享寄存器,更新所述共享寄存器包括更新被存储在所述共享寄存器中的信号;以及
通过所述虚拟化结构向所述第二虚拟机发送事件信号消息,所述事件信号消息包括所述共享寄存器的寄存器标识符;以及在所述第二虚拟机处:
接收由所述第一虚拟机发送的所述事件信令消息,并且从所述消息标识所述寄存器标识符;
基于所述寄存器标识符,读取所述共享寄存器,包括标识被存储在所述共享寄存器中的所述信号的值;以及
至少基于所述信号的所述值包括第一值,用信号通知在所述第二虚拟机处运行的第二进程。
11.根据权利要求10所述的计算机系统,其中更新所述共享寄存器包括更新唤醒cookie。
12.根据权利要求11所述的计算机系统,其中所述第二虚拟机读取所述共享寄存器包括所述第二虚拟机标识被存储在所述共享寄存器中的所述唤醒cookie的第一值。
13.根据权利要求12所述的计算机系统,所述计算机可执行指令还包括如下指令:所述指令可执行以使所述计算机系统在第二虚拟机处将所述唤醒cookie的所述第一值与被本地存储的唤醒cookie的第二值相比较,并且其中仅当所述唤醒cookie的所述第一值与所述被本地存储的唤醒cookie的所述第二值不同时,所述第二虚拟机才用信号通知在所述第二虚拟机处运行的所述第二进程。
14.根据权利要求10所述的计算机系统,其中所述第一虚拟机将所述第一虚拟机处的第一事件信令对象与所述共享寄存器同步,并且所述第二虚拟机将所述第二虚拟机处的第二事件信令对象与所述共享寄存器同步。
15.根据权利要求10所述的计算机系统,其中在发送所述事件信令请求之前,在所述第一虚拟机处运行的所述第一进程与共享存储器同步,并且基于所述第二进程已经被用信号通知,在所述第二虚拟机处运行的所述第二进程与所述共享存储器同步。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/243,938 US10929167B2 (en) | 2019-01-09 | 2019-01-09 | Low-latency events across a virtual machine boundary |
US16/243,938 | 2019-01-09 | ||
PCT/US2019/069019 WO2020146166A1 (en) | 2019-01-09 | 2019-12-31 | Low-latency events across a virtual machine boundary |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113424149A true CN113424149A (zh) | 2021-09-21 |
Family
ID=69423394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980088224.3A Pending CN113424149A (zh) | 2019-01-09 | 2019-12-31 | 跨虚拟机边界的低时延事件 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10929167B2 (zh) |
EP (1) | EP3908928B1 (zh) |
CN (1) | CN113424149A (zh) |
WO (1) | WO2020146166A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023123163A1 (zh) * | 2021-12-30 | 2023-07-06 | 华为技术有限公司 | 计算装置中的跨域通信方法和跨域通信装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099911B1 (en) | 2019-07-01 | 2021-08-24 | Northrop Grumman Systems Corporation | Systems and methods for inter-partition communication |
US11237878B2 (en) * | 2019-09-09 | 2022-02-01 | Microsoft Technology Licensing, Llc | Transforming system calls in a distributed architecture |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184113A (zh) * | 2014-03-27 | 2015-12-23 | 英特尔公司 | 用于实现安全视频输出路径的硬件辅助虚拟化 |
CN107111533A (zh) * | 2014-11-13 | 2017-08-29 | 微软技术许可有限责任公司 | 虚拟机集群备份 |
US20170300394A1 (en) * | 2016-04-14 | 2017-10-19 | Vmware, Inc. | Fault tolerance for containers in a virtualized computing environment |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060184938A1 (en) | 2005-02-17 | 2006-08-17 | Intel Corporation | Method, apparatus and system for dynamically reassigning memory from one virtual machine to another |
US9189430B2 (en) * | 2011-01-14 | 2015-11-17 | Skyworks Solutions, Inc. | Apparatus and methods for serial interfaces |
WO2013099414A1 (ja) | 2011-12-26 | 2013-07-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | レジスタ・マッピング方法 |
US8954788B2 (en) * | 2013-02-13 | 2015-02-10 | Lsi Corporation | Methods and structure for single root input/output virtualization enhancement in peripheral component interconnect express systems |
US9507617B1 (en) * | 2013-12-02 | 2016-11-29 | Trend Micro Incorporated | Inter-virtual machine communication using pseudo devices |
-
2019
- 2019-01-09 US US16/243,938 patent/US10929167B2/en active Active
- 2019-12-31 WO PCT/US2019/069019 patent/WO2020146166A1/en unknown
- 2019-12-31 CN CN201980088224.3A patent/CN113424149A/zh active Pending
- 2019-12-31 EP EP19845934.9A patent/EP3908928B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184113A (zh) * | 2014-03-27 | 2015-12-23 | 英特尔公司 | 用于实现安全视频输出路径的硬件辅助虚拟化 |
CN107111533A (zh) * | 2014-11-13 | 2017-08-29 | 微软技术许可有限责任公司 | 虚拟机集群备份 |
US20170300394A1 (en) * | 2016-04-14 | 2017-10-19 | Vmware, Inc. | Fault tolerance for containers in a virtualized computing environment |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023123163A1 (zh) * | 2021-12-30 | 2023-07-06 | 华为技术有限公司 | 计算装置中的跨域通信方法和跨域通信装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020146166A1 (en) | 2020-07-16 |
EP3908928A1 (en) | 2021-11-17 |
EP3908928B1 (en) | 2023-07-12 |
US10929167B2 (en) | 2021-02-23 |
US20200218560A1 (en) | 2020-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934341B2 (en) | Virtual RDMA switching for containerized | |
US10048981B2 (en) | Performing virtual machine live migration within a threshold time by adding available network path in multipath network | |
US11429408B2 (en) | System and method for network function virtualization resource management | |
CN107534579B (zh) | 资源管理的系统和方法 | |
US9225596B2 (en) | Undifferentiated service domains | |
US20170374179A1 (en) | Span out load balancing model | |
US11210113B2 (en) | Instant virtual application launch | |
US10924528B1 (en) | Method to determine use of local and remote applications in a distributed multiuser environment for shared file resources | |
EP3908928B1 (en) | Low-latency events across a virtual machine boundary | |
US11201930B2 (en) | Scalable message passing architecture in a cloud environment | |
US11487572B1 (en) | Migration of cloud-based software application | |
US11003618B1 (en) | Out-of-band interconnect control and isolation | |
US20230138867A1 (en) | Methods for application deployment across multiple computing domains and devices thereof | |
KR102212512B1 (ko) | 가상화기술에서 뮤텍스 객체를 이용한 소프트웨어 기반 은닉채널 구성 시스템 | |
US11595464B2 (en) | Migration of network file copy operations between host computing devices | |
CN117730319A (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 |