虚拟机运行跟踪制造技术

技术编号:22570078 阅读:26 留言:0更新日期:2019-11-17 10:16
实施方式涉及虚拟化层捕获由虚拟化层所管理的VM的可重放运行跟踪。可以在由虚拟化层管理的任何运行单元上执行运行跟踪,运行单元例如线程、进程、虚拟处理器、个体VM、多个VM等。被跟踪的运行单元可以并行运行。运行跟踪涉及将以下各项捕获到缓冲区中:运行的指令、输入到指令的存储器、由指令输出的存储器、指令接触的寄存器和排序标记。可以以块捕获跟踪数据,其中保留了因果关系,并且保留了块之间但不必是块内的排序。可以通过在上下文切换之间插入单调递增的标记来描绘块,由此对块进行相对排序。可以通过标识非确定性事件而部分地提供确定性。VM跟踪对客户软件是透明的,客户软件不需要感知。备选地,客户可以与虚拟化层对接以控制跟踪功能性。

Virtual machine run tracking

The implementation mode involves that the virtualization layer captures the replay running trace of the VM managed by the virtualization layer. Running trace can be performed on any running unit managed by the virtualization layer, such as thread, process, virtual processor, individual VM, multiple VMS, etc. The tracked running unit can run in parallel. Running trace involves capturing the following items into buffer: running instruction, memory input to instruction, memory output by instruction, register contacted by instruction and sorting mark. Trace data can be captured in blocks, where causality is preserved, and sorting between blocks, but not necessarily within blocks, is preserved. The blocks can be mapped by inserting monotonically increasing markers between context switches, thereby ranking the blocks relatively. Certainty can be provided in part by identifying non deterministic events. VM tracking is transparent to the customer software, which does not need to be aware. Alternatively, customers can interface with the virtualization layer to control tracking functionality.

【技术实现步骤摘要】
【国外来华专利技术】虚拟机运行跟踪
技术介绍
机器虚拟化是用于将计算机的硬件呈现为多个虚拟机(VM)的技术,其中每个虚拟机能够同时在相同计算机上运行。每个此类虚拟机(VM)能够托管客户操作系统,并且计算机的硬件到客户操作系统的虚拟化呈现对客户操作系统是基本上透明的。机器虚拟化已经变得有效、可靠并且便于管理。因此,机器虚拟化被更加频繁地使用,并且用于扩展应用和工作负载的类型。机器虚拟化越来越多的使用导致对于如下的需求增加:理解VM的运行、分析性能、维护VM的计算活动的记录以及调试VM的运行和/或其客户软件。VM运行跟踪是为了这些目的而提出的一种技术。运行跟踪包括跟踪VM的运行活动,并且存储运行跟踪以用于后续分析。运行跟踪可以用于详细的运行后分析以及调试VM运行。理想地,运行跟踪是确定性的并且“可重放”,也即,其具有足够的信息以支持软件调试工具中常见的回放特征,诸如语句的逐步运行、反向回放、详细堆栈以及每个语句之前和之后的符号分析等。虽然已经认识到VM运行跟踪是可期望的,但是先前的尝试在实现和性能上存在缺点。一种方法是强制VM在单个运行线程中运行,这促进确定性,但是难以实现并且限制了性能。对于并行性非常关键的许多类型的客户软件而言,该限制禁止了产品使用。另一种方法捕获所有VM存储器,但是这带来了启动和存储成本。又一种方法使用存储器状态的复杂运行时监测来维护跟踪确定性,但是这难以准确实现,具有高开销,并且可能显著影响一些工作负载的性能。具有跟踪启动指令的仪器客户软件是另一种可能性,但是其具有需要重新编译以及部署新的可运行代码的实际缺点。其他的方法尝试了在VM和管理程序之间插入跟踪逻辑,但是成败参半并且具有许多平台特异性。所需要的是便于在虚拟化层实现的用于可重放VM运行跟踪的技术,对VM性能具有较低的影响,维持并发多处理VM的因果关系,并且可以在有或没有VM可见性或动作的情况下使用。
技术实现思路
包括以下
技术实现思路
仅为了介绍在下文具体实施方式中讨论的一些概念。该
技术实现思路
不是全面的,并且不旨在描述所要求保护的主题的范围,所要求保护的主题的范围由结尾处提供的权利要求来阐述。实施方式涉及捕获由虚拟化层所管理的VM的可重放运行跟踪的虚拟化层。可以对由虚拟化层管理的运行的任何单元执行运行跟踪,例如,线程、进程、虚拟处理器、个体VM、多个VM等。被跟踪的运行单元可以并行运行。运行跟踪涉及将以下捕获到缓冲区(可选地环形):运行的指令、输入到指令的存储器、由指令输出的存储器、由指令接触的寄存器以及排序标记。运行跟踪数据可以以块来捕获,其中保留了因果关系并且保留了在块之间但不必在块内的排序。可以通过在上下文切换之间插入单调增加的标记来描述块,由此对块进行相对地排序。可以通过标识非确定性事件而部分地提供确定性。VM跟踪可以对客户软件是透明的,其不需要感知化。备选地,客户可以与跟踪实现虚拟化层对接以控制跟踪功能性。下面将参考结合附图考虑的以下详细描述来解释许多伴随特征。附图说明根据结合附图阅读,以下具体实施方式将更好地理解本说明书,其中相似的附图标记用于指定所附描述中相似的部分。图1示出了包括已知类型的管理程序的示例虚拟化环境。图2示出了配置用于VM运行跟踪的虚拟化层。图3示出了用于在虚拟化层处对线程跟踪进行排序的过程。图4示出了插入到相应线程的跟踪中的排序标记。图5示出了在其上可以实现上文描述的实施方式的计算设备的细节。具体实施方式以下讨论的实施方式涉及以有效的、准确反映因果关系的方式跟踪虚拟机(VM)的运行。运行跟踪由虚拟化层内的跟踪组件来提供。跟踪组件能够以产生可重放运行跟踪的方式来跟踪并行VM运行。可以在涉及或不涉及VM内的运行内的客户软件的情况下跟踪VM。根据跟踪何时发生以及哪些VM或客户软件被有效跟踪,可以灵活地界定跟踪的范围。图1示出了包括已知类型的管理程序100的示例虚拟化环境。计算机102具有硬件104,其包括中央处理单元(CPU)106、存储器108、网络接口110、非易失性存储112以及未示出的其他组件,诸如总线、显示器和/或显示适配器等。管理程序100管理和促进虚拟机(VM)114、116的运行。每个虚拟机114、116通常具有包括虚拟盘的虚拟化设备,在虚拟盘内存储客户(guest)/主机操作系统116、118。机器或系统虚拟化由管理程序100提供,管理程序100与在特权VM116中运行的主机操作系统118协作。虚拟化的任务可以以多种方式分布在管理程序100和主机操作系统118之间。在一些情况下,主机操作系统118可以仅包括诸如工具的最少的虚拟元件以及用于对管理程序100进行管理的用户接口。在其他情况下,主机操作系统118可以包括以下中的一个或多个:设备虚拟化管理、VM间通信设施、运行设备驱动器、启动或停止其他VM、用于与VM管理进行交互的工具,以及其他。简言之,客户操作系统118有可能可以处理管理程序的核心功能之外的任何虚拟化任务,诸如CPU和存储器共享。如本文使用的,“虚拟化层”将是指共同提供机器虚拟化的管理程序和客户VM的任何组合。该术语也指不使用特权VM来提供虚拟化功能性的虚拟化系统。图2示出了配置用于VM运行跟踪的虚拟化层130。虚拟化层130包括跟踪组件132和环形缓冲区134。一般而言,跟踪组件132操作如下。当由CPU106的后备物理处理器针对处理时间而调度虚拟机114的虚拟处理器136时,由后备物理处理器(如本文使用的术语“物理处理器”是指在超线程CPU的情况下的物理核心和逻辑核心二者)处理针对相对应的客户运行单元(例如,线程)和该运行的处理器指令(运行流138)发生的上下文切换。由虚拟机中的软件发出的运行流138的指令当被接收或运行并且存储在环形缓冲区134中时,被跟踪组件132捕获。在一个实施方式中,使用CPU的基于硬件的跟踪特征来捕获指令。在另一实施方式中,虚拟化层实现处理器仿真,并且指令捕获被内置到处理器仿真器中。在多数情况下,当运行跟踪有效时,捕获所有的指令。环形缓冲区134中的运行跟踪数据可以选择性地或者连续地存储为一些本地(例如,特权VM的文件系统)或网络存储中的持续运行跟踪140。虽然环形缓冲区是方便的并且提供某些有点,但是也可以使用其他类型的缓冲区。完全跟踪可能不需要循环缓冲区。如下文讨论的,缓冲对于选择性跟踪是有用的,其中将跟踪特定范围的运行(例如,某些模块、进程、线程、VM等)。除了捕获指令之外,运行跟踪将包括被线程或其他运行单元的运行接触的存储器中的数据。代替复制VM114的全部存储器,这涉及在每个存储器块被正被跟踪的运行访问时,复制存储器块;从概念上讲,指令的输入和输出在被消费时被捕获。(可能是压缩的)。也捕获被访问的寄存器内容。每个线程一般以其自己的方式消费其自己的存储器,并且其他线程做什么的是不相关的。如果内核调用或者另一线程修改了被跟踪的线程的存储器,则可以由跟踪组件132捕获那些外部存储器修改。附加细节参见名称为“PROGRAMTRACINGFORTIMETR本文档来自技高网
...

【技术保护点】
1.一种由计算设备执行的方法,所述计算设备包括处理硬件和存储硬件,所述方法包括:/n运行虚拟化层,所述虚拟化层管理所述处理硬件上的虚拟机的运行,每个虚拟机包括相应的虚拟处理器和相应的客户操作系统;/n由所述虚拟化层切换所述虚拟机的运行上下文,以支持所述客户操作系统向所述虚拟处理器发出指令;以及/n基于由所述虚拟处理器正在运行的所述客户操作系统的所述指令,记录运行跟踪数据,所述运行跟踪数据包括:(i)由所述虚拟处理器运行的所述客户操作系统的所述指令,(ii)基于存储所捕获的指令的输入和/或输出的存储器部分而选择用于跟踪的存储器部分,以及(iii)由所述虚拟化层插入到所述运行跟踪数据中的排序标记,每个排序标记对应于已经发生可排序事件的相应的确定。/n

【技术特征摘要】
【国外来华专利技术】20170401 US 62/480,408;20170414 US 15/488,2821.一种由计算设备执行的方法,所述计算设备包括处理硬件和存储硬件,所述方法包括:
运行虚拟化层,所述虚拟化层管理所述处理硬件上的虚拟机的运行,每个虚拟机包括相应的虚拟处理器和相应的客户操作系统;
由所述虚拟化层切换所述虚拟机的运行上下文,以支持所述客户操作系统向所述虚拟处理器发出指令;以及
基于由所述虚拟处理器正在运行的所述客户操作系统的所述指令,记录运行跟踪数据,所述运行跟踪数据包括:(i)由所述虚拟处理器运行的所述客户操作系统的所述指令,(ii)基于存储所捕获的指令的输入和/或输出的存储器部分而选择用于跟踪的存储器部分,以及(iii)由所述虚拟化层插入到所述运行跟踪数据中的排序标记,每个排序标记对应于已经发生可排序事件的相应的确定。


2.根据权利要求1所述的方法,其中所述可排序事件包括上下文切换。


3.根据权利要求1所述的方法,其中所述虚拟化层包括应用编程接口(API),所述API包括调用,所述方法还包括:调取由所述虚拟化层管理的第一虚拟机(VM)的调用,并且基于所述调用的所述调取,执行所述运行跟踪数据的记录。


4.根据权利要求3所述的方法,其中所述调用的所述调取开启/关闭所述运行跟踪数据的记录,和/或设置要跟踪的运行的范围。


5.根据权利要求1所述的方法,还包括:将所述运行跟踪数据记录到循环缓冲区中,并且将运行跟踪数据从所述循环缓冲区复制到永久存储中。


6.一种计算设备,包括:
处理硬件;
存储硬件,所述存储硬件存储包括管理程序的虚拟化层;
所述存储硬件存储包括客户操作系统的虚拟机,所述客户操作系统包括客户内核,所述虚拟机还包括由所述虚拟化层管理的虚拟处理器,所述客户内核配置用于向所述虚拟处理器发出客户指令;并且
所述虚拟化层配置用...

【专利技术属性】
技术研发人员:J·莫拉
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1