一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分离式虚拟机及其虚拟机架构、构建方法和优化方法与流程

2022-02-20 05:40:19 来源:中国专利 TAG:


1.本发明涉及系统虚拟化和云计算技术领域,具体地,涉及一种分离式虚拟机(split vm)及其虚拟机架构、构建方法和优化方法。


背景技术:

2.随着云计算技术的飞速发展,云环境中虚拟化的性能也引起了人们的广泛关注。在传统的虚拟化架构中,由于虚拟机运行模块(guest)和虚拟机监控模块(hypervisor)运行在同一个物理核上,共享同一个物理核的寄存器和高速缓存区等物理资源而引入了昂贵的虚拟机退出(vm-exit)操作。
3.目前虽然有一些研究尝试消除虚拟机退出(vm-exit)操作,但是大部分都是通过设置虚拟机控制结构(vmcs)中vm-execution控制域减少敏感指令触发的vm-exit的数目,并不能从根本意义上消除vm-exit。此外,这些研究大多专注于虚拟机的i/o操作,而不适用于所有的敏感指令。
4.目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。


技术实现要素:

5.本发明针对现有技术中存在的上述问题,提供了一种分离式虚拟机及其虚拟机架构、构建方法和优化方法,将虚拟机运行模块(guest)和虚拟机监控模块(hypervisor)分离到不同的物理核上,并通过半虚拟化的方式或在硬件层次加入一种轻量级的核间通信方式消除vm-exit,提升虚拟化的性能。
6.本发明是通过以下技术方案实现的。
7.根据本发明的一个方面,提供了一种分离式虚拟机架构,包括一个或多个虚拟机处理器,其中每一个所述虚拟机处理器均包括运行于不同物理处理器上的虚拟机运行模块和虚拟机监控模块,所述虚拟机运行模块和虚拟机监控模块之间通信连接。
8.优选地,所述虚拟机运行模块和虚拟机监控模块分别运行于固定的物理处理器上,且分别拥有属于自己的物理资源;其中:
9.所述虚拟机运行模块用于执行虚拟机非敏感指令,并将敏感指令发送至虚拟机监控模块;
10.所述虚拟机监控模块用于执行虚拟机运行模块发送的敏感指令,并将所执行的敏感指令及其详细信息反馈至虚拟机运行模块;
11.所述虚拟机监控模块在处理敏感指令时,所述虚拟机运行模块控制虚拟机暂停执行,等待虚拟机监控模块对敏感指令处理完成后,根据虚拟机监控模块反馈的完成信号,恢复虚拟机执行。
12.优选地,所述虚拟机运行模块和虚拟机监控模块之间通过核间中断或共享内存的通信方式连接。
13.优选地,所述虚拟机监控模块在如下任意一种或任意多种情况下修改虚拟机运行模块的状态:
[0014]-所述虚拟机运行模块执行需要修改其当前所在物理处理器关键寄存器状态的敏感指令时,所述虚拟机监控模块在处理过程中修改虚拟机运行模块的状态;
[0015]-所述虚拟机监控模块处理完外部中断时,修改所述虚拟机运行模块的物理apic(高级可编程中断控制器)状态。
[0016]
根据本发明的另一个方面,提供了一种软件模拟的分离式虚拟机,所述分离式虚拟机的每一个虚拟机处理器均对应两个线程,分别为虚拟机运行线程和虚拟机监控线程;所述虚拟机运行线程和虚拟机监控线程分别运行在不同的物理处理器上,并通过共享内存或核间中断的方式通信连接;其中:
[0017]
对于运行虚拟机运行线程的物理处理器称为虚拟机运行核;
[0018]
对于运行虚拟机监控线程的物理处理器成为虚拟机监控核。
[0019]
优选地,所述分离式虚拟机对敏感指令的处理方法为:
[0020]
所述虚拟机运行线程用于运行虚拟机代码,并在执行敏感指令时发生虚拟机退出,保存虚拟机状态;所述虚拟机监控线程用于处理虚拟机运行线程发生的虚拟机退出,并通知虚拟机运行线程恢复虚拟机执行,完成对敏感指令的处理。
[0021]
优选地,所述分离式虚拟机对敏感指令的处理方法,包括如下步骤:
[0022]
所述虚拟机运行线程执行敏感指令,并发生虚拟机退出;
[0023]
所述虚拟机运行线程保存虚拟机状态并加载宿主机状态;
[0024]
所述虚拟机运行线程通知所述虚拟机监控线程有虚拟机退出发生并进入等待状态;
[0025]
所述虚拟机监控线程加载虚拟机处理器vcpu对应的虚拟机控制结构vmcs;
[0026]
所述虚拟机监控线程读取虚拟机退出的原因和详细信息,处理虚拟机退出;
[0027]
所述虚拟机监控线程通知所述虚拟机运行线程虚拟机退出处理完成并进入等待状态;
[0028]
所述虚拟机运行线程退出等待状态,并加载虚拟机处理器vcpu对应的虚拟机控制结构vmcs;
[0029]
所述虚拟机运行线程保存当前状态并加载虚拟机状态开始执行虚拟机代码。
[0030]
根据本发明的第三个方面,提供了一种上述任一项所述的软件模拟的分离式虚拟机的构建方法,包括:
[0031]
用户向虚拟机管理软件发送创建虚拟机请求,至少包括如下参数:所要创建的虚拟机类型、虚拟机处理器的数量以及虚拟机内存大小;
[0032]
所述虚拟机管理软件解析参数,为每一个虚拟机处理器创建一个虚拟机监控线程,并将所述虚拟机监控线程绑定到固定的物理处理器上;
[0033]
所述虚拟机监控线程为每一个虚拟机处理器创建一个与所述虚拟机监控线程对应的虚拟机运行线程,并将所述虚拟机运行线程绑定到另一个固定的物理处理器上然后返回,所述虚拟机运行线程进入等待状态;
[0034]
所述虚拟机监控线程完成虚拟机初始化工作,通知所述虚拟机运行线程开始运行虚拟机代码;
[0035]
所述虚拟机运行线程收到所述虚拟机监控线程的请求开始执行虚拟机代码,完成对软件模拟的分离式虚拟机的构建。
[0036]
根据本发明的第四个方面,提供了一种所述的软件模拟的分离式虚拟机的优化方法,包括如下任意一种或任意多种方式:
[0037]-半虚拟化拓展方式,所述半虚拟化拓展方式包括:
[0038]
将所述虚拟机运行线程所要执行的敏感指令直接发送至所述虚拟机监控线程,所述虚拟机监控线程模拟敏感指令的执行并将执行结果返回至所述虚拟机运行线程,期间不发生虚拟机退出;
[0039]-硬件拓展方式,所述硬件拓展方式包括:
[0040]
采用轻量级的核间通信方式,当虚拟机运行核执行敏感指令时,暂停执行虚拟机代码,将敏感指令的具体信息通过所述轻量级的核间通信方式传递给虚拟机监控核,所述虚拟机监控核处理完成后以所述轻量级的核间通信方式通知所述虚拟机运行核,所述虚拟机运行核立即恢复虚拟机执行。
[0041]
其中,所述轻量级的核间通信方式具体为:该通信方式类似于核间中断的硬件信号,但又有所不同。虚拟机监控核接收到该通信信号后,可从中读取到需要处理的敏感指令以及处理所需的参数。虚拟机运行核接收到该通信信号后,立即恢复虚拟机的执行。
[0042]
优选地,在所述半虚拟化拓展方式下,所述分离式虚拟机处理敏感指令的方法,包括:
[0043]
当所述虚拟机运行线程执行敏感指令,直接将敏感指令的详细信息发送给所述虚拟机监控线程并等待所述虚拟机监控线程的返回结果;
[0044]
所述虚拟机监控线程模拟敏感指令的执行并将执行结果返回至所述虚拟机运行线程;
[0045]
所述虚拟机运行线程继续执行客户机代码。
[0046]
优选地,在所述硬件拓展方式下,所述分离式虚拟机处理敏感指令的方法,包括:
[0047]
当分离式虚拟机执行敏感指令时,所述虚拟机运行核停止执行虚拟机运行;
[0048]
所述虚拟机运行核将敏感指令的详细信息通过轻量级的核间通信方式发送给所述虚拟机监控核;
[0049]
所述虚拟机监控核模拟敏感指令的执行,并修改所述虚拟机运行核的寄存器状态;
[0050]
所述虚拟机监控核处理完成敏感指令后,将完成信息通过轻量级的核间通信方式反馈至所述虚拟机运行核;
[0051]
所述虚拟机运行核恢复虚拟机运行,并继续执行虚拟机指令。
[0052]
与现有技术相比,本发明具有如下的有益效果:
[0053]
本发明提供的分离式虚拟机及其虚拟机架构、构建方法和优化方法,将每一个虚拟机处理器分为虚拟机运行模块(guest)和虚拟机监控模块(hypervisor),并将它们分离到不同的物理处理器(物理核)上运行,避免它们因共享物理资源而对彼此的运行环境产生干扰,提升虚拟化的性能,从而满足云环境中高性能,低延迟的应用的需求。
附图说明
[0054]
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0055]
图1为本发明一优选实施例中分离式虚拟机架构示意图;
[0056]
图2为本发明一优选实施例中软件模拟的分离式虚拟机中vm-exit的处理流程图;
[0057]
图3为本发明一优选实施例中半虚拟化拓展方式下的软件模拟的分离式虚拟机运行流程图;
[0058]
图4为本发明一优选实施例中硬件拓展方式下的软件模拟的分离式虚拟机运行流程图。
具体实施方式
[0059]
下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
[0060]
本发明一实施例提供了一种分离式虚拟机架构,该分离式虚拟机架构针对现有技术中所存在的不足,设置如下特征:
[0061]
特征1:每个虚拟机的虚拟处理器包括两个模块,虚拟机运行模块和虚拟机监控模块。
[0062]
特征2:虚拟机运行模块和虚拟机监控模块应当运行在不同的物理核(即物理处理器)上,二者不共享寄存器和高速缓存区等物理资源。
[0063]
特征3:虚拟机运行模块和虚拟机监控模块应当能以某种方式进行通信。
[0064]
其中:
[0065]
虚拟机运行模块,具有如下特征:
[0066]
特征1:运行在固定的物理核上,能够直接执行大部分的虚拟机非敏感指令。
[0067]
特征2:执行敏感指令时,能够将敏感指令以某种方式发送给虚拟机监控模块,然后暂停虚拟机的执行,等待虚拟机监控模块处理。
[0068]
特征3:能够接收来自虚拟机监控模块的信号,恢复虚拟机的执行。
[0069]
特征4:拥有属于自己的物理资源,不会对虚拟机监控模块的运行环境产生任何干扰。
[0070]
虚拟机监控模块,具有如下特征:
[0071]
特征1:运行在固定的物理核上,能够直接执行敏感指令。
[0072]
特征2:能够接收来自虚拟机运行模块的信号,处理虚拟机运行模块发送的敏感指令。
[0073]
特征3:能够以某种方式通知虚拟机运行模块敏感指令处理已完成。
[0074]
特征4:拥有属于自己的物理资源,在必要时能够修改虚拟机运行模块的状态。
[0075]
虚拟机监控模块与虚拟机运行模块之间的通信机制具有如下特征:
[0076]
特征1:虚拟机运行模块能够以某种方式告知虚拟机监控模块,它执行了某条敏感指令以及敏感指令的详细信息。
[0077]
特征2:虚拟机监控模块能够以某种方式告知虚拟机运行模块敏感指令处理已完成,并在必要时修改虚拟机运行模块的状态。
[0078]
基于上述各特征,本实施例提供的分离式虚拟机架构,采用如下技术方案:
[0079]
该分离式虚拟机架构,包括:一个或多个虚拟机处理器,其中每一个虚拟机处理器均包括运行于不同物理处理器上的虚拟机运行模块和虚拟机监控模块,虚拟机运行模块和虚拟机监控模块之间通信连接。
[0080]
作为一优选实施例,虚拟机运行模块和虚拟机监控模块分别运行于固定的物理处理器上,且分别拥有属于自己的物理资源;其中:
[0081]
虚拟机运行模块用于执行虚拟机非敏感指令,并将敏感指令发送至虚拟机监控模块;
[0082]
虚拟机监控模块用于执行虚拟机运行模块发送的敏感指令,并将所执行的敏感指令及其详细信息反馈至虚拟机运行模块;
[0083]
虚拟机监控模块在处理敏感指令时,虚拟机运行模块控制虚拟机暂停执行,等待虚拟机监控模块对敏感指令处理完成后,根据虚拟机监控模块通过方式反馈的完成信号,恢复虚拟机执行。
[0084]
作为一优选实施例,虚拟机运行模块和虚拟机监控模块之间通过核间中断或共享内存的方式进行通信。
[0085]
作为一优选实施例,虚拟机监控模块将所执行的敏感指令及其详细信息通过核间中断或共享内存的方式反馈至虚拟机运行模块。
[0086]
作为一优选实施例,虚拟机监控模块根据虚拟机监控模块通过核间中断或共享内存的方式反馈的完成信号,恢复虚拟机执行。
[0087]
作为一优选实施例,虚拟机监控模块在如下任意一种或任意多种情况下修改虚拟机运行模块的状态:
[0088]-所述虚拟机运行模块执行了某些需要修改其当前所在物理处理器关键寄存器状态的敏感指令时,所述虚拟机监控模块需要在处理过程中修改虚拟机运行模块的状态;
[0089]-所述虚拟机监控模块处理完外部中断时,需要修改所述虚拟机运行模块的物理apic(高级可编程中断控制器)状态。
[0090]
基于上述分离式虚拟化架构,本发明另一实施例提供了一种软件模拟的分离式虚拟机并提出了该种软件模拟的分离式虚拟机的构建方法及性能优化方法,以提升分离式虚拟机的性能。
[0091]
本实施例所提供的软件模拟的分离式虚拟机,采用如下技术方案:
[0092]
该软件模拟的分离式虚拟机的每一个虚拟机处理器对应两个线程,虚拟机运行线程(guest线程)和虚拟机监控线程(hypervisor线程)。guest线程和hypervisor线程运行在不同的物理处理器上,通过共享内存或核间中断的方式通信。其中:guest线程和hypervisor线程所在的物理处理器分别称为guest核和hypervisor核。
[0093]
作为一优选实施例,分离式虚拟机对敏感指令的处理方法为:
[0094]
guest线程负责运行虚拟机代码,并在执行敏感指令时发生vm-exit,保存虚拟机状态。hypervisor线程处理guest线程发生的vm-exit,通知guest线程恢复虚拟机执行,完成对敏感指令的处理。
[0095]
作为一优选实施例,当guest线程执行敏感指令时,分离式虚拟机对敏感指令的处理方法,包括如下步骤:
[0096]
步骤1:guest线程执行了敏感指令,发生vm-exit。
[0097]
步骤2:guest线程保存虚拟机状态并加载宿主机状态。
[0098]
步骤3:guest线程通知hypervisor线程有vm-exit发生并进入等待状态。
[0099]
步骤4:hypervisor线程加载虚拟处理器对应的vmcs。
[0100]
步骤5:hypervisor线程读取vm-exit的原因和详细信息,处理vm-exit。
[0101]
步骤6:hypervisor线程通知guest线程vm-exit处理完成并进入等待状态。
[0102]
步骤7:guest线程退出等待状态,加载虚拟处理器对应的vmcs。
[0103]
步骤8:guest线程保存加载虚拟机状态开始执行虚拟机代码。
[0104]
本实施例所提供的软件模拟的分离式虚拟机的构建方法,采用如下技术方案:
[0105]
步骤1:用户向虚拟机管理软件发送创建虚拟机的请求,包括要创建的虚拟机类型,处理器的数目,内存的大小等参数。
[0106]
步骤2:虚拟机管理软件解析参数,为每一个虚拟处理器创建一个hypervisor线程,将它绑定到固定的物理核上。
[0107]
步骤3:hypervisor线程为每个虚拟处理器创建一个对应的guest线程,并将它绑定到固定的物理核上然后返回,guest线程则进入等待状态。
[0108]
步骤4:hypervisor线程完成虚拟机初始化工作,通知guest线程开始运行虚拟机的代码。
[0109]
步骤5:guest线程收到hypervisor线程的请求开始执行虚拟机的代码,完成对软件模拟的分离式虚拟机的构建。
[0110]
本实施例所提供的软件模拟的分离式虚拟机的性能优化方法,采用如下技术方案:
[0111]
为了消除软件模拟的分离式虚拟机中敏感指令引起的vm-exit,提出了半虚拟化拓展方式和硬件拓展方式;其中:
[0112]
半虚拟化拓展方式具有如下特征:
[0113]
特征1:允许guest线程不发生vm-exit请求hypervisor线程的服务。
[0114]
特征2:允许hypervisor线程将处理结果以某种方式返回给guest线程并不触发vm-exit。
[0115]
基于上述特征,半虚拟化拓展方式采用如下技术方案:
[0116]
将虚拟机运行线程所要执行的敏感指令直接发送至虚拟机监控线程,虚拟机监控线程模拟敏感指令的执行并将执行结果返回至虚拟机运行线程,期间不发生虚拟机退出。
[0117]
添加了半虚拟化拓展方式后,分离式虚拟机敏感指令处理方法如下:
[0118]
步骤1:guest线程执行敏感指令。
[0119]
步骤2:guest线程直接将敏感指令的详细信息发送给hypervisor线程并等待hypervisor线程返回。
[0120]
步骤3:hypervisor线程模拟敏感指令的执行效果并将结果返回给guest线程。
[0121]
步骤4:guest线程继续执行客户机代码。
[0122]
硬件拓展方式,在硬件层面消除了vm-exit,它具有如下特征:
[0123]
特征1:一种轻量级的核间通信方式。当guest核执行敏感指令时会暂停执行虚拟机代码,将敏感指令的具体信息通过这种方式传递给hypervisor核,hypervisor核处理完成后以这种方式通知guest核,guest核立刻恢复虚拟机执行。
[0124]
特征2:hypervisor核能够访问或修改guest核的状态。比如guest执行mov tocr3指令,那么hypervisor核直接写入guest的cr3寄存器。
[0125]
基于上述特征,硬件拓展方式采用如下技术方案:
[0126]
采用轻量级的核间通信方式,当虚拟机运行核执行敏感指令时,暂停执行虚拟机代码,将敏感指令的具体信息通过轻量级的核间通信方式传递给虚拟机监控核,虚拟机监控核处理完成后以轻量级的核间通信方式通知虚拟机运行核,虚拟机运行核立即恢复虚拟机执行;
[0127]
其中,轻量级的核间通信方式具体为:是一种类似于核间中断的硬件信号,但又有所不同。虚拟机监控核收到该通信信号后,可从中读取到需要处理的敏感指令以及处理所需的参数。虚拟机运行核收到该通信信号后,立即恢复虚拟机的执行。
[0128]
添加了硬件拓展方式后,分离式虚拟机敏感指令处理方法如下:
[0129]
步骤1:分离式虚拟机执行敏感指令,guest核停止执行虚拟机运行。
[0130]
步骤2:guest核将敏感指令的详细信息通过轻量级的核间通信方式发送给hypervisor核。
[0131]
步骤3:hypervisor核模拟敏感指令的执行,修改guest核的寄存器状态。
[0132]
步骤4:hypervisor核处理完敏感指令后,通过轻量级的核间通信方式告知guest核敏感指令处理已完成。
[0133]
步骤5:guest核恢复虚拟机运行,执行虚拟机指令。
[0134]
为了更加准确的讲解本发明的目的和技术方案,以下结合附图及实施例,对本发明基于多核系统实现的软件模拟的分离式虚拟机及半虚拟化拓展和硬件拓展进行进一步说明。应当注意的是,此处描述的具体实施例仅用于解释本发明,本发明的用处并不限于此。
[0135]
如图1所示,qemu接收用户创建分离式虚拟机的请求,为每一个虚拟处理器创建一个hypervisor线程,并通过ioctl系统调用进入kvm,kvm为每个虚拟处理器创建一个内核线程,即guest线程。当一切都已准备好了之后,guest线程通过vm-entry进入非根模式开始执行客户机代码,直到执行敏感指令触发vm-exit。此时guest线程进入根模式并通知hypervisor线程处理vm-exit。vm-exit的具体处理流程如图2所示。
[0136]
guest线程通过读取共享内存区域得知vm-exit处理完成,恢复虚拟机的执行。当加入半虚拟化拓展后,guest线程在非根模式下直接将待处理的敏感指令信息传递给hypervisor线程而无需触发vm-exit,整个流程如图3所示。
[0137]
而加入硬件拓展后,当guest核执行敏感指令时,会触发核间通信将敏感指令发送给hypervisor核,hypervisor核处理敏感指令,并设置guest核的寄存器状态,整个流程如图4所示。
[0138]
本发明上述实施例所提供的分离式虚拟机及其虚拟机架构、构建方法和优化方法,提出了一种分离式虚拟机架构,在此架构下,每个虚拟机处理器包括两个模块:虚拟机运行模块(guest)和虚拟机监控模块(hypervisor),它们运行在不同的物理核(物理处理
器)上。而在传统虚拟化架构下,guest和hypervisor运行在同一个物理核上,共享寄存器和高速缓存区等物理资源。本发明上述实施例基于上述架构实现了软件模拟的分离式虚拟机,它创造性的提出为每个虚拟机处理器创建两个线程,并通过核间中断或共享内存的方式通信,分离式虚拟机的架构如附图1。除此之外,本发明上述实施例还创造性的提出了两种拓展优化方式:半虚拟化拓展方式和硬件拓展方式。通过这两种拓展方式消除软件模拟的分离式虚拟机中的虚拟机退出,提升分离式虚拟机的虚拟化性能。半虚拟化拓展下和硬件拓展下的分离式虚拟机架构如附图3和附图4。
[0139]
需要说明的是,本发明提供的方法中的步骤,可以利用系统中对应的模块、装置、单元等予以实现,本领域技术人员可以参照系统的技术方案实现方法的步骤流程,即,系统中的实施例可理解为实现方法的优选例,在此不予赘述。
[0140]
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0141]
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献