一种VCPU切换方法和物理主机技术

技术编号:18398119 阅读:28 留言:0更新日期:2018-07-08 19:10
本发明专利技术实施例公开了一种VCPU切换方法及物理主机。所述物理主机包括至少一个VCPU队列,每一个VCPU队列包括至少一个VCPU,且所述至少一个VCPU队列由至少一个线程来管理;所述方法包括:保存第一VCPU的状态,所述第一VCPU为当前运行的VCPU;从所述第一VCPU所在的VCPU队列中确定第二VCPU,所述第二VCPU为待运行VCPU;恢复所述第二VCPU的状态。本发明专利技术实施例所提供的技术方案,省略了常规VCPU切换中线程切换的过程,从而能够节省大量的时间消耗,提高VCPU切换效率。

【技术实现步骤摘要】
一种VCPU切换方法和物理主机
本专利技术涉及计算机虚拟化
,尤其涉及一种VCPU切换方法和物理主机。
技术介绍
虚拟化指在物理设备上,通过空间上的分割以及时间上的分时和模拟,将物理机器上的一份资源抽象成多份。虚拟机(VirtualMachine)是由虚拟化层提供的独立虚拟计算机系统,每个虚拟机都拥有自己的虚拟硬件,包括CPU、内存和IO(Input/Output,输入/输出)设备等,通过虚拟化层的模拟,虚拟机在上层软件看来,就是一个真实的物理设备。虚拟化层一般称为虚拟机监控器(VirtualMachineMonitor,VMM)。在VMM虚拟化机器硬件资源的过程中,CPU虚拟化是最为重要的一个环节。CPU虚拟化为每个虚拟机创建一个或者多个VCPU(VirtualCPU,即VCPU),多个VCPU分时复用/空间复用物理CPU。VMM为多个VCPU分配时间片/空间并维护所有VCPU的状态,当一个VCPU的时间片/空间用完需要切换时,要保存当前运行VCPU的状态,并恢复目标VCPU(将要切换到的VCPU)的状态,也就是将目标VCPU的状态载入物理CPU。VCPU的状态指VCPU的上下文,所述上下文指某一时间点VCPU在寄存器和程序计数器的内容。CPU虚拟化将每个VCPU与一个HostOS(主机操作系统,即物理设备自身的操作系统)线程一一对应,由HostOS线程来调用VCPU。图1为现有技术VCPU切换过程示例图,当需要从一个VCPU(设为VCPUA)切换至另一个VCPU(设为VCPUB)时,先将VCPUA的状态保存在内存;然后HostOS根据线程调度算法将VCPUA对应的线程切换至另一个与VCPU对应的线程,这样被切换到的线程对应的VCPU便自然成为目标VCPU(VCPUB);再检索VCPUB的上下文并将其上下文恢复。图1所示示例基于LINUX系统的KVM(Kernel-basedVirtualMachine,基于内核的虚拟机),其中,程序A对应VCPUA,程序B对应VCPUB,程序在GUEST侧,线程在HOST侧。因此,VCPU的切换过程既包括保存VCPUA状态和恢复VCPUB状态的时间,还包括HostOS线程的切换时间,而HostOS线程的切换时间通常很长,而且HostOS线程的切换由HostOS的线程调度策略管理,使得切换时延受限于HostOS的线程调度框架和调度算法,从而导致VCPU切换的效率低、时间开销大。
技术实现思路
本专利技术实施例提供了一种VCPU切换方法和物理主机,以解决现有技术中VCPU切换效率低的问题。第一方面,本专利技术实施例提供一种VCPU切换方法,所述方法应用于运行有至少一个VCPU的物理主机,所述物理主机包括至少一个VCPU队列,每一个VCPU队列包括至少一个VCPU,且所述至少一个VCPU队列由至少一个线程来管理;所述方法包括:保存第一VCPU的状态,所述第一VCPU为当前运行的VCPU;从所述第一VCPU所在的VCPU队列中确定第二VCPU,所述第二VCPU为待运行VCPU;恢复所述第二VCPU的状态。所述方法由所述线程执行,所述线程与VCPU队列绑定。所述方法不需切换线程,而是线程从绑定的VCPU队列中确定一个目标VCPU,也就是第二VCPU,然后保存当前运行VCPU的状态,恢复目标VCPU的状态,完成VCPU的切换,从而大大减少VCPU切换的时延,提高VCPU切换效率。在一种可能的设计中,所述从所述第一VCPU所在VCPU的队列中确定第二VCPU,包括:若所述第一VCPU所在的VCPU队列中存在待运行VCPU,选取一个所述待运行VCPU为所述第二VCPU;若所述第一VCPU所在的VCPU队列中不存在待运行VCPU,则从其他VCPU队列中选取一待运行VCPU,将所选取的待运行VCPU迁移至所述第一VCPU所在的VCPU队列中,所述选取的待运行VCPU为所述第二VCPU。在一种可能的设计中,所述从所述第一VCPU所在的VCPU队列中确定第二VCPU,包括:若存在优先级高于所述第一VCPU所在的VCPU队列中所有待运行VCPU的优选待运行VCPU,则从所述优选待运行VCPU中选择其一作为被选VCPU,并将所述被选VCPU迁移至所述第一VCPU所在的VCPU队列中,所述被选VCPU为所述第二VCPU;若不存在所述优选待运行VCPU,选取所述第一VCPU所在的VCPU队列中的一个待运行VCPU为所述第二VCPU。VCPU的优先级在VCPU创建时设定,优先级高的VCPU先使用。具体地,在一种可能的设计中,所述从所述第一VCPU所在的VCPU队列中确定第二VCPU,可以包括:判断所述第一VCPU所在的VCPU队列中是否存在待运行VCPU;若所述第一VCPU所在的VCPU队列中存在待运行VCPU,判断所述第一VCPU所在的VCPU队列之外的其他VCPU队列中,是否存在优先级高于所述第一VCPU所在VCPU队列中所有待运行VCPU的优选待运行VCPU;若存在所述优选待运行VCPU,从所述优选待运行VCPU中选取其一作为被选VCPU,并将所述被选VCPU迁移至所述第一VCPU所在的VCPU队列中,所述被选VCPU为所述第二VCPU;若不存在所述优选待运行VCPU,选取一个所述待运行为所述第二VCPU;若所述第一VCPU所在的VCPU队列中不存在待运行VCPU,则从其他VCPU队列中选取一待运行VCPU,将所选取的待运行VCPU迁移至所述第一VCPU所在的VCPU队列中,所选取的待运行VCPU为目标VCPU。在一种可能的设计中,若所述第一VCPU所在的VCPU队列中存在待运行VCPU,所述选取一个所述待运行VCPU为所述第二VCPU,包括:随机选取所述待运行VCPU其中之一为所述第二VCPU;或者选取所述待运行VCPU中优先级最高的VCPU为所述第二VCPU;或者选取最先进入所述VCPU队列的待运行VCPU为所述第二VCPU,这样可以方式VCPU空闲时间过长。在一种可能的设计中,若存在所述优选待运行VCPU,在将所述被选VCPU迁移至所述第一VCPU所在的VCPU队列中之前,还包括:若所述第一VCPU所在的VCPU队列已满,移除所述VCPU队列中除所述第一VCPU之外的一个或多个VCPU;若所述第一VCPU所在的VCPU队列未满,将所述被选VCPU迁移至所述第一VCPU对应的VCPU队列中。从而防止因为所述VCPU队列已满而不能使用比所述VCPU队列中所有VCPU优先级更高的VCPU。在一种可能的设计中,所述移除所述VCPU队列中除所述第一VCPU之外的一个或多个VCPU,包括:随机移除所述VCPU队列中除所述第一VCPU之外的一个或多个VCPU;或者,移除所述VCPU队列中除所述第一VCPU之外优先级最低的一个VCPU;或者,移除所述VCPU队列中除所述第一VCPU之外优先级最低的多个VCPU;其中,所述移除为删除VCPU或者将VCPU迁移至所述第一VCPU所在的VCPU队列之外的其他VCPU队列中,所述其他VCPU队列为未满的VCPU队列。在一种可能的设计中,为避免VCPU队列之间的不均衡,也就是某些VCPU队列中的VCPU过多而另一些VCPU队列中的VCPU过少,使得某些VCP本文档来自技高网
...

【技术保护点】
1.一种虚拟中央处理器VCPU切换方法,应用于运行有至少一个VCPU的物理主机,其特征在于,所述物理主机包括至少一个VCPU队列,每一个VCPU队列包括至少一个VCPU,且所述至少一个VCPU队列由至少一个线程来管理;所述方法包括:保存第一VCPU的状态,所述第一VCPU为当前运行的VCPU;从所述第一VCPU所在的VCPU队列中确定第二VCPU,所述第二VCPU为待运行VCPU;恢复所述第二VCPU的状态。

【技术特征摘要】
1.一种虚拟中央处理器VCPU切换方法,应用于运行有至少一个VCPU的物理主机,其特征在于,所述物理主机包括至少一个VCPU队列,每一个VCPU队列包括至少一个VCPU,且所述至少一个VCPU队列由至少一个线程来管理;所述方法包括:保存第一VCPU的状态,所述第一VCPU为当前运行的VCPU;从所述第一VCPU所在的VCPU队列中确定第二VCPU,所述第二VCPU为待运行VCPU;恢复所述第二VCPU的状态。2.如权利要求1所述的VCPU切换方法,其特征在于,所述从所述第一VCPU所在VCPU的队列中确定第二VCPU,包括:若所述第一VCPU所在的VCPU队列中存在待运行VCPU,选取一个所述待运行VCPU为所述第二VCPU;若所述第一VCPU所在的VCPU队列中不存在待运行VCPU,则从其他VCPU队列中选取一待运行VCPU,将所选取的待运行VCPU迁移至所述第一VCPU所在的VCPU队列中,所述选取的待运行VCPU为所述第二VCPU。3.如权利要求1所述的VCPU切换方法,其特征在于,所述从所述第一VCPU所在的VCPU队列中确定第二VCPU,包括:若存在优先级高于所述第一VCPU所在的VCPU队列中所有待运行VCPU的优选待运行VCPU,则从所述优选待运行VCPU中选择其一作为被选VCPU,并将所述被选VCPU迁移至所述第一VCPU所在的VCPU队列中,所述被选VCPU为所述第二VCPU;若不存在所述优选待运行VCPU,选取所述第一VCPU所在的VCPU队列中的一个待运行VCPU为所述第二VCPU。4.如权利要求2所述的VCPU切换方法,其特征在于,若所述第一VCPU所在的VCPU队列中存在待运行VCPU,所述选取一个所述待运行VCPU为所述第二VCPU,包括:随机选取所述待运行VCPU其中之一为所述第二VCPU;或者选取所述待运行VCPU中优先级最高的VCPU为所述第二VCPU;或者选取最先进入所述VCPU队列的待运行VCPU为所述第二VCPU。5.如权利要求3所述的VCPU切换方法,其特征在于,若存在所述优选待运行VCPU,在将所述被选VCPU迁移至所述第一VCPU所在的VCPU队列中之前,还包括:若所述第一VCPU所在的VCPU队列已满,移除所述VCPU队列中除所述第一VCPU之外的一个或多个VCPU;若所述第一VCPU所在的VCPU队列未满,将所述被选VCPU迁移至所述第一VCPU对应的VCPU队列中。6.如权利要求5所述的VCPU切换方法,其特征在于,所述移除所述VCPU队列中除所述第一VCPU之外的一个或多个VCPU,包括:随机移除所述VCPU队列中除所述第一VCPU之外的一个或多个VCPU;或者,移除所述VCPU队列中除所述第一VCPU之外优先级最低的一个VCPU;或者,移除所述VCPU队列中除所述第一VCPU之外优先级最低的多个VCPU;其中,所述移除为删除VCPU或者将VCPU迁移至所述第一VCPU所在的VCPU队列之外的其他VCPU队列中,所述其他VCPU队列为未满的VCPU队列。7.如权利要求1所述的VCPU切换方法,其特征在于,还包括:若存在VCPU数小于预设下限的空闲VCPU队列,且存在VCPU数大于预设上限的忙碌VCPU队列,选取所述忙碌VCPU队列中的n个待运行VCPU;将选取的n个待运行VCPU迁移至所述空闲VCPU队列中;其中,n等于所述忙碌VCPU队列中VCPU的个数减去所述预设上限。8.如权利要求7所述的VCPU切换方法,其特征在于,所述选取所述忙碌VCPU队列中的n个待运行VCPU,包括:随机选取所述忙碌VCPU队列中的n个待运行VCPU;或者,按所述忙碌VCPU队列中待运行VCPU优先级从大到小的顺序,截取前n个待运行VCPU。9.一种物理主机,包括:硬件层,运行在所述硬件层之上的虚拟机监视器VMM,以及运行在所述VMM上的虚拟机,所述硬件层包括至少一个处理器和存储设备,所述VMM包括至少一个...

【专利技术属性】
技术研发人员:吴启翾
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1