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