CN110998530A - 一种虚拟机资源分配系统、方法及计算机程序 - Google Patents
一种虚拟机资源分配系统、方法及计算机程序 Download PDFInfo
- Publication number
- CN110998530A CN110998530A CN201780093547.2A CN201780093547A CN110998530A CN 110998530 A CN110998530 A CN 110998530A CN 201780093547 A CN201780093547 A CN 201780093547A CN 110998530 A CN110998530 A CN 110998530A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- resources
- resource
- requesting
- machine monitor
- 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
- 238000004590 computer program Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 title claims description 45
- 238000013468 resource allocation Methods 0.000 title claims description 25
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000004891 communication Methods 0.000 claims description 48
- 238000007726 management method Methods 0.000 claims description 24
- 230000000977 initiatory effect Effects 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 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/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
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
根据第一方面,提供了一种系统。该系统包括处理器和存储器、从处理资源和内存资源中选择的资源以及存储在存储器中的计算机程序。所述计算机程序包括两个或两个以上虚拟机,以及可访问所述资源的虚拟机监控器。当所述计算机程序在所述处理器中执行时,所述两个或两个以上虚拟机中的任一虚拟机用于通过向所述虚拟机监控器发送资源请求来请求额外资源。所述虚拟机监控器从所述发出请求的虚拟机接收所述资源请求,并检查可用的未分配资源。如果未分配资源可用,则所述虚拟机监控器至少将这些资源的一部分分配给所述发出请求的虚拟机。如果不可用,则所述虚拟机监控器检查非所述发出请求的虚拟机的任一虚拟机可以释放的已分配资源,并将这些资源重新分配给所述发出请求的虚拟机。
Description
技术领域
本申请涉及计算机系统仿真领域,更具体地,涉及虚拟化和虚拟机。
背景技术
随着服务器硬件的进步,计算资源容量的不断增加,计算向虚拟化平台和云计算平台迁移。这类平台的客户机通过使用虚拟机监控器将一台物理机划分为多个VM,从而从平台提供商那里接收或租用计算资源,并将这些资源作为预配置的、相互隔离的虚拟机或容器(“VM”)。
虽然通常VM的资源配置是静态的,但工作负载是动态的,并且可以在短时间内以计划内和计划外的方式更改。因此,VM具体的物理资源需求(例如:中央处理器内核、存储器)通常在运行时期间变化。
这种在运行时无需停止、重启或重启即可更改VM的配置的能力可能是一个挑战。物理机中的共址VM可被隔离,且没有信令表明有意获取或释放它们之间的资源。
发明内容
本发明的目的是为系统虚拟机之间提供改进的通信和资源分配,尤其是提供一种用于虚拟机之间的资源分配系统和方法,和一种虚拟机监控器。
通过独立权利要求的特征来实现上述和其他目标。进一步的实施形式在从属权利要求、具体说明和附图中显而易见。
根据第一方面,提出了一种系统。所述系统可以是资源管理系统、用于在虚拟机之间分配资源的系统,或包括资源分配功能的任意其他系统。所述系统包括:处理器、存储器和资源,其中,所述资源包括处理资源和内存资源中的至少一种。所述资源可以在所述系统的处理器和存储器中提供,或者作为单独的专用处理器和存储器模块提供。所述系统还包括存储在所述存储器中的计算机程序,所述计算机程序包括:两个或两个以上虚拟机,以及可访问所述资源的虚拟机监控器。所述虚拟机最初可以由虚拟机监控器或单独的软件创建。所述虚拟机监控器可以访问资源,并可用于控制资源的分布。
当所述计算机程序在所述处理器中执行时,至少一部分资源在所述两个或两个以上的虚拟机之间分配。这种正常操作所需的资源初始分配可以由虚拟机监控器预先确定或决定。
所述两个或两个以上虚拟机中的任一虚拟机用于通过向所述虚拟机监控器发送资源请求来请求额外资源,所述虚拟机监控器用于从所述发出请求的虚拟机接收所述资源请求并检查可用的未分配资源。如果未分配资源可用,则所述虚拟机监控器用于至少将所述未分配资源的一部分分配给所述发出请求的虚拟机。如果未分配资源不可用,则所述虚拟机监控器用于检查非所述发出请求的虚拟机的一个或多个虚拟机中的任一虚拟机可以释放的已分配资源,并将这些资源重新分配给所述发出请求的虚拟机。
当请求额外资源时,所述发出请求的虚拟机可以被视为客户机,而所述虚拟机监控器可以被视为主机。所述虚拟机监控器可以访问资源,并首先检查未分配资源是否可用。所述未分配资源可以专门存储,以便在已运行的虚拟机之间进行分配,也可以存储以便重新分配和分配给新的虚拟机。如果没有可用资源,则所述虚拟机监控器用于“询问”其他虚拟机能否释放资源,并将可用的释放资源重新分配给客户虚拟机。
第一方面所述的系统,提高了虚拟机之间资源分配的效率。它还允许单个物理机上的多个VM之间或多个物理机之间安全匿名地通信,其中所述虚拟机监控器充当消息总线。
根据第一方面,在所述系统的第一种可能的实现方式中,当所述计算机程序在所述处理器中执行时,所述虚拟机监控器用于通过向所述虚拟机发送释放资源的请求,来检查非所述发出请求的虚拟机的任一虚拟机可以释放的已分配资源。然后,所述虚拟机用于接收所述释放资源的请求,检查分配给它们的未使用资源,并向所述虚拟机监控器发送关于未使用资源信息的回复。所述虚拟机监控器用于,基于从所述虚拟机接收的所述回复动态释放所述未使用资源,并将所述动态释放的资源重新分配给所述发出请求的虚拟机。
在该实现方式中,所述虚拟机监控器通过发送和接收消息与所述虚拟机进行协商。协商包括检查是否已经分配了对一个或多个虚拟机无用的资源,并使用此信息重新分配所述资源。所分配资源的动态释放提供了在不暂停所述虚拟机或所述虚拟机监控器操作的情况下重新分配资源的可能性。
根据第一方面的第一种实现方式,在所述系统的第二种可能的实现方式中,所述虚拟机监控器用于通过向所述发出请求的虚拟机发送资源分配消息,将所述动态释放的资源重新分配给所述发出请求的虚拟机。所述发出请求的虚拟机用于从所述虚拟机监控器接收所述资源分配消息,并根据所述资源分配消息热插拔所述动态释放的资源。所述动态释放的资源是“热插拔”的,这意味着该资源是“动态”添加的,不需要重启/重启虚拟机。这为内存或CPU资源的有效在线分配提供了条件。换句话说,资源再分配分三个阶段实现:所述主机/虚拟机监控器发送分配/预留消息,然后发送所述已分配资源的赋值/关联给虚拟机,随后向实际发现和激活(即,“热插拔”)额外资源的虚拟机发送信令。
所述资源分配消息可以是包括用于热插拔的可用额外资源的信息以及指示所述虚拟机使用这些资源的指令的消息。热插拔还提供了在不暂停所述计算机程序的任何组件的情况下执行分配的可能性。
根据第一方面或上述第一方面的任意一种实现方式,在所述系统的第三种可能的实现方式中,所述处理资源包括:中央处理器内核和虚拟中央处理器内核中的至少一种。所述虚拟中央处理器内核可以是与物理中央处理器内核解耦的执行进程或线程,从而使机器资源被超额订阅和时间复用。它们也可以1∶1映射到物理核。
所述中央处理器内核可以是所述系统的处理器的一部分,或者它们可以是用作资源的单独处理单元的一部分。
根据第一方面或上述第一方面的任意一种实现方式,在所述系统的第四种可能的实现方式中,所述内存资源包括随机存取存储器(random access memory,简称RAM)。
根据第一方面或上述第一方面的任意一种实现方式,在所述系统的第五种可能的实现方式中,所述内存资源包括非易失性存储器。
RAM和非易失性存储器可以是所述系统的存储器的一部分,或者可以作为用作资源的单独存储器模块存储。
除了第三种至第五种实现方式中的资源外,所述资源可以另外包括输入和输出资源、网络带宽资源以及虚拟机优化运行可能需要的其它资源。
根据所述第一方面的第二种实现方式,在所述系统的第六种可能的实现方式中,所述虚拟机监控器用于为所述动态释放的资源赋值,并基于其值重新分配所述动态释放的资源。
这进一步指定了所述虚拟机监控器和所述虚拟机之间的协商。给资源增值使得资源可在虚拟机之间有效地分配。它还提供了创建市场的能力,其中所述虚拟机能够基于其值进行资源交易。
根据第一方面或上述第一方面的任意一种实现方式,在所述系统的第七种可能的实现方式中,所述虚拟机监控器包括资源管理组件和通信组件,其中所述通信组件用于向所述资源管理组件和所述两个或两个以上虚拟机发送消息,以及从所述资源管理组件和所述两个或两个以上虚拟机接收消息。
所述虚拟机监控器的通信组件可用于在所述虚拟机和所述资源管理组件之间生成和传递消息。所述资源管理组件可用于管理未分配资源,决定需要向非所述发出请求的虚拟机获取额外资源(如果未分配资源不可用),并指示所述通信组件请求所述非所述发出请求的虚拟机释放未使用的已分配资源。所述资源管理组件可用于生成请求消息和资源分配请求,并指示所述通信组件传递这些消息;或者,可用于指示所述通信组件生成资源分配请求和其他消息以发送给所述虚拟机。
根据第一方面的第二种实现方式,在所述系统的第八种可能的实现方式中,所述两个或两个以上的虚拟机中的每个虚拟机包括通信组件和动态资源通信器库。所述动态资源通信器库用于接收来自虚拟机内部运行的应用程序的资源请求,通过所述通信组件将所述资源请求传递给所述虚拟机监控器,通过所述通信组件接收来自所述虚拟机监控器的资源释放请求,处理所述资源释放请求,并通过所述通信组件向所述虚拟机监控器发送关于未使用资源信息的回复。
所述虚拟机的动态资源通信器库可以处理释放请求,并判断已分配资源是否可以释放。在一些实现方式中,判断时还可以考虑所述已分配资源以及请求资源的值。
虚拟机的资源请求可以由在虚拟机上运行的应用程序发起,例如,如果所述应用程序需要更多资源以优化运行。
根据第二方面,提出了一种方法。所述方法可以是在系统中进行资源分配的方法,其中所述系统包括两个或两个以上虚拟机,以及虚拟机监控器。所述系统可以是根据第一方面或其任意一种实现方式的系统。所述方法包括:在所述两个或两个以上虚拟机中的任一虚拟机与所述虚拟机监控器之间发起资源请求通信,并检查是否有可用于所述虚拟机监控器的未分配资源。如果未分配资源可用,则至少将所述未分配资源的一部分分配给所述发出请求的虚拟机。如果未分配资源不可用,则所述方法包括检查非所述发出请求虚拟机的一个或多个虚拟机中的任一虚拟机可以释放的已分配资源,并将这些资源重新分配给所述发出请求的虚拟机。
所述资源请求通信可以包括从虚拟机发送到主管的消息,反之亦然。
该方法允许使用协作通信动态添加和释放资源。这允许在虚拟机上运行的应用程序获得额外资源或释放未使用的已分配资源。所述方法可以由运行该方法的系统的处理器执行。
根据第二方面,在所述方法的第一种可能的实现方式中,所述方法还包括:发起第二通信,以释放所述虚拟机监控器与所述虚拟机非所述发出请求的虚拟机之间的资源;检查分配给所述非所述发出请求的虚拟机的未使用资源;向所述虚拟机监控器提供关于未使用资源的信息;根据提供的信息动态释放所述未使用资源,并将所述动态释放的资源重新分配给所述发出请求的虚拟机。
用于释放资源的所述第二通信可以包括从所述虚拟机监控器发送到所述虚拟机的用于指示检查未使用的已分配资源的消息,和/或动态释放资源的指令。
根据第二方面的第一种实现方式,在所述方法的第二种可能的实现方式中,所述方法包括:通过从所述虚拟机监控器向所述发出请求的虚拟机传递资源分配指令,向所述发出请求的虚拟机重新分配所述动态释放的资源;根据所述资源分配指令,热插拔所述动态释放的资源。
还可以通过启动所述虚拟机监控器和所述发出请求的虚拟机之间的专用通信通道来执行资源分配指令的传递。
根据第二方面或上述第二方面的任意一种实现方式,在所述方法的第三种可能的实现方式中,所述方法还包括:在所述发出请求的虚拟机和所述虚拟机监控器之间发起资源请求通信之前,从所述两个或两个以上虚拟机中的任一虚拟机上内部运行的应用程序发起资源请求。
这允许在虚拟机上运行的应用程序按照所述方法发起所述资源请求链。
第三方面,提出了一种计算机程序。所述计算机程序包括程序代码,其中,所述计算机程序在计算机上执行时,所述程序代码用于执行根据第二方面的任一实现方式所述的方法。
参考下文结合附图进行的详细描述,许多伴随特性将变得更加清晰,因此更易理解。
附图说明
结合下文的详细说明和附图能够更好地理解本说明书,其中:
图1示出了根据一示例的系统框图;
图2示出了根据一示例的具有其它元件的系统框图;
图3示出了根据一示例在虚拟机中处理资源的框图;
图4示出了根据一示例的方法流程图。
附图中,相同参考标号表示相同部分。
具体实施方式
以下结合附图提供的详细描述旨在作为实施例的描述,而非旨在表示可构造或利用实施例的仅有形式。然而,相同或等效的功能和结构可以通过不同的实施例来实现。
在以下描述中,讨论了用于物理机上多个虚拟机(virtual Machine,VM)之间协作、安全和匿名通信的系统和方法的实施例。
该系统基于在多个VM及其虚拟机监控器(HV)之间建立受控通信通道,可以通过该通道发送资源调整消息。
为了清楚说明本发明所基于的某些原理,在结合附图进行描述之前,在此给出示例性的解释。这并非旨在以任何方式进行限制性解释,而是提供具体细节,以清楚地理解所要求保护的系统和方法背后的机制。
在客户机(VM)和主机(HV)内运行的操作系统内核可以通过驱动程序进行扩展,该驱动程序启用客户机和宿主机之间基于协议的通信通道。在“客户机”VM中运行的应用程序可用于发送或接收资源更改消息。运行在VM上的驱动程序能够以一种安全的方式(例如,通过借助基于virtio的通道等硬件辅助虚拟化技术)对来自所述应用程序的消息作出反应,并相应地将消息传递到主机。在HV主机中运行的驱动程序可以在从所述VM驱动程序接收消息时作出反应,并将消息传递给作为主机中应用程序运行的管理软件组件。所述管理软件组件反过来可以控制被管理资源的获取和释放,并且可以实现一系列策略。所述管理组件可以利用现有的可用资源实现资源请求,也可以向同一虚拟机监控器下同时运行的一个或多个VM推送请求消息。如果任何正在运行的VM可能有意释放所请求的资源,则请求消息可以轮询,这些资源随后可被最初发出请求的VM获取。向VM推送消息的通信机制可能与VM向HV发送消息的通信机制相同。消息被传递到客户机VM中的驱动程序,随后由在客户机中运行的用户空间应用程序进行处理,该应用程序可以处理请求并批准或拒绝释放资源的请求。管理组件根据决定,例如,如果其中一个VM接受释放所述资源,在接受VM的协作下继续动态释放资源,而不会(通过热拔插处理和内存资源)造成任何服务中断,并随后将这些资源分配给最初发出请求的VM。最后,消息可以返回到最初发出请求的VM,由它确认或拒绝所述初始请求。如果请求被批准,则消息可以进一步包括所获取资源的实现特定细节,以便客户机VM操作系统内核可以继续动态热插拔这些资源。
图1示出了通用级别的系统100,该系统包括存储器104和处理器103,在图上用“硬件”一词表示。存储器104存储计算机程序,仅为了清楚起见,将其元件示为同一系统的元件。正如技术人员所清楚的,虚拟机监控器(hypervisor,简称HV)102和虚拟机(VM)101、111是基于软件的组件。所述系统还包括资源,其中,所述资源包括处理资源、内存资源,以及可选地,VM最优功能所需的其它资源。部分资源在HV下运行的VM之间分配,这些资源在图1中用105表示。所述资源的另一部分未分配,并且为简单起见,在所述处理器103和存储器104下显示为堆栈。如图1所示,所述未分配资源可以是所述系统存储器104和处理器103的资源,或者它们可以与所述存储器104和处理器103分离。内存资源可以包括随机存取存储器(random access memory,简称RAM)和/或非易失性存储器。处理资源可以包括中央处理器(central processing unit,简称CPU)核和虚拟CPU核。
当计算机程序在处理器103中执行时,至少一部分105所述资源已经在两个或两个以上虚拟机101、111之间分配。任一虚拟机,例如101处的VM-1,可用于通过向虚拟机监控器102发送资源请求120来请求额外资源。所述虚拟机监控器102用于从所述发出请求的虚拟机接收所述资源请求,并检查可用的未分配资源,例如CPU103和可用存储器104。如果未分配资源可用,则HV102用于至少将所述未分配资源的一部分分配给所述发出请求的虚拟机101。如果未分配资源不可用,则HV102用于检查非所述发出请求的虚拟机的一个或多个虚拟机中的任一虚拟机可以释放的已分配资源105,并将这些资源重新分配给所述发出请求的虚拟机101。HV103与VM101、111之间的通信由箭头符号指示。
图2进一步详细示出了根据一实施例的系统200。某些元件负责图1描述中所示的操作,但无意解释为以任何方式限制范围。在已经可用的存储器和CPU核之上,图2所示的系统还包括额外资源205,例如,输入输出资源。
仅出于示例性目的,VM-1(201)是请求额外资源的虚拟机。与其它VM211类似,VM-1201包括在其上运行的应用程序2011、通信组件2013和动态资源通信器库(DRC-LIB或LIB)2012。
应用程序2011用于向DRC-LIB发送资源变更请求消息。所述消息可以包括资源定义,以及可选地,资源值。DRC-LIB 2012用于处理所述消息并将其传递给通信组件2013,通信组件2013反过来将该消息转发给虚拟机监控器202。
虚拟机监控器202包括资源管理组件2022和通信组件2021。当DRC-LIB 2012将消息转发给虚拟机监控器202时,消息由通信组件2021接收,然后传递到资源管理组件2022。资源管理组件2022检查未分配资源是否可用,并创建分配消息。如果没有可用的未分配资源,资源管理组件将创建具有新请求id和内容的新消息,并将其发送给其余VR的一个或多个通信组件。接收到新消息的剩余VM的DRC-LIB用于确定应接受还是拒绝所述资源请求。可以创建新消息,并其发送给虚拟机监控器的通信组件,以下面的文本为例:接受/拒绝请求id,【可选】请求添加/释放资源,【可选】建议值。然后,在与VM通信组件2013协商之后,可以将释放的资源热插拔到发出请求的VM-1201。虚拟机监控器202还可以用于选择用于资源更改的特定VM;生成消息以添加/释放资源;以及重新组织资源管理组件2022中的资源。
在协商期间,如果VM中的资源不可用或不足,资源管理组件2022可以创建消息,该消息传递关于提供或接受资源的请求的信息,并具有资源的相对值。此类消息可以广播到物理机上的全部或部分其他虚拟机,并被这些虚拟机接受。基于它们的需要和可用性,所述虚拟机可以创建它们的响应。
图3示出了VM和HV之间的资源交换机制的更详细的示例。图3示出了资源交换涉及的系统组件。这些组件包括在客户机VM上运行的应用程序301,用于通过DRC-LIB调用向所述客户机内核305请求资源变更。与客户机内核305相关联的通信组件用于使发出请求的VM退出分发,而虚拟机监控器302的资源管理组件3022相应地调整资源并设置更改。管理组件3022用于为所述发出请求的VM创建新的虚拟中央处理器线程和并分配内存给所述发出请求的VM。
在一实施例中,资源管理组件3022随后将控制返回给客户机内核305,将状态消息传递给其DRC。客户机内核305读取所述状态消息并作出反应,例如热插拔新CPU和/或添加新内存条。控制随后返回给应用程序301,应用程序301可以接收关于新可用资源的消息。本实施例涉及向发出请求的虚拟机同步动态添加虚拟资源。
在替代性实施例中,提供了虚拟资源的异步添加。资源管理组件可用于中断客户机内核的操作以传递状态信息,而不是将控制返回给客户机内核305。
在一实施例中,图3的虚拟机还可以用于使用协作通信释放资源。释放资源的机制开始于客户机内核305从虚拟机监控器302、应用程序301或用户接收带有释放已分配资源指令的消息。客户机内核305中的DRC可以用于通过所述VM的DRC-LIB请求应用程序301释放资源。应用程序301可以接受来自DRC-LIB的请求,并确定是否可以释放资源。在应用程序301确定是否可以释放资源之后,其用于返回通知结果的消息。如果结果为否定,则没有释放资源。如果结果是肯定,那么客户机内核的DRC会对所请求的资源执行“热拔出”然后,所述DRC将所述消息传递到虚拟机监控器302的资源管理器3022中的通信模块3021。作为响应,所述资源管理器3022用于:通过与虚拟机监控器302通信来调整VM资源以设置更改,释放虚拟中央处理器线程和客户机内存,然后将控制返回给所述客户机内核,并传递状态信息。VM的DRC用于读取状态信息,并刷新可用CPU和内存的状态。
根据上述实施例的系统使得诸如基于市场的资源交易的实施策略具有很大的灵活性。例如,该机制允许多轮协议,其中可能包括以动态管理价格进行的一系列的资源竞标和出售。
所述系统还允许使用以Hypervisor作为消息总线的协作、安全和匿名的方法,用于单个物理机上众多VM之间的通信,以实现资源的运行时细粒度弹性、资源交换和资源分配和再分配、以及基于市场的资源获取和交换。
同时,所述系统还可提高资源分配和使用效率。
图4示出了根据一实施例的用于在系统中分配资源的方法,其中所述系统包括两个或两个以上虚拟机,以及虚拟机监控器。该方法的可选步骤由方框的虚框表示。
所述方法开始于在虚拟机与所述虚拟机监控器之间发起401资源请求通信。可选地,所述发起可以由在所述请求400额外资源的两个或两个以上虚拟机中的任一虚拟机内部运行的应用程序引起。检查402未分配资源是否可用,如果可用,则将这些资源分配403给所述发出请求的VM。如果未分配资源不可用,则该方法继续,向所有剩余VM广播404消息,以请求释放未使用的已分配资源。所述广播消息还可以包括所请求资源的值。如果可以释放405足够多未使用的已分配资源,则所述方法包括从一个或多个VM中动态释放406资源,以及将所述动态释放的资源重新分配403给所述发出请求的VM。例如,这可以通过将资源分配指令从所述虚拟机监控器传递到所述发出请求的虚拟机来实现。如果所有VM都不能释放足够的资源,则可以生成407并向所述发出请求的VM发送失败响应消息。
可选地,在按照上述方法进行资源分配或再分配之后,所述发出请求的VM可以热插拔408这些资源,以便不间断地进行操作。
可以修改客户机VM操作系统内核,以引入新的驱动程序来支持此方法。所述驱动程序向VM中的游客应用程序公开用户空间接口,应用程序可通过这些接口请求资源调整更改。此外,所述驱动程序负责实现客户机内核和主机内核(虚拟机监控器)之间的通信协议,以传送所述请求消息和处理所述响应消息。所述虚拟机监控器负责从客户机VM接收那些消息,并相应地通过将决策委托给在主机中运行的用户空间软件组件来处理请求,从而负责资源管理并可能实施各种不同的资源管理策略。
若客户机VM请求额外资源,特定的资源管理组件可以识别宿主机上有足够的“可用”未分配资源,以立即完成请求调整,并且可以通过向客户机VM分配这些资源继续这些操作。这可以通过实现特定的和架构特定的步骤来完成。或者,如果请求发生时没有资源可用,所述资源管理组件可以继续将请求释放消息分派给托管在同一环境中的、同时运行的其他任一(或全部)客户机VM。如果任一(或几个)客户机VM作出肯定响应并释放任何资源,如果释放的资源集合足以满足用于资源调整的初始资源,则请求可以继续。
随后,可以向所述发出请求的VM发送响应,以确认请求成功,同时发送有关新获得资源的实现特定和架构特定信息。之后,客户机VM操作系统内核驱动程序接收所述响应,并根据提供的信息对获取的资源继续进行热插拔。最后,通知发起该请求的用户空间应用程序,以便应用程序能够继续使用新获得的资源。如果主机中没有可用资源来服务所述请求,并且没有其他客户机VM愿意释放足够的资源来满足所述请求,则向所述发出请求的客户机VM返回资源调整拒绝消息。
上述实施例描述的非程序特定的方法和系统适用于多个VM、物理服务器、云平台和程序,以协作、动态和无停机缺陷地扩展和缩减分配给系统中每个VM的资源。
本文描述的功能至少部分可以由一个或多个计算机程序产品组件(例如软件组件)执行。根据一个实施例,所述系统100包括由程序代码配置的处理器,所述处理器用于执行所描述的操作和功能的实施例。可选地,或者另外,本文描述的功能至少部分可以由一个或多个硬件逻辑组件执行。例如,在不限于此情况下,可以使用的说明性硬件逻辑组件类型包括现场可编程门阵列(Field-programmable Gate Array,简称FPGA)、特定程序集成电路(Program-specific Integrated Circuit,简称ASIC)、特定程序标准产品(Program-specific Standard Product,简称ASSP)、片上系统(System-on-a-chip,简称SOC)、复杂可编程逻辑设备(Complex Programmable Logic Device,简称CPLD)和图形处理单元(Graphics Processing Unit,简称GPU)。
此处给出的任何范围或设备值均可扩展或更改,但不会丢失所寻求的效果。此外,除非明确禁止,否则任何实施例均可与另一实施例组合。
虽然已经以特定于结构特征和/或动作的语言描述了主题,但是应该理解的是,权利要求书定义的主题不必局限于上面描述的具体特征或动作。更准确地说,上述具体特征和动作是作为实现权利要求的示例公开的,其它等效的特征和动作旨在包含于权利要求的范围内。
应当理解,上述优点和优点可以涉及一个实施例,也可涉及几个实施例。实施例不限于解决任何或所有所述问题的实施例,也不限于具有任何或所有所述益处和优点的实施例。还应理解,提及“一个”项目可指那些项目中的一个或多个。
本文描述的方法的步骤可以以任何合适的顺序执行,或在适当时同时执行。此外,可以在不脱离本文所述主题的精神和范围的情况下从任何方法中删除单独的框。在不丧失所求效果的情况下,任一上述实施例的各方面可与所描述的任一其它实施例的各方面组合以形成其它实施例。
此处使用的术语“包括”是指包括所标识的方法、框图或元素,但此类框图或元素不包含排他性列表,且方法或设备可包含其它框图或元素。
应理解,以上描述仅作为示例给出,本领域技术人员可以进行各种修改。上述规格、示例和数据提供了对示例性实施例的结构和使用的完整说明。尽管上文已经以一定程度的特殊性或结合一个或多个单独实施例描述了各种实施例,但是本领域技术人员在不脱离本说明书的精神或范围的情况下可以对所公开的实施例进行多种变更。
Claims (14)
1.一种系统,其特征在于,包括:
处理器和存储器;
资源,包括:处理资源和内存资源中的至少一种;
存储在所述存储器中的计算机程序,所述计算机程序包括:两个或两个以上虚拟机,以及可访问所述资源的虚拟机监控器;
其中,当所述计算机程序在所述处理器中执行时:
在所述两个或两个以上虚拟机之间至少分配一部分所述资源;
所述两个或两个以上虚拟机中的任一虚拟机用于通过向所述虚拟机监控器发送资源请求来请求额外资源;
所述虚拟机监控器用于接受所述发出请求的虚拟机发送的所述资源请求,并检查可用的未分配资源;
如果未分配资源可用,则所述虚拟机监控器用于向所述发出请求的虚拟机分配至少一部分所述未分配资源;;
如果未分配资源不可用,则所述虚拟机监控器用于检查非所述发出请求的虚拟机的一个或多个虚拟机中的任一虚拟机可以释放的已分配资源,并将这些资源重新分配给所述发出请求的虚拟机。
2.根据权利要求1所述的系统,其特征在于,当所述计算机程序在所述处理器中执行时:
所述虚拟机监控器用于通过向所述虚拟机发送释放资源的请求,检查非所述发出请求的虚拟机的任一虚拟机可以释放的已分配资源;
所述虚拟机用于接收所述释放资源的请求,检查分配给所述虚拟机的未使用资源,并向所述虚拟机监控器发送关于未使用资源信息的回复;
所述虚拟机监控器用于根据从所述虚拟机接收的所述回复动态释放所述未使用资源,并将所述动态释放的资源重新分配给所述发出请求的虚拟机。
3.根据权利要求2所述的系统,其特征在于,所述虚拟机监控器用于通过向所述发出请求的虚拟机发送资源分配消息,向所述发出请求的虚拟机重新分配所述动态释放的资源;
所述发出请求的虚拟机用于接受所述虚拟机监控器发送的所述资源分配消息,并根据所述资源分配消息热插拔所述动态释放的资源。
4.根据权利要求1至3中任一项所述的系统,其特征在于,所述处理资源包括:中央处理器内核和虚拟中央处理器内核的至少一种。
5.根据权利要求1至4中任一项所述的系统,其特征在于,所述内存资源包括随机存取存储器。
6.根据权利要求1至5中任一项所述的系统,其特征在于,所述内存资源包括非易失性存储器。
7.根据权利要求2所述的系统,其特征在于,所述虚拟机监控器用于为所述动态释放的资源赋值,并基于其值重新分配所述动态释放的资源。
8.根据权利要求1至7中任一项所述的系统,其特征在于,所述虚拟机监控器包括资源管理组件和通信组件,其中所述通信组件用于向所述资源管理组件和所述两个或两个以上虚拟机发送消息,以及从所述资源管理组件和所述两个或两个以上虚拟机接收消息。
9.根据权利要求2所述的系统,其特征在于,所述两个或两个以上虚拟机中的每个虚拟机包括通信组件和动态资源通信器库,用于:
接收来自虚拟机内部运行的应用程序的资源请求;
通过所述通信组件将所述资源请求传递给所述虚拟机监控器;
通过所述通信组件从所述虚拟机监控器接收用于释放资源的请求;
处理所述释放资源的请求;
通过所述通信组件向所述虚拟机监控器发送关于未使用资源信息的回复。
10.一种在系统中分配资源的方法,其中所述系统包括两个或两个以上虚拟机,以及虚拟机监控器,其特征在于,包括:
在所述两个或两个以上虚拟机中的任一虚拟机与所述虚拟机监控器之间发起资源请求通信;
检查所述虚拟机监控器可用的未分配资源;
如果未分配资源可用,则向所述发出请求的虚拟机分配至少一部分所述未分配资源;
如果未分配资源不可用,则检查非所述发出请求的虚拟机的一个或多个虚拟机中的任一虚拟机可以释放的已分配资源,并将这些资源重新分配给所述发出请求的虚拟机。
11.根据权利要求10所述的方法,其特征在于,还包括:
发起第二通信,以释放所述虚拟机监控器与所述非所述发出请求的虚拟机之间的资源;
检查分配给所述非所述发出请求的虚拟机的未使用资源,并将未使用资源信息提供给所述虚拟机监控器;
根据所述提供的信息,动态释放所述未使用资源,并将所述动态释放的资源重新分配给所述发出请求的虚拟机。
12.根据权利要求11所述的方法,其特征在于,还包括:
通过从所述虚拟机监控器向所述发出请求的虚拟机传递资源分配指令,向所述发出请求的虚拟机重新分配所述动态释放的资源;
根据所述资源分配指令热插拔所述动态释放的资源。
13.根据权利要求10至12中任一项所述的方法,其特征在于,还包括:
在所述发出请求的虚拟机与所述虚拟机监控器之间发起资源请求通信之前,从所述两个或两个以上虚拟机中的任一虚拟机内部运行的应用程序发起资源请求。
14.一种计算机程序,包括程序代码,其特征在于,当所述计算机程序在计算机上执行时,所述计算机程序代码用于执行根据权利要求10-13中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2017/069579 WO2019024994A1 (en) | 2017-08-02 | 2017-08-02 | SYSTEM, METHOD AND COMPUTER PROGRAM FOR VIRTUAL MACHINE RESOURCE ALLOCATION |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110998530A true CN110998530A (zh) | 2020-04-10 |
Family
ID=59649679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780093547.2A Pending CN110998530A (zh) | 2017-08-02 | 2017-08-02 | 一种虚拟机资源分配系统、方法及计算机程序 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200174821A1 (zh) |
CN (1) | CN110998530A (zh) |
WO (1) | WO2019024994A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113064695A (zh) * | 2021-03-25 | 2021-07-02 | 西安万像电子科技有限公司 | 显存资源的处理方法和装置 |
WO2022057317A1 (zh) * | 2020-09-18 | 2022-03-24 | 北京金山云网络技术有限公司 | 一种计算资源分配方法及相关设备 |
CN115309507A (zh) * | 2022-08-08 | 2022-11-08 | 科东(广州)软件科技有限公司 | 一种cpu资源占用率的计算方法、装置、设备及介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11558311B2 (en) * | 2020-01-08 | 2023-01-17 | Amazon Technologies, Inc. | Automated local scaling of compute instances |
CN112328367B (zh) * | 2020-11-11 | 2023-08-04 | 中国电子科技集团公司第十五研究所 | 一种云平台计算资源调度方法及系统 |
US11740921B2 (en) * | 2020-11-23 | 2023-08-29 | Google Llc | Coordinated container scheduling for improved resource allocation in virtual computing environment |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014004312A1 (en) * | 2012-06-29 | 2014-01-03 | Brocade Communications Systems, Inc. | Dynamic resource allocation for virtual machines |
CN104915151A (zh) * | 2015-06-02 | 2015-09-16 | 杭州电子科技大学 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
US20150363238A1 (en) * | 2014-06-11 | 2015-12-17 | Vmware, Inc. | Resource management in a virtualized computing environment |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8281303B2 (en) * | 2007-10-31 | 2012-10-02 | Hewlett-Packard Development Company, L.P. | Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine |
-
2017
- 2017-08-02 CN CN201780093547.2A patent/CN110998530A/zh active Pending
- 2017-08-02 WO PCT/EP2017/069579 patent/WO2019024994A1/en active Application Filing
-
2020
- 2020-01-31 US US16/779,083 patent/US20200174821A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014004312A1 (en) * | 2012-06-29 | 2014-01-03 | Brocade Communications Systems, Inc. | Dynamic resource allocation for virtual machines |
US20150363238A1 (en) * | 2014-06-11 | 2015-12-17 | Vmware, Inc. | Resource management in a virtualized computing environment |
CN104915151A (zh) * | 2015-06-02 | 2015-09-16 | 杭州电子科技大学 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022057317A1 (zh) * | 2020-09-18 | 2022-03-24 | 北京金山云网络技术有限公司 | 一种计算资源分配方法及相关设备 |
CN113064695A (zh) * | 2021-03-25 | 2021-07-02 | 西安万像电子科技有限公司 | 显存资源的处理方法和装置 |
CN115309507A (zh) * | 2022-08-08 | 2022-11-08 | 科东(广州)软件科技有限公司 | 一种cpu资源占用率的计算方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20200174821A1 (en) | 2020-06-04 |
WO2019024994A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200174821A1 (en) | System, method and computer program for virtual machine resource allocation | |
US11221884B2 (en) | Hybrid virtual machine configuration management | |
US7644137B2 (en) | Workload balancing in environments with multiple clusters of application servers | |
US7036123B2 (en) | System using fair-share scheduling technique to schedule processes within each processor set based on the number of shares assigned to each process group | |
CN109726005B (zh) | 用于管理资源的方法、服务器系统和计算机可读介质 | |
US8286178B2 (en) | Allocation and regulation of CPU entitlement for virtual processors in logical partitioned platform | |
CN107688495B (zh) | 调度处理器的方法及设备 | |
WO2019148854A1 (zh) | 虚拟化网元设备的部署方法以及装置 | |
CN104714846A (zh) | 资源处理方法、操作系统及设备 | |
CN112905342B (zh) | 资源调度方法、装置、设备及计算机可读存储介质 | |
US20210373928A1 (en) | Method, system and apparatus for sharing of fpga board by multiple virtual machines | |
KR102640232B1 (ko) | 가상화 환경에서의 자원 할당 방법 및 장치 | |
CN113821308B (zh) | 片上系统、虚拟机任务处理方法及设备、存储介质 | |
US10778807B2 (en) | Scheduling cluster resources to a job based on its type, particular scheduling algorithm,and resource availability in a particular resource stability sub-levels | |
CN113296926B (zh) | 一种资源分配方法、计算设备及存储介质 | |
CN111078353A (zh) | 存储设备的操作方法及物理服务器 | |
EP3994574A1 (en) | Harvest virtual machine for utilizing cloud-computing resources | |
CN115904761A (zh) | 片上系统、车辆及视频处理单元虚拟化方法 | |
CN114448909A (zh) | 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 | |
CN114253704A (zh) | 一种分配资源的方法及装置 | |
CN116157778A (zh) | 共享物理主机上混合集中分布式调度的系统和方法 | |
US20140245300A1 (en) | Dynamically Balanced Credit for Virtual Functions in Single Root Input/Output Virtualization | |
EP3811210B1 (en) | Method and supporting node for supporting process scheduling in a cloud system | |
US8978042B2 (en) | Method and system for maintaining game functionality for a plurality of game instances running on a computer system | |
CN111580935A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200410 |
|
RJ01 | Rejection of invention patent application after publication |