CN107870800A - 虚拟机活跃性检测 - Google Patents

虚拟机活跃性检测 Download PDF

Info

Publication number
CN107870800A
CN107870800A CN201610848543.8A CN201610848543A CN107870800A CN 107870800 A CN107870800 A CN 107870800A CN 201610848543 A CN201610848543 A CN 201610848543A CN 107870800 A CN107870800 A CN 107870800A
Authority
CN
China
Prior art keywords
client
timestamp value
virtual functions
inactive
gpu
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
Application number
CN201610848543.8A
Other languages
English (en)
Inventor
蒋伊南
刘凌飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Advanced Micro Devices Shanghai Co Ltd
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC, Advanced Micro Devices Shanghai Co Ltd filed Critical ATI Technologies ULC
Priority to CN201610848543.8A priority Critical patent/CN107870800A/zh
Priority to US15/348,175 priority patent/US20180088979A1/en
Publication of CN107870800A publication Critical patent/CN107870800A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

对与客户虚拟机(VM)的虚拟功能相关联的时间戳值进行周期性地更新。在所述客户VM的实例的初始化之后,指派线程池中的多个空闲工作线程中的一者以使所述时间戳值周期性地递增。至少部分基于所述时间戳值在指定时间段内不变来检测所述客户VM的不活动状态。可以基于所述客户VM的不活动状态而终止将资源提供给所述不活动客户VM的所述虚拟功能。在一个实施方案中,所述虚拟功能与图形处理单元(GPU)相关联,且终止资源的所述提供包括终止GPU时间的周期的调度。

Description

虚拟机活跃性检测
背景技术
技术领域描述
计算机资源的虚拟化允许在不同的虚拟机(VM)之间共享主机系统的物理资源,所述虚拟机是物理计算资源的软件抽象。主机系统将一定量的其物理资源分配给VM中的每一者,使得每个VM都能够使用所分配的资源来执行应用程序,包括操作系统(称为“客户操作系统”)。虚拟化技术使得系统管理员能够将物理资源转换到虚拟域中。例如,物理主机系统可以包括物理装置(例如图形卡、存储器存储装置或网络接口装置),所述物理装置在被虚拟化时包括用于在主机系统上执行的每个VM的对应虚拟功能(VF)。由此,VF提供用于在物理装置与虚拟机之间发送和接收数据的通道。
VM及其对应的VF有时可能遭遇意外的崩溃,或者说是变得反应迟钝。当VM崩溃发生时,VF先前正访问的资源变得不可用,这可导致VF挂起。VF的此故障可以通过使VF复位来解决,例如通过向VF发出功能级复位(FLR)命令来解决。然而,由于各种错误,到VF的个别的FLR命令有时并不成功,这可导致FLR命令被应用于整个物理装置,从而造成所有其它VM和VF的复位并影响主机系统的整体效率。
附图说明
图1是根据一些实施方案的用于管理虚拟机的系统的框图。
图2是说明根据一些实施方案的主机系统的实施方案的框图。
图3是说明根据一些实施方案的检测不活动VM的图。
图4是说明根据一些实施方案的用于检测不活动虚拟机的示例方法的流程图。
具体实施方式
图1到图4说明用于跟踪执行的虚拟机(VM)的状态以识别崩溃并防止与崩溃的VM相关联的虚拟功能消耗主机系统的物理资源的技术。在一些实施方案中,周期性地更新与客户虚拟机(VM)的虚拟功能相关联的时间戳值。在客户VM的实例的初始化之后,指派线程池中的多个空闲工作线程中的一者以使时间戳值周期性地递增。至少部分基于所述时间戳值在指定时间段内不变来检测客户VM的不活动状态。基于不活动客户VM的不活动状态而终止将资源提供给不活动客户VM的虚拟功能。在一个实施方案中,所述虚拟功能与图形处理单元(GPU)相关联,且终止资源的提供包括终止GPU时间的周期的调度。另外,将与不活动客户VM相关联的任何虚拟功能移动到不活动列表。防止不活动列表中的虚拟功能与不活动客户VM通信有助于避免虚拟功能中的停止或挂起。
图1是根据一些实施方案的用于托管虚拟机的处理系统100的框图。系统100包括主机系统102,所述主机系统具有主机系统硬件104,所述主机系统硬件包括图形处理单元(GPU)106(例如,图形卡或图形处理器)、中央处理单元(CPU)108、存储器110以及网络接口控制器112。GPU 106是图形渲染装置,所述图形渲染装置用于渲染计算机图形帧以用于最终显示。CPU 108是本领域中众所周知的微处理器或微控制器,且一般促进输入/输出处理、应用程序软件、驱动程序、显示产生和虚拟化管理。存储器110包括能够存储指令的任何永久性或易失性存储器。主机系统102经由网络接口控制器112在网络上耦合到一个或多个远程客户端(未示出)。
在图1的示例处理系统100中,在主机系统102上的存储器110中配置多个虚拟机(VM)114。来自主机系统102的物理装置的资源与VM 114共享。所述资源包括(例如)来自GPU106的图形处理器资源、来自CPU 108的中央处理单元资源、来自存储器110的存储器资源、来自网络接口控制器112的网络接口资源或类似者。VM 114使用所述资源来对各种数据(例如,视频数据、图像数据、文本数据、音频数据、显示数据、外围装置数据等)执行操作。在一个实施方案中,主机系统102包括多个资源,所述资源在VM 114当中分配且共享。
处理系统100还包括在存储器110中配置的管理程序116。管理程序116还被称为虚拟化管理器或虚拟机管理器(VMM)。管理程序116控制VM 114和主机系统102的各种物理硬件装置(即,资源)(例如GPU 106、CPU 108、存储器110和/或网络接口112)之间的交互。管理程序管理、分配并调度资源,所述资源包括(但不限于)CPU处理时间或次序、GPU处理时间或次序、存储器、带宽使用率以及存储器使用率。在一个实施方案中,管理程序116包括存储器110中的一组处理器可执行指令,以用于使用GPU调度程序118和CPU调度程序120来调整资源从硬件装置到VM 114的提供。
GPU调度程序118通过向VM 114调度GPU时间的周期来管理并提供GPU 106的GPU带宽。在一个实施方案中,GPU调度程序118以轮询方式向VM 114调度GPU时间的周期。一旦经调度,将不把额外的GPU时间的周期分配给特定VM,直到所有其它VM都已经被调度。例如,根据假定的轮询调度,将四个GPU时间的周期提供给VM(1)114。在那四个GPU时间的周期被VM(1)114的图形处理消耗后,不再为VM(1)114调度另外的GPU时间的周期,直到其它VM(例如,VM(2)到VM(N))中的每一者都已经消耗掉其被提供的四个GPU时间的周期。
类似地,CPU调度程序120通过向VM 114调度CPU时间的周期来管理并提供CPU 108的CPU带宽。在一个实施方案中,CPU调度程序120以轮询方式向VM 114调度CPU时间的周期。一旦经调度,将不把额外的CPU时间的周期分配给特定VM,直到所有其它VM都已经被调度。例如,根据假定的轮询调度,将四个CPU时间的周期提供给VM(1)114。在这四个CPU时间的周期被VM(1)114的图形处理消耗后,不再为VM(1)114调度另外的CPU时间的周期,直到其它VM(例如,VM(2)到VM(N))中的每一者都已经消耗掉其被提供的四个CPU时间的周期。
处理系统100还包括在存储器110中配置的一个或多个时间戳122(例如,时间戳(1)到时间戳(N))。时间戳122是计数器,其中每个计数器与VM 114中的一个不同VM相关联。例如,时间戳(1)与VM(1)相关联,时间戳(2)与VM(2)相关联,依此类推。每个时间戳122具有在其相关联的VM的实例的初始化之后周期性地更新的时间戳值。
在一个实施方案中,所述一个或多个时间戳122中的每一者的时间戳值在其相关联的VM 114的初始化之后被设定为初始值零。时间戳值由其相关联的VM根据所消耗的GPU和/或CPU时间的周期的数目而周期性地递增。因此,时间戳值提供由VM 114中的每一者消耗的计算资源的量度。在另一实施方案中,所述一个或多个时间戳122中的每一者的时间戳值在其相关联的VM 114的初始化之后被设定为初始值零,且时间戳值由其相关联的VM随主机系统102上的CPU 108的每个时钟周期而周期性地递增。因此,时间戳提供自从其相关联的VM的初始化或复位以来的CPU周期的数目的计数器。在其它实施方案中,所述一个或多个时间戳122中的每一者的时间戳值在其相关联的VM 114的初始化之后被设定为值零;时间戳值由其相关联的VM周期性地递增预定量。只要VM 114保持活动且尚未发生崩溃或者说是变得反应迟钝,记录到其相应的VM 114的所述一个或多个时间戳122的时间戳值都将继续随时间递增。至少部分基于时间戳值在指定时间段内不变来检测VM的不活动状态。时间戳122中的任一者都未在预定时间段内改变将指示其相应的VM 114已经变得不活动(例如,崩溃或被终止)。
图2是说明更详细地描绘图1的主机系统102的主机系统202的实施方案的框图。如先前所论述,管理程序204在共享的存储器206中配置且在主机系统202上运行,以初始化并管理客户虚拟机(VM)208的实例。在一些实施方案中,主机系统202是集中式服务器,其被分割成多个VM以向用户提供虚拟桌面。
管理程序204包括用于管理硬件资源的软件组件,以及用于虚拟化或模拟物理装置(例如,主机系统202的硬件)以提供虚拟装置的软件组件,所述虚拟装置例如为虚拟磁盘、虚拟处理器、虚拟网络接口或虚拟GPU,如本文针对每个虚拟机208进一步描述的那样。在一个实施方案中,每个虚拟机208是物理计算机系统的抽象,且可以包括Microsoft等操作系统(OS)和应用程序,所述操作系统和应用程序分别被称为客户OS和客户应用程序,其中术语“客户”指示其为驻留在VM内的软件实体。
VM 208一般经过实例化,这意味着为VM 208中的每一者创建单独的实例。尽管示出两个虚拟机(例如,VM(1)208(1)和VM(2)208(2)),但本领域的普通技术人员将认识到,主机系统202可支持任何数目的虚拟机。如所说明,管理程序204提供两个虚拟机208(1)和208(2),其中客户虚拟机208中的每一者提供客户系统软件所驻留和工作的虚拟环境。客户系统软件包括通常在客户OS的控制下的应用程序软件(APPS)和装置驱动程序。在一些实施方案中,应用程序软件包括用于执行各种任务的多个软件包(例如,文字处理软件、数据库软件、消息接发软件及类似者)。
在各种虚拟化环境中,单根输入/输出虚拟化(SR-IOV)规范允许单个外围组件互连快速(PCIe)装置呈现为多个单独的PCIe装置。主机系统202的具有SR-IOV功能的物理PCIe装置(例如图形处理单元210、共享的存储器206或中央处理单元)被配置成呈现为多个功能。如本文中所使用,术语“功能”是指访问受到PCIe总线控制的装置。SR-IOV使用物理功能(PF)和虚拟功能(VF)的概念而操作,其中物理功能是与PCIe装置相关联的全功能的功能。然而,虚拟功能从物理功能得到,且表示缺少配置资源并仅处理输入/输出的功能。一般来说,将VM中的每一者指派给VF。
在图2的示例实施方案中,SR-IOV规范使得能够在虚拟机208当中共享图形处理单元210。图形处理单元210是具有物理功能的PCIe装置(未示出)。虚拟功能212从图形处理单元210的物理功能得到,由此将单个物理功能(例如,图形处理单元210)映射到与客户虚拟机208共享的多个虚拟功能212。在一些实施方案中,管理程序204将虚拟功能212映射(指派)到客户虚拟机208。例如,VF(1)212(1)映射到VM(1)208(1),VF(2)212(2)映射到VM(2)208(2),以此类推。虚拟功能212以与物理GPU将向其操作系统呈现的方式相同的方式向其相应的虚拟机208的OS呈现,且因此,虚拟机208使用虚拟功能212,仿佛所述虚拟功能是硬件装置一样。
使用安装在虚拟机208的客户OS中的虚拟图形驱动程序214来提供对虚拟功能212的驱动程序支持。如本文中所使用,装置驱动程序是基于计算机程序的组件,所述组件配置机器且用作物理装置与使用所述装置的应用程序或操作系统之间的翻译器。装置驱动程序通常接受通用高级命令,且将其分裂为装置被驱动所需的一系列低级、装置专有的命令。虚拟图形驱动程序214起到与典型的装置驱动程序相同的作用,不同之处在于所述典型的装置驱动程序对主机系统202进行配置,以提供在提供硬件模拟的虚拟功能212与在VM 208上运行的客户OS/应用程序软件之间的翻译。
在管理程序204中配置GPU调度程序216来管理GPU资源的分配从而执行虚拟功能212的操作。在一个实施方案中,GPU调度程序216通过根据轮询或某一其它基于预定优先级的调度方案来在VM 208之间进行时间分片来管理并提供GPU 210的GPU带宽。例如,在一个实施方案中,GPU调度程序216基于每个VM的所分配时间段(例如,预定数目的GPU时钟周期)来在VM 208之间周期性地切换GPU带宽的分配。一旦经调度,将不把额外的GPU时间的周期分配给特定VM,直到所有其它VM都已经被调度。例如,根据假定的轮询调度,将四个GPU时间的周期提供给VM(1)208(1)。在这四个GPU时间的周期被VM(1)208(1)的图形处理消耗后,不再为VM(1)208(1)调度另外的GPU时间的周期,直到其它VM(例如,VM(2)到VM(N))中的每一者都已经消耗掉其被提供的四个GPU时间的周期。
处理系统202还包括在共享存储器206中配置的一个或多个时间戳218(例如,时间戳(1)到时间戳(N))。时间戳218是与VM 208相关联的计数器。例如,时间戳(1)与VM(1)相关联,时间戳(2)与VM(2)相关联,依此类推。每个时间戳218具有时间戳值,所述时间戳值在其相关联的VM的实例的初始化之后周期性地更新。在另一实施方案中,所述一个或多个时间戳218中的每一者的时间戳值在其相关联的VM 208的初始化之后被设定为初始值零;由时间戳值的相关联的VM通过根据所消耗的GPU时间的周期的数目来增加时间戳值而使时间戳值周期性地递增。这样的时间戳提供VM 208中的每一者所消耗的GPU资源的量度。在另一实施方案中,所述一个或多个时间戳218中的每一者的时间戳值在其相关联的VM 208的初始化之后被设定为值零;由时间戳值的相关联的VM通过使时间戳值随主机系统202上的GPU210的每个时钟周期递增而使时间戳值周期性地递增。这样的时间戳提供自从其相关联的VM的初始化或复位以来的GPU周期的数目的计数器。在其它实施方案中,所述一个或多个时间戳218中的每一者的时间戳值在其相关联的VM 208的初始化之后被设定为值零;时间戳值由其相关联的VM周期性地递增预定量。
VM 208中的每一者维持线程池220,所述线程池具有用于执行各种任务的多个可用工作线程。每个工作线程(例如,线程(1)到线程(N))提供可被指派有待执行的任务的执行线程。在操作中,每个VM 208的工作线程中的一者被记录到时间戳218,且被指派以在其相应的VM活动的同时使时间戳218的时间戳值周期性地递增。例如,在图2的实施方案中,VM(1)208(1)的线程池220中的线程(1)被记录到时间戳(1)218。VM(2)208(2)的线程池220中的线程(1)被记录到时间戳(2)218。根据上文描述的各种实施方案,在VM 208的图形驱动程序214完成其初始化任务之后,线程(1)工作线程使其记录的时间戳218的时间戳值周期性地递增。
GPU调度程序216中的工作线程222承担监视时间戳218的任务,以确定时间戳值在预定时间段内是否一直改变。只要VM 208保持活动且尚未崩溃或者说是变得反应迟钝,记录到其相应的VM 208的时间戳218的时间戳值都将继续随时间递增。时间戳218中的任一者都未在预定时间段内改变将指示其相应的VM 208已经变得不活动(例如,崩溃或被终止)。因此,不活动VM的虚拟功能212不再需要GPU资源。
当VM崩溃发生时,VF先前正访问的资源变得不可用,这导致VF挂起。响应于检测到VM 208的不活动状态,GPU调度程序216将不活动GPU移动到不活动列表,且终止向不活动VM的虚拟功能212调度GPU带宽。因为不再为不活动VM的虚拟功能212调度GPU带宽,所以GPU活动将不在所述虚拟功能212上发生;因此,通过防止虚拟功能212与不活动VM通信而避免VF挂起。
图3是说明根据一些实施方案的检测不活动VM的图。如图所示,监视时间戳值以确定三个虚拟机(例如,VM(1)、VM(2)和VM(3))的活动状态。在第一时间点T1处,所有三个虚拟机都是活动的,其中VM(1)、VM(2)和VM(3)分别具有在时间戳(1)、时间戳(2)和时间戳(3)中的TS=500、TS=420和TS=300的时间戳值。因此,向三个虚拟机中的每一者调度四个GPU时间的周期,使得VM以轮询调度方案轮流使用GPU资源,如先前所描述。
在第二时间点T2处,对于VM(1)和VM(3),时间戳(1)和时间戳(3)中的时间戳值已经分别递增至TS=524和TS=324。因此,监视时间戳值示出VM(1)和VM(3)在时间T2处保持活动。然而,在时间T2处,用于VM(2)的时间戳(2)中的时间戳值已经与其在时间T1的值TS=420保持相同,处于TS=420。时间戳(2)的时间戳值从时间T1到T2未改变将指示VM(2)已经停止(或者说是变得不活动)。因此,不活动VM(2)的虚拟功能不再需要GPU资源。因此,终止将GPU资源提供给VM(2)的虚拟功能。在此实施方案中,调整调度方案,使得向VM(1)和VM(3)各自调度六个GPU时间的周期,使得VM(1)和VM(3)以轮询调度方案轮流使用GPU资源。在其它实施方案中,不将先前为不活动VM所调度的GPU资源重新分配给活动VM。而是,所述调度保持与每个活动VM四个周期的分配相同,且只是终止将GPU周期分配给不活动VM。
尽管已经主要在GPU的背景下描述了本文论述的实施方案,但本领域的普通技术人员将认识到,在不脱离本发明的范围的情况下,本文所描述的原理一般适用于计算系统的任何物理装置。
图4是说明根据一些实施方案的用于检测不活动虚拟机的示例方法400的流程图。
在框402处,创建客户虚拟机(VM)的实例且将虚拟功能指派给客户VM。在一个实施方案中,虚拟功能与图形处理单元(GPU)的功能性相关联。在另一实施方案中,虚拟功能与中央处理单元(CPU)的功能性相关联。在其它实施方案中,虚拟功能与PCIe装置(例如,存储器装置或网络适配器)的功能性相关联。
在框404处,周期性地更新与虚拟功能相关联的时间戳值。在主机系统的共享存储器中配置时间戳值,且指派在客户VM的装置驱动程序中实例化的线程以使时间戳值周期性地递增。在一个实施方案中,时间戳值在客户VM的初始化之后被设定为值零,且通过根据所消耗的GPU时间的周期的数目来增加时间戳值而使时间戳值周期性地递增。在另一实施方案中,时间戳值在客户VM的初始化之后被设定为值零,且通过随CPU或GPU时钟的每个时钟周期使时间戳值递增而使时间戳值周期性地递增。
在决策框406处,监视时间戳值以确定时间戳值在预定时间段内是否改变。如果是,那么时间戳值中的变化指示客户VM保持活动,且方法400返回到框404以继续周期性地更新时间戳值。如果否,那么方法400前进到框408,其中基于时间戳值在预定时间段内未改变而检测到客户VM的不活动状态。在一些实施方案中,在主机系统的资源调度程序中实例化某一线程,所述线程周期性地查询时间戳值以确定其是否已改变。例如,GPU调度程序中的线程承担监视时间戳值在预定时间段内的改变的任务。只要客户VM保持活动,时间戳值就将继续随时间改变。
在框410处,基于从框408检测到不活动客户VM的不活动状态,将不活动客户VM的虚拟功能指派给不活动列表。在框412处,基于客户VM的不活动状态,终止将主机系统上的资源提供给所述客户VM的虚拟功能。在一个实施方案中,终止资源提供包括终止向不活动客户VM的虚拟功能调度GPU带宽。在另一实施方案中,终止资源提供包括终止向不活动客户VM的虚拟功能调度CPU处理周期。在其它实施方案中,终止资源提供包括终止向不活动客户VM的虚拟功能调度存储器磁盘访问或网络使用。
在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实施。所述软件包括存储在或者说是有形地体现在非暂时性计算机可读存储介质上的一组或多组可执行指令。所述软件可包括指令和某些数据,其当由一个或多个处理器执行时会操纵所述一个或多个处理器执行上文所描述的技术的一个或多个方面。所述非暂时性计算机可读存储介质可包括(例如)磁盘或光盘存储装置、固态存储装置例如快闪存储器、高速缓冲存储器、随机存取存储器(RAM),或其它非易失性存储器装置,和类似者。存储在非暂时性计算机可读存储介质上的可执行指令可呈由一个或多个处理器解译或者说是执行的源代码、汇编语言代码、目标代码,或其它指令格式。
应注意,不需要上文在一般描述中所描述的所有活动或要素,可能不需要特定活动或装置的一部分,且可执行一个或多个另外的活动,或包括除了所描述的要素之外的要素。此外,列举活动的次序不一定是执行活动的次序。而且,已经参考具体实施方案描述了概念。然而,本领域的普通技术人员应了解,可在不脱离所附权利要求书中所陈述的本公开的范围的情况下作出各种修改和改变。因此,可在说明性意义而不是限制性意义上对待说明书和附图,且希望所有此类修改包括在本公开的范围内。
上文已关于特定实施方案描述了益处、其它优势和问题的解决方案。然而,这些益处、优势、问题的解决方案以及可导致任何益处、优势或解决方案发生或变得更加突出的任何特征不应被解释为任何或所有权利要求的关键、所需或实质特征。另外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以按受益于本文教示的益处的本领域技术人员显而易见的不同但等效的方式加以修改和实践。除了所附权利要求书中所描述的内容之外,不希望对本文示出的构造或设计的细节进行限制。因此显然的是,可更改或修改上文所公开的特定实施方案,且所有此类变化都被视为在所公开的主题的范围内。因此,本文寻求的保护在所附权利要求书中予以陈述。

Claims (20)

1.一种方法,其包括:
在主机系统上的共享存储器中周期性地更新与客户虚拟机(VM)的虚拟功能相关联的时间戳值;
至少部分基于所述时间戳值在指定时间段内保持固定来检测所述客户VM的不活动状态;以及
响应于检测到所述客户VM的所述不活动状态,终止将所述主机系统上的第一资源提供给所述虚拟功能。
2.根据权利要求1所述的方法,其进一步包括:
响应于检测到所述客户VM的所述不活动状态,将所述虚拟功能指派到不活动列表;以及
防止所述不活动列表中的所述虚拟功能与具有所述不活动状态的所述客户VM通信。
3.根据权利要求1所述的方法,其中所述虚拟功能与图形处理单元(GPU)相关联,且所述主机系统上的所述第一资源包括GPU时间的周期。
4.根据权利要求1所述的方法,其中所述虚拟功能与中央处理单元(CPU)相关联,且所述主机系统上的所述第一资源包括CPU处理时间的周期。
5.根据权利要求1所述的方法,其中周期性地更新所述时间戳值包括指派在所述VM的客户VM装置驱动程序中实例化的线程,以使所述时间戳值周期性地递增。
6.根据权利要求5所述的方法,其中指派所述线程包括指派线程池中的多个空闲工作线程中的一者,以使所述时间戳值周期性地递增。
7.根据权利要求1所述的方法,其中检测所述客户VM的不活动状态包括指派在装置调度程序中实例化的线程以周期性地查询所述时间戳值,且确定所述时间戳值在所述指定时间段内是否已经改变。
8.根据权利要求1所述的方法,其中周期性地更新所述时间戳值在所述客户VM的实例的初始化之后开始。
9.一种系统,其包括:
服务器,其用于托管多个客户虚拟机(VM),其中所述服务器包括具有分配给所述多个客户VM的资源的物理装置,且此外,其中与所述物理装置相关联的虚拟功能被配置用于所述多个客户VM中的每一者;以及
共享存储器,其中所述共享存储器存储所述多个所述客户VM的每个虚拟功能的时间戳值,其中至少部分基于所述多个客户VM中的一个客户VM的所述时间戳值在指定时间段内保持固定来检测所述多个客户VM中的所述一个客户VM的不活动状态。
10.根据权利要求9所述的系统,其中所述物理装置包括图形处理单元(GPU),所述图形处理单元具有分配给所述多个客户VM的GPU时间的周期。
11.根据权利要求10所述的系统,其中向所述多个客户VM中的具有所述不活动状态的所述一个客户VM的所述虚拟功能终止GPU时间的周期。
12.根据权利要求9所述的系统,其中响应于检测到所述不活动状态,所述多个客户VM中的所述一个客户VM的所述虚拟功能被指派不活动列表,且此外,其中针对所述不活动列表中的虚拟功能终止资源的提供。
13.根据权利要求9所述的系统,其中所述物理装置包括中央处理单元(CPU),所述中央处理单元具有分配给所述多个客户VM的CPU处理时间的周期。
14.根据权利要求9所述的系统,其中线程在所述多个客户VM中的每一者的客户VM装置驱动程序中实例化,以使所述时间戳值周期性地递增。
15.根据权利要求9所述的系统,其中线程在装置调度程序中实例化以周期性地查询每个虚拟功能的所述时间戳值,且确定所述时间戳值在所述指定时间段内是否已经改变。
16.根据权利要求9所述的系统,其中所述时间戳值在所述多个客户VM中的每个实例的初始化之后开始周期性地更新。
17.一种体现可执行指令集的非暂时性计算机可读介质,所述可执行指令集用于操纵处理器来执行以下操作:
在主机系统上的共享存储器中周期性地更新与客户虚拟机(VM)的虚拟功能相关联的时间戳值;
至少部分基于所述时间戳值在指定时间段内保持固定来检测所述客户VM的不活动状态;以及
终止将所述主机系统上的资源提供给具有所述不活动状态的所述虚拟功能。
18.根据权利要求17所述的非暂时性计算机可读介质,其中所述处理器将:
响应于检测到所述客户VM的所述不活动状态,将所述虚拟功能指派到不活动列表;以及
防止所述不活动列表中的所述虚拟功能与具有所述不活动状态的所述客户VM通信。
19.根据权利要求17所述的非暂时性计算机可读介质,其中所述虚拟功能与图形处理单元(GPU)相关联,且此外,其中通过终止向所述虚拟功能调度GPU时间的周期来终止资源的所述提供。
20.根据权利要求17所述的非暂时性计算机可读介质,其中通过指派在所述客户VM的客户VM装置驱动程序中实例化的线程以使所述时间戳值周期性地递增来周期性地更新所述时间戳值。
CN201610848543.8A 2016-09-23 2016-09-23 虚拟机活跃性检测 Pending CN107870800A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610848543.8A CN107870800A (zh) 2016-09-23 2016-09-23 虚拟机活跃性检测
US15/348,175 US20180088979A1 (en) 2016-09-23 2016-11-10 Virtual machine liveliness detection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610848543.8A CN107870800A (zh) 2016-09-23 2016-09-23 虚拟机活跃性检测

Publications (1)

Publication Number Publication Date
CN107870800A true CN107870800A (zh) 2018-04-03

Family

ID=61685438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610848543.8A Pending CN107870800A (zh) 2016-09-23 2016-09-23 虚拟机活跃性检测

Country Status (2)

Country Link
US (1) US20180088979A1 (zh)
CN (1) CN107870800A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115328665A (zh) * 2022-10-12 2022-11-11 中瓴智行(成都)科技有限公司 基于Hypervisor的GPU虚拟化方法、装置及电子设备

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9998978B2 (en) * 2015-04-16 2018-06-12 Visa International Service Association Systems and methods for processing dormant virtual access devices
CN109271290B (zh) * 2018-07-27 2022-06-07 广州方硅信息技术有限公司 一种监测线程使用率的方法、装置及存储装置
WO2020158100A1 (ja) * 2019-01-30 2020-08-06 富士フイルム株式会社 医用画像解析装置、方法およびプログラム
US20210089423A1 (en) * 2019-09-24 2021-03-25 Advanced Micro Devices, Inc. Flexible multi-user graphics architecture
US11709698B2 (en) * 2019-11-04 2023-07-25 Vmware, Inc. Multi-site virtual infrastructure orchestration of network service in hybrid cloud environments
US11640315B2 (en) 2019-11-04 2023-05-02 Vmware, Inc. Multi-site virtual infrastructure orchestration of network service in hybrid cloud environments

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499021A (zh) * 2008-01-31 2009-08-05 国际商业机器公司 在多个虚拟机上动态分配资源的方法和装置
US20090235247A1 (en) * 2008-03-14 2009-09-17 Samsung Electronics Co., Ltd. Apparatus and method for checking idle period of virtual machine, and computer readable recording medium for embodying the method
US20100122264A1 (en) * 2008-11-13 2010-05-13 Zhou Xiaocheng Language level support for shared virtual memory
US20130152047A1 (en) * 2011-11-22 2013-06-13 Solano Labs, Inc System for distributed software quality improvement
US20140137112A1 (en) * 2012-11-09 2014-05-15 International Business Machines Corporation Automatic virtual machine termination in a cloud
US20150012919A1 (en) * 2013-07-05 2015-01-08 Blue Prism Limited System for Automating Processes
US20150161008A1 (en) * 2013-12-05 2015-06-11 Vmware, Inc. Virtual machine crash management
US20160203027A1 (en) * 2015-01-12 2016-07-14 International Business Machines Corporation Dynamic sharing of unused bandwidth capacity of virtualized input/output adapters

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539339B1 (en) * 1997-12-12 2003-03-25 International Business Machines Corporation Method and system for maintaining thread-relative metrics for trace data adjusted for thread switches
US20060048160A1 (en) * 2004-09-02 2006-03-02 International Business Machines Corporation Method, apparatus, and computer program product for providing a self-tunable parameter used for dynamically yielding an idle processor
US8621463B2 (en) * 2011-09-09 2013-12-31 GM Global Technology Operations LLC Distributed computing architecture with dynamically reconfigurable hypervisor nodes
US8880687B1 (en) * 2012-02-06 2014-11-04 Netapp, Inc. Detecting and managing idle virtual storage servers
US9513950B2 (en) * 2012-07-25 2016-12-06 Vmware, Inc. Dynamic resource configuration based on context
US9529613B2 (en) * 2012-12-12 2016-12-27 Vmware, Inc. Methods and apparatus to reclaim resources in virtual computing environments
JP6260310B2 (ja) * 2014-02-03 2018-01-17 富士通株式会社 ネットワークスイッチ、ネットワークシステム及びネットワークシステムの制御方法
GB2525003B (en) * 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data Processing Systems
WO2015196343A1 (en) * 2014-06-24 2015-12-30 Intel Corporation Virtual machine power management
US9535740B1 (en) * 2015-08-26 2017-01-03 International Business Machines Corporation Implementing dynamic adjustment of resources allocated to SRIOV remote direct memory access adapter (RDMA) virtual functions based on usage patterns

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499021A (zh) * 2008-01-31 2009-08-05 国际商业机器公司 在多个虚拟机上动态分配资源的方法和装置
US20090235247A1 (en) * 2008-03-14 2009-09-17 Samsung Electronics Co., Ltd. Apparatus and method for checking idle period of virtual machine, and computer readable recording medium for embodying the method
US20100122264A1 (en) * 2008-11-13 2010-05-13 Zhou Xiaocheng Language level support for shared virtual memory
US20130152047A1 (en) * 2011-11-22 2013-06-13 Solano Labs, Inc System for distributed software quality improvement
US20140137112A1 (en) * 2012-11-09 2014-05-15 International Business Machines Corporation Automatic virtual machine termination in a cloud
US20150012919A1 (en) * 2013-07-05 2015-01-08 Blue Prism Limited System for Automating Processes
US20150161008A1 (en) * 2013-12-05 2015-06-11 Vmware, Inc. Virtual machine crash management
US20160203027A1 (en) * 2015-01-12 2016-07-14 International Business Machines Corporation Dynamic sharing of unused bandwidth capacity of virtualized input/output adapters

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115328665A (zh) * 2022-10-12 2022-11-11 中瓴智行(成都)科技有限公司 基于Hypervisor的GPU虚拟化方法、装置及电子设备
CN115328665B (zh) * 2022-10-12 2023-02-28 中瓴智行(成都)科技有限公司 基于Hypervisor的GPU虚拟化方法、装置及电子设备

Also Published As

Publication number Publication date
US20180088979A1 (en) 2018-03-29

Similar Documents

Publication Publication Date Title
CN107870800A (zh) 虚拟机活跃性检测
US9747126B2 (en) Optimization of virtual machines
US9569276B2 (en) System and method for dynamic user assignment in a virtual desktop environment
US9201703B2 (en) Sharing kernel services among kernels
US9262220B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
CN102890643B (zh) 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
JP4705051B2 (ja) 計算機システム
US9170840B2 (en) Duration sensitive scheduling in a computing environment
CN105579961A (zh) 数据处理系统
US20140373020A1 (en) Methods for managing threads within an application and devices thereof
US9483247B2 (en) Automated software maintenance based on forecast usage
US11169846B2 (en) System and method for managing tasks and task workload items between address spaces and logical partitions
US11327810B2 (en) Managing virtual machine memory balloon using time series predictive data
KR20200000442A (ko) 다중―단일―테넌트 SaaS 서비스들의 관리
KR20190028210A (ko) 컨테이너 기반 인공지능 어플리케이션을 배포하는 클라우드 서비스 방법과 시스템
US9553761B2 (en) Dynamic server to server configuration and initialization
US8977752B2 (en) Event-based dynamic resource provisioning
WO2022184495A1 (en) Serverless runtime container allocation
US10360070B2 (en) Application-level dispatcher control of application-level pseudo threads and operating system threads
US10680890B2 (en) Non-disruptively splitting a coordinated timing network
US9940149B2 (en) System and method for automatically launching virtual machines based on attendance
Chappell Windows HPC server and Windows azure
EP3343370A1 (en) Method of processing opencl kernel and computing device therefor
US9547522B2 (en) Method and system for reconfigurable virtual single processor programming model
US20210004250A1 (en) Harvest virtual machine for utilizing cloud-computing resources

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180403