一种虚拟处理器之间的中断的实现方法、相关装置和系统的制作方法

文档序号:6517440阅读:290来源:国知局
一种虚拟处理器之间的中断的实现方法、相关装置和系统的制作方法
【专利摘要】本发明实施例公开了一种虚拟处理器之间中断的实现方法,包括:当源虚拟处理器需要向目的虚拟处理器触发中断时,将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的虚拟高级可编程中断控制器vAPIC的一个虚拟寄存器,以使虚拟机监控器从所述虚拟寄存器解析出所述目的虚拟处理器的信息和所述指示数据,并由所述虚拟机监控器根据所述目的虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入到所述目的虚拟处理器。相应地,本发明实施例还提供相关的虚拟机、虚拟控制器、计算节点和系统。本发明实施例可以提高虚拟机的性能。
【专利说明】一种虚拟处理器之间的中断的实现方法、相关装置和系统
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种虚拟处理器之间的中断的实现方法、相关装置和系统。
【背景技术】
[0002]目前虚拟机已经得到广泛应用,在虚拟机应用中经常用出现中断,例如:在多处理器系统(Symmetrical Mult1-Processing, SMP)中当运行多任务且未绑定时,会由于负载均衡调度会频繁发生中断,如,发生处理器之间的中断(Inter-Processor Interrupt,IPI),当然还可以是其它中断。而中断都是通过访问高级可编程中断控制器(AdvancedProgrammable Interrupt Controller, APIC)的寄存器实现的。具体实现过程如下:
[0003]读取APIC的虚拟中断命令寄存器(virtualInterrupt Command Register,vICR)中的传送状态(delivery status)值;
[0004]根据所述delivery status值向ICR的高位寄存器中写入目的虚拟处理器的本地APIC (virtual Central Processing Unit Local APIC, vLocal APIC)的标识;
[0005]向ICR的低位寄存器写入用于指示目的vLocal APIC所属的目的虚拟处理器(virtual Central Processing Unit, vCPU)发生中断的指示信息,使虚拟机监控器(Virtual Machine Monitor, VMM)解析出所述ICR的高位寄存器寄存的上述标识,以及解析出ICR的低位寄存器寄存指示信息,并将该标识和指示信息转发至目的vLocal APIC,当上目的vLocal APIC接收到上述中断信息时就可以控制目的vCPU产生中断。
[0006]可见,上述中断实现过程由于需要向APIC执行三次操作,即导致三次虚拟机退出(Virtual Machine exit, VM-Exit),其中,VM-Exit 具体可以理解虚拟机与 Hypervisor 之间的上下文切换。而在实际应用中虚拟处理器是会频繁的出现中断,即虚拟机会更频繁地出现VM-Exit,从而导致虚拟机的性能下降。

【发明内容】

[0007]本发明实施例提供了一种vCPU之间的中断的实现方法、相关装置和系统,以提高虚拟机的性能。
[0008]第一方面,本发明实施例提供的一种vCPU之间中断的实现方法,包括:
[0009]当源vCPU需要向目的vCPU触发中断时,
[0010]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的虚拟高级可编程中断控制器vAPIC的一个虚拟寄存器,以使虚拟机监控器从所述虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPUo
[0011]在第一方面的第一种可能的实现方式中,所述虚拟寄存器为虚拟中断命令寄存器vICR的高位寄存器或低位寄存器;所述将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,包括:
[0012]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器。
[0013]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,包括:
[0014]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位;或者
[0015]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器,其中,所述指示数据被填入在所述高位寄存器的保留位。
[0016]结合第一方面,在第一方面的第三种可能的实现方式中,所述将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,包括:
[0017]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据和优化数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,其中,所述优化数据被填入在所述虚拟寄存器的保留位,所述优化数据用于指示所述VMM从所述虚拟寄存器中解析出所述目的vCPU的信息和所述指示数据。
[0018]结合第一方面,在第一方面的第四种可能的实现方式中,所述将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,包括:
[0019]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,其中,所述目的vCPU的信息被填入在所述虚拟寄存器的保留位,所述指示数据包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。
[0020]第二方面,本发明实施例提供一种虚拟机,包括:一个或多个vCPU,所述vCPU包括虚拟高级可编程中断控制器vAPIC,所述vAPIC包括虚拟寄存器,其中:
[0021 ] 所述一个或多个vCPU中当前vCPU用于:
[0022]当所述当前vCPU需要向目的vCPU触发中断时,包含所述目的vCPU的信息和用于表示所述当前vCPU向所述目的vCPU触发中断的指示数据的寄存数据包写入所述当前vCPU的vAPIC的一个虚拟寄存器,以使虚拟机监控器从该虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入所述目的vCPU。
[0023]在第二方面的第一种可能的实现方式中,所述虚拟寄存器为虚拟中断命令寄存器vICR的高位寄存器或低位寄存器;所述包含所述目的vCPU的信息和用于表示所述当前vCPU向所述目的vCPU触发中断的指示数据的寄存数据包写入所述当前vCPU的vAPIC的一个虚拟寄存器的操作上,所述当前vCPU具体用于:
[0024]将包含所述目的vCPU的信息和用于表示所述当前vCPU向目的vCPU触发中断的指示数据的寄存数据写入所述当前vCPU的vAPIC的vICR的高位寄存器或者低位寄存器。
[0025]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述将包含所述目的vCPU的信息和用于表示所述当前vCPU向目的vCPU触发中断的指示数据的寄存数据写入所述当前vCPU的vAPIC的vICR的高位寄存器或者低位寄存器的操作上,所述vCPU具体用于:
[0026]将包含所述目的vCPU的信息和用于表示所述当前vCPU向目的vCPU触发中断的指示数据的寄存数据写入所述当前vCPU的vAPIC的vICR的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位;或者
[0027]将包含所述目的vCPU的信息和用于表示所述当前vCPU向目的vCPU触发中断的指示数据的寄存数据写入所述当前vCPU的vAPIC的vICR的高位寄存器,其中,所述指示数据被填入在所述高位寄存器的保留位。
[0028]结合第二方面,在第二方面的第三种可能的实现方式中,所述包含所述目的vCPU的信息和用于表示所述当前vCPU向所述目的vCPU触发中断的指示数据的寄存数据包写入所述当前vCPU的vAPIC的一个虚拟寄存器的操作上,所述当前vCPU具体用于:
[0029]将包含所述目的vCPU的信息和用于表示所述当前vCPU向目的vCPU触发中断的指示数据和优化数据的寄存数据写入所述当前vCPU的vAPIC的一个虚拟寄存器,其中,所述优化数据被填入在该虚拟寄存器的保留位,所述优化数据用于指示所述VMM从该虚拟寄存器中解析出所述目的vCPU的信息和所述指示数据。
[0030]结合第二方面,在第二方面的第四种可能的实现方式中,所述包含所述目的vCPU的信息和用于表示所述当前vCPU向所述目的vCPU触发中断的指示数据的寄存数据包写入所述当前vCPU的vAPIC的一个虚拟寄存器的操作上,所述当前vCPU具体用于:
[0031]将包含所述目的vCPU的信息和用于表示所述当前vCPU向目的vCPU触发中断的指示数据的寄存数据写入所述当前vCPU的vAPIC的一个虚拟寄存器,其中,所述目的vCPU的信息被填入在该虚拟寄存器的保留位,所述指示数据包括被填入在该虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。
[0032]第三方面,本发明实施例提供一种计算节点,包括:硬件层、运行在所述硬件层之上的VMM、以及运行在所述VMM之上的至少一个虚拟机,其中,所述至少一个虚拟机包括第一虚拟机和第二虚拟机,第一虚拟机包括第一 vCPU,所述第一 vCPU包括第一虚拟高级可编程中断控制器vAPIC,所述第一 vAPIC包括第一虚拟寄存器,第二虚拟机包括第二 vCPU,其中:
[0033]所述第一 vCPU,用于当第一 vCPU需要向第二 vCPU触发中断时,将包含所述第二vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU触发中断的指示数据的寄存数据包写入所述第一虚拟寄存器;
[0034]所述VMM,用于从所述第一虚拟寄存器解析出所述第二 vCPU的信息和所述指示数据,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 vCPU,其中所述vCPU之间的中断包括第一 vCPU与第二 vCPU之间的中断。
[0035]在第三方面的第一种可能的实现方式中,所述第一虚拟寄存器为为虚拟中断命令寄存器vICR的高位寄存器或低位寄存器;
[0036]所述第一 vCPU具体用于当第一 vCPU需要向第二 vCPU触发中断时,将包含所述第二 vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU触发中断的指示数据的寄存数据包写入所述高位寄存器或低位寄存器;
[0037]所述VMM具体用于从所述高位寄存器或低位寄存器解析出所述第二 vCPU的信息和所述指示数据,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 vCPU,其中所述vCPU之间的中断包括第一 vCPU与第二 vCPU之间的中断。
[0038]结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述第一 vCPU具体用于当第一 vCPU需要向第二 vCPU触发中断时,将包含所述第二vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU触发中断的指示数据的寄存数据包写入所述低位寄存器,其中,所述第二 vCPU的信息被填入在所述低位寄存器的保留位;
[0039]所述VMM具体用于从所述低位寄存器的保留位解析出所述第二 vCPU的信息,以及从所述低位寄存器解析出所述指示数据,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 vCPU,其中所述vCPU之间的中断包括第一 vCPU与第二 vCPU之间的中断;或者
[0040]所述第一 vCPU具体用于当第一 vCPU需要向第二 vCPU触发中断时,将包含所述第二 vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU触发中断的指示数据的寄存数据包写入所述高位寄存器,其中,所述指示数据被填入在所述高位寄存器的保留位;
[0041]所述虚拟机监控器具体用于从所述高位寄存器的保留位解析出所述指示数据,以及从所述高位寄存器解析出所述第二 vCPU的信息,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 vCPU,其中所述vCPU之间的中断包括第一 vCPU与第二 vCPU之间的中断。
[0042]结合第三方面,在第三方面的第三种可能的实现方式中,所述第一 vCPU具体用于当第一 vCPU需要向第二 vCPU触发中断时,将包含所述第二 vCPU的信息和用于表示所述第
一vCPU向所述第二 vCPU触发中断的指示数据和优化数据的寄存数据包写入所述第一虚拟寄存器,其中,所述优化数据被填入在该虚拟寄存器的保留位,所述优化数据用于指示所述VMM从所述第一虚拟寄存器中解析出所述第二 vCPU的信息和所述指示数据;
[0043]所述VMM具体用于从所述第一虚拟寄存器解析出所述优化数据,并根据所述优化数据从所述第一虚拟寄存器解析出所述第二 vCPU的信息和所述指示数据,并根据所述第
二vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 vCPU,其中所述vCPU之间的中断包括第一 vCPU与第二 vCPU之间的中断。
[0044]结合第三方面,在第三方面的第四种可能的实现方式中,所述第一 vCPU具体用于当第一 vCPU需要向第二 vCPU触发中断时,将包含所述第二 vCPU的信息和用于表示所述第
一vCPU向所述第二 vCPU触发中断的指示数据的寄存数据包写入所述第一虚拟寄存器,其中,所述第二 vCPU的信息被填入在所述虚拟寄存器的保留位,所述指示数据包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据;
[0045]所述VMM具体用于从所述第一虚拟寄存器的保留位解析出所述第二 vCPU的信息,以及从所述第一虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域中解析出所述指示数据,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 vCPU,其中所述vCPU之间的中断包括第一 vCPU与第二 vCPU之间的中断。
[0046]第四方面,本发明实施例提供一种计算机系统,包括:第三方面包括的任一计算节点。
[0047]上述技术方案中,当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的虚拟高级可编程中断控制器vAPIC的一个虚拟寄存器,以使虚拟机监控器从所述虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。在上述中断过程只需要执行一次对vAPIC的操作,即一次中断只导致一次VM-Exit,从而可以提高虚拟机的性能。
【专利附图】

【附图说明】
[0048]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0049]图1是本发明实施例可应用的场景示意图;
[0050]图2是本发明实施例提供的一种vCPU之间的中断的实现方法的流程示意图;
[0051]图3是本发明实施例提供的另一种vCPU之间的中断的实现方法的流程示意图;
[0052]图4和图5是本发明实施例提供的可选的寄存数据包示意图;
[0053]图6是本发明实施例提供的一种虚拟机的结构示意图;
[0054]图7是本发明实施例提供的另一种虚拟机的结构示意图;
[0055]图8是本发明实施例提供的一种计算节点的结构示意图;
[0056]图9是本发明实施例还提供一种计算机系统的结构示意图;
[0057]图10是本发明实施例提供的另一种计算节点的结构示意图。
【具体实施方式】
[0058]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0059]为了方便理解本发明实施例,首先对虚拟化技术进行介绍,虚拟化技术是一种将底层硬件设备与上层操作系统、应用程序分离的去耦合技术,如图1所示,虚拟化技术应用场景中包括硬件层11、VMM层12和虚拟机层13,硬件层11、VMM层12和虚拟机层13定义可以如下:
[0060]虚拟机VM:
[0061]通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。[0062]硬件层:
[0063]虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某计算节点的硬件层可包括CPU和内存,还可以包括网卡、存储器等等高速/低速输入/输出(I/O, Input/Output)设备,及具有特定处理功能的其它设备,如输入输出内存管理单元(10MMU,Input/Output Memory Management Unit),其中IOMMU可用于虚拟机物理地址和Host物理地址的转换。
[0064]VMM (例如:Hypervisor):
[0065]作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。此外,有时VMM和I个特权虚拟机配合,两者结合组成宿主机Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟CPU、虚拟内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机则运行在VMM或Host为其准备的虚拟硬件平台上,VMM或Host上运行一个或多个虚拟机。
[0066]本发明实施例中的中断具体可以是任何通过访问APIC的虚拟寄存器而产生的中断,例如:IPI中断和其他类型中断。这些中断具体可以应用于多个VCPU之间的负载均衡的场景,例如,将进程从一个VCPU的等待队列迁移至其它VCPU时产生的中断。这些中断还可以是当某个vCPU收到处理中断后,将该中断应交给另一 vCPU处理的中断。
[0067]本发明实施例中,vCPU之间的中断具体可以是指IPI。vCPU具体可以是vCPU,即vCPU处理的进程或者中断都可以是等同于该虚拟机处理的进程或者中断。例如:vCPU中断就可以理解该vCPU所在的虚拟机中断。另外,在SMP中每个虚拟机都可以配置对应的vAPIC,例如,vLocal APIC。
[0068]图2是本发明实施例提供的一种vCPU之间的中断的实现方法的流程示意图,如图2所示,包括:
[0069]201、当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,以使虚拟机监控器从所述虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。
[0070]可选的,步骤201具体可以是当源vCPU的负载过重,需要将某一些负载均衡调度至目的vCPU时,或者当源vCPU接收到某一中断时,但该源vCPU不想执行该中断,而是触发目的vCPU中断。或者接收到用户输入的命令指示源vCPU需要向目的vCPU触发中断时,或者接收VMM发送的命令指示源vCPU需要向目的vCPU触发中断时。本发明实施中对此不作限定。
[0071]其中,上述寄存数据包具体可以是用于写入vAPIC的一个虚拟寄存器的数据,该寄存数据的格式与该虚拟寄存器的格式对应。当该寄存数据写入vAPIC的虚拟寄存器时,该虚拟寄存器就存储该寄存数据,以便VMM读取该寄存数据,执行相关的操作。
[0072]可选的,上述目的vCPU的信息具体可以是用于唯一表示目的vCPU的信息,具体可以是用于标识所述目的vCPU的标识数据,或者目的vCPU的信息(例如:目标vCPU的名称和标识等信息)。另外,上述目的vCPU的信息具体可以占用上述寄存数据的一个或者多个数据位,即该信息写入上述虚拟寄存器中时,该信息占用虚拟寄存器的一个或者多个数据位。上述指示数据具体可以是占用上述寄存数据一个多个数据位,即该指示数据写入上述虚拟寄存器中时,该指示数据占用虚拟寄存器的一个或者多个数据位。
[0073]可选的,上述VMM将vCPU之间的中断注入到所述目的vCPU具体可以是VMM向目的vCPU发送用于产生vCPU之间的中断的命令;或者向VMM向目的vAPIC发送用于产生vCPU之间的中断的命令,由该目的vAPIC控制目的vCPU产生vCPU之间的中断;或者是VMM控制目的vCPU产生vCPU之间的中断。
[0074]可选的,上述目的vCPU具体可以是指一个或者多个vCPU,上述寄存数据包填入的信息具体还可以是一个或者多个信息,即一个信息对应一个vCPU。当然还可以用一个信息标识一个或者多个vCPU。例如,上述指示数据包括用于表示信息的类型的目的模型数据,该目的模型数据具体可以是一位二进制数,例如:该目的模型数据为I时表示上述目的vCPU的信息用于标识多个vCPU,当该目的模型数据为I时表示上述目的vCPU的信息用于标识一个vCPU,具体可以如下:
[0075]假设SMP包括8个vCPU,那么上述目的vCPU的信息就可以为8位二进制数据,且预先设置好这8位二进制数与上述8个vCPU的映射关系,例如,第I位二进制数据与第I个vCPU对应,第2位二进制数据与第2个vCPU对应等。
[0076]这样当上述目的vCPU的信息为11000000时,且目的模型数据为I时,该信息就用于表示第I和第2个vCPU。
[0077]假设SMP包括8个vCPU,那么上述目的vCPU的信息可以为8位二进制数据,而8位二进制数据可以表示256个值,而SMP包括8个vCPU,这样就可以预先选择上述256个值中的8个值与上述8个vCPU的映射关系,选择最小的8个值0-7,这样就可以将8位二进制数据的值为7与第I个vCPU对应,8位二进制数据的值为6与第2个vCPU对应等。
[0078]这样当上述目的vCPU的信息为00000110,即3位二进制数据的值为6时,且目的模型数据为O时,该信息就用于表示第2个vCPU。
[0079]当还可以将上述目的vCPU的信息还可以为3位二进制数据,而3位二进制数据可以表示8个值,即可以预先设置好这8值与上述8个vCPU的映射关系,例如,3位二进制数据的值为7与第I个vCPU对应,3位二进制数据的值为6与第2个vCPU对应等。
[0080]这样当上述目的vCPU的信息为110,即3位二进制数据的值为6时,且目的模型数据为O时,该信息就用于表不第2个vCPU。
[0081]在另一个实施例中,上述虚拟寄存器为虚拟中断命令寄存器vICR的高位寄存器或低位寄存器;步骤201具体可以包括:
[0082]当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据和优化数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,其中,所述优化数据被填入在所述虚拟寄存器的保留位,所述优化数据用于指示所述VMM从所述虚拟寄存器中解析出所述目的vCPU的信息和所述指示数据。
[0083]其中,上述优化数据具体可以是一个一位或者多个位的二进制数,例如,上述优化数据为“I”表示所述VMM从所述虚拟寄存器中解析出所述目的vCPU的信息和所述指示数据。
[0084]该实施例中,由于增加了上述优化数据,这样可以实现当上述寄存数据包含该优化数据时,VMM实现中断的方式就按照本方法实现中断的方式进行,当上述寄存数据不包含该优化数据时,VMM实现中断的方式就可以采用现有技术的方式实现中断,从而保证本实施例中寄存数据或者上述虚拟寄存器可以兼容不同的VMM。
[0085]在另一个实施例中,步骤201具体可以包括:
[0086]当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,其中,所述目的vCPU的信息被填入在所述虚拟寄存器的保留位,所述指示数据包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。
[0087]其中,上述指示数据包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据具体可以是指,该指示数据是用于填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。
[0088]可选的,上述寄存数据包含上述目的vCPU的信息和指示数据具体可以是在执行步骤201之前,将信息和指示数据填入至寄存数据中,或者还可以是在执行在步骤201之前将信息填入至寄存数据,当在执行步骤201中将指示数据填入至该寄存数据中,或者在执行步骤201中将信息和指示数据填入至该寄存数据中。本实施例对此不作限定。
[0089]可选的,上述方法具体可以是应用于虚拟机,通过步骤201将寄存数据写入vAPIC的一个虚拟寄存器,从而产生VM-Exit,即虚拟机进行一次虚拟机与VMM之间的上下文切换。当上述VMM从所述虚拟寄存器解析出所述目的vCPU的信息和所述指示数据后,就可以由该VMM根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。从而在实现中断过程中上述虚拟机只产生了一次VM-Exit,从而可以提高虚拟机的性能。
[0090]可选的,上述vAPIC具体可以是上述虚拟机的vLocal APIC。
[0091]上述技术方案中,当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的虚拟高级可编程中断控制器vAPIC的一个虚拟寄存器,以使虚拟机监控器从所述虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。这样一次中断只需要执行一次对vAPIC的操作,即一次中断只导致一次VM-Exit,从而可以提高虚拟机的性能。
[0092]图3是本发明实施例提供的另一种vCPU之间的中断的实现方法的流程示意图,如图3所示,包括:
[0093]301、当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,以使虚拟机监控器从高位寄存器或者低位寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。
[0094]这样可以实现只需要一次操作就可以将上述目的vCPU的信息和指示数据写入vICR的高位寄存器或者低位寄存器,从而实现一次中断过程中只产生一次VM-Exit。
[0095]可选的,上述vICR具体可以为64位的虚拟寄存器,且上述vICR中的32位为上述高位寄存器,低32位为上述低位寄存器,即上述寄存数据为与高位寄存器对应的32位寄存数据。如图4所示的vICR的高位寄存器中的56-63位数据为目的域,32-55位数据为保留位;vICR的低位寄存器中第0-7位为航向(Vector)域,第8-10位为传送模型(DeliveryMode)域,第11位为目的模型(Destination Mode)域,第12位为传送状态(DeliveryStatus)域,第13位为保留位,第14位为等级(Level)域,第15位触发模型(Trigger Mode)域,第16和17位为保留位,第18和19位为目的速记(Destination Shorthand)域,第20-31位数据为保留位。图5所示的vICR的高位寄存器中的32-63位数据为目的域;vICR的低位寄存器中第0-7位为航向(Vector)域,第8-10位为传送模型(Delivery Mode)域,第11位为目的模型(Destination Mode)域,第12和13位为保留位,第14位为等级(Level)域,第15位触发模型(Trigger Mode)域,第16和17位为保留位,第18和19位为目的速记(Destination Shorthand)域,第20-31位数据为保留位。其中,上述高低寄存器和低位寄存器包括各个域都可以是采用现有技术中vICR对各域的定义,此处不作详细说明。
[0096]可选的,上述将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,具体可以包括:
[0097]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位。
[0098]例如,如图4所示,上述寄存数据的信息被填入在低位寄存器的第20-31位、第16-17位或者第13位的保留位中,而上述指示数据被填入在低位寄存器的第0-7位为航向(Vector)域、第8-10位为传送模型(Delivery Mode)域、第11位为目的模型(DestinationMode)域、第12位为传送状态(Delivery Status)域、第14位为等级(Level)域、第15位触发模型(Trigger Mode)域、第18和19位为目的速记(Destination Shorthand)域中,即上述指示数据可以是包括被填入在上述低位寄存器的航向(Vector)域、传送模型(DeliveryMode)域、目的模型(Destination Mode)域、传送状态(Delivery Status)域、等级(Level)域、触发模型(Trigger Mode)域和目的速记(Destination Shorthand)域的数据。
[0099]例如,如图5所示,上述寄存数据的信息被填入在低位寄存器的第20-31位、第16和7位或者第12-13位的保留位中,而上述指示数据被填入在低位寄存器的第0-7位为航向(Vector)域、第8-10位为传送模型(Delivery Mode)域、第11位为目的模型(Destination Mode)域、第 14 位为等级(Level)域、第 15 位触发模型(Trigger Mode)域、第18和19位为目的速记(Destination Shorthand)域中,即上述指示数据可以是包括被填入在上述低位寄存器的航向(Vector)域、传送模型(Delivery Mode)域、目的模型(Destination Mode)域、等级(Level)域、触发模型(Trigger Mode)域和目的速记(Destination Shorthand)域的数据。
[0100]可选的,上述将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,具体可以包括:
[0101]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器,其中,所述指示数据被填入在所述高位寄存器的保留位。[0102]例如,如图4所示,上述寄存数据的信息被填入在高位寄存器的第56-63位的目的域,上述指示数据被填入在高位寄存器的第32-55位的保留位。
[0103]可选的,步骤301具体可以包括:
[0104]当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据和优化数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,其中,所述优化数据写入所述高位寄存器或者低位寄存器的保留位,所述优化数据用于指示所述VMM从所述虚拟寄存器中解析出所述目的vCPU的信息和所述指示数据。
[0105]这样可以实现上述寄存数据和虚拟寄存器兼容不同的虚拟器监控器。
[0106]可选的,通过上述分析可以得出图5所示的寄存数据包比图4所示的寄存数据包多了一位保留位,即第12位,而图4所示的寄存数据包的第12位为传送状态(DeliveryStatus)域。这样在采用图5所示的寄存数据包时,本实施例中在中断实现过程中,就不需要读取的vICR传送状态(Delivery Status),直接执行步骤301。当在采用图4所示的寄存数据包时,本实施例中在中断实现过程中,在步骤301之前,还可以读取的vICR传送状态(Delivery Status),再根据该传送状态执行步骤301。即在步骤301之前,所述方法可以包括:
[0107]读取的vICR中的传送状态。
[0108]步骤301具体可以包括:
[0109]当源vCPU需要向目的vCPU触发中断时,再根据该传送状态将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器。
[0110]需要说明的是,在实际应用中vICR的传送状态都为空闲(Idle)状态,所以本实施例中不执行读取的vICR中的传送状态也是可以实现的,且可以减少一次VM-Exit。
[0111]上述技术方案中,当源VCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器。这样一次中断只需要执行一次对vAPIC的操作,即一次中断只导致一次VM-Exit,从而可以提高虚拟机的性能。且由于是在vICR写入上述寄存数据包,而vICR为专门用于控制中断的虚拟寄存器,这样VMM可以快速实现将vCPU之间的中断注入到所述目的vCPU。
[0112]下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至二实现的方法,为了便于说明,主要示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一和实施例二。
[0113]图6是本发明实施例提供的一种虚拟机的结构示意图,如图6所示,包括:一个或者多个vCPU61,vCPU包括VAPIC611,所述VAPIC611包括虚拟寄存器6111,其中:
[0114]所述一个或者多个VCPU61中的当前VCPU61用于:
[0115]当所述当前VCPU61需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示所述当前VCPU61向所述目的vCPU触发中断的指示数据的寄存数据包写入所述当前vCPU的VAPIC611的一个虚拟寄存器6111,以使虚拟机监控器从该虚拟寄存器6111解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入所述目的vCPU。
[0116]可选的,VCPU61将寄存数据写入VAPIC611的虚拟寄存器6111,从而产生VM-Exit,即虚拟机进行一次虚拟机与VMM (例如:Hypervisor)之间的上下文切换。当上述VMM从所述虚拟寄存器6111解析出所述目的vCPU的信息和所述指示数据后,就可以由该VMM根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。从而在实现中断过程中上述虚拟机只产生了一次VM-Exit,从而可以提高虚拟机的性能。
[0117]可选的,上述包含所述目的vCPU的信息和用于表示所述当前VCPU61向所述目的vCPU触发中断的指示数据的寄存数据包写入所述当前vCPU的VAPIC611的一个虚拟寄存器6111的操作上,所述当前vCPU具体用于:
[0118]将包含所述目的vCPU的信息和用于表示所述当前VCPU61向目的vCPU触发中断的指示数据和优化数据的寄存数据写入所述当前VCPU61的VAPIC611的一个虚拟寄存器6111,其中,所述优化数据被填入在该虚拟寄存器6111的保留位,所述优化数据用于指示所述VMM从该虚拟寄存器中解析出所述目的vCPU的信息和所述指示数据。
[0119]这样通过上述优化数据可以提高上述寄存数据或者提高上述虚拟寄存器的兼容性。
[0120]可选的,上述包含所述目的vCPU的信息和用于表示所述当前VCPU61向所述目的vCPU触发中断的指示数据的寄存数据包写入所述当前vCPU的VAPIC611的一个虚拟寄存器6111的操作上,所述当前vCPU具体用于:
[0121]将包含所述目的vCPU的信息和用于表示所述当前VCPU61向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU61的VAPIC611的一个虚拟寄存器611,其中,所述目的vCPU的信息被填入在该虚拟寄存器6111的保留位,所述指示数据包括被填入在该虚拟寄存器6111的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。
[0122]可选的,上述VAPIC611具体可以是上述虚拟机的vLocal vAPIC。
[0123]可选的,所述虚拟机上还运行有操作子系统(Guest OS) 62和应用程序63,其中:
[0124]操作子系统(Guest OS) 62,用于运行应用程序63 ;
[0125]应用程序63,用于执行虚拟机中业务。
[0126]可选的,上述目的vCPU可以是所述虚拟机的vCPU,也可以是另一个虚拟机的vCPUo
[0127]上述技术方案中,当所述当前vCPU需要向目的vCPU触发中断时,包含所述目的vCPU的信息和用于表示所述当前vCPU向所述目的vCPU触发中断的指示数据的寄存数据包写入所述当前vCPU的vAPIC的一个虚拟寄存器,以使虚拟机监控器从该虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。这样一次中断只需要执行一次对vAPIC的操作,即一次中断只导致一次VM-Exit,从而可以提高虚拟机的性能。
[0128]图7是本发明实施例提供的另一种虚拟机的结构示意图,如图7所示,包括:一个或者多个 vCPU71,vVPU71 包括 vAPIC711,所述 vAPIC711 包括 vICR7111,其中:
[0129]一个或者多个VCPU71中的当前VCPU71用于:
[0130]当所述当前VCPU71需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器,以使VMM从所述高位寄存器或者低位寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述VMM根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。
[0131]可选的,上述VICR7111包括的高位寄存器和低位寄存器的结构可以参考图4和图5所示的寄存器结构,此处不作重复说明。
[0132]可选的,上述将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作上,所述当前VCPU71具体可以用于:
[0133]将包含所述目的vCPU的信息和用于表示当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入当前VCPU71的VAPIC711的所述vICR7111的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位。
[0134]例如,如图4所示,上述寄存数据的信息写入低位寄存器的第20-31位、第16_17位或者第13位的保留位中,而上述指示数据写入低位寄存器的第0-7位为航向(Vector)域、第8-10位为传送模型(Delivery Mode)域、第11位为目的模型(Destination Mode)域、第12位为传送状态(Delivery Status)域、第14位为等级(Level)域、第15位触发模型(Trigger Mode)域、第18和19位为目的速记(Destination Shorthand)域中,即上述指示数据可以是包括写入上述低位寄存器的航向(Vector)域、传送模型(Delivery Mode)域、目的模型(Destination Mode)域、传送状态(Delivery Status)域、等级(Level)域、触发模型(Trigger Mode)域和目的速记(Destination Shorthand)域的数据。
[0135]例如,如图5所示,上述寄存数据的信息写入低位寄存器的第20-31位、第16和7位或者第12-13位的保留位中,而上述指示数据写入低位寄存器的第0-7位为航向(Vector)域、第8-10位为传送模型(Delivery Mode)域、第11位为目的模型(DestinationMode)域、第14位为等级(Level)域、第15位触发模型(Trigger Mode)域、第18和19位为目的速记(Destination Shorthand)域中,即上述指示数据可以是包括写入上述低位寄存器的航向(Vector)域、传送模型(Delivery Mode)域、目的模型(Destination Mode)域、等级(Level)域、触发模型(Trigger Mode)域和目的速记(Destination Shorthand)域的数据。
[0136]可选的,上述将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作上,所述当前VCPU71具体可以用于:
[0137]将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器,其中,所述指示数据被填入在所述高位寄存器的保留位。
[0138]例如,如图4所示,上述寄存数据包含的信息被填入在高位寄存器的第56-63位的目的域,上述指示数据被填入高位寄存器的第32-55位的保留位。
[0139]可选的,上述将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作上,所述当前VCPU71具体可以用于:[0140]将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据和优化数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器,其中,所述优化数据被填入在该高位寄存器或者低位寄存器的保留位,所述优化数据用于指示所述VMM从该虚拟寄存器中解析出所述目的vCPU的信息和所述指示数据。
[0141]这样可以实现上述寄存数据兼容不同的虚拟器监控器。
[0142]可选的,当在采用图4所示的寄存数据包时,本实施例中在中断实现过程中,当前VCPU71在执行将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作之前,还可以用于:
[0143]读取的vICR中的传送状态。
[0144]上述将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作上,所述当前VCPU71具体可以用于:
[0145]再根据该传送状态将包含所述目的vCPU的信息和用于表示所述当前VCPU71向目的vCPU触发中断的指示数据的寄存数据写入所述当前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器。
[0146]需要说明的是,在实际应用中vICR的传送状态都为空闲(Idle)状态,所以本实施例中不执行读取的vICR中的传送状态也是可以实现的,且可以减少一次VM-Exit。
[0147]可选的,所述虚拟机上还运行有操作子系统(Guest OS) 72和应用程序73,其中:
[0148]操作子系统(Guest OS) 72,用于运行应用程序73 ;
[0149]应用程序73,用于执行虚拟机中业务。
[0150]上述技术方案中,当所述当前vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示所述当前vCPU向目的vCPU触发中断的指示数据的寄存数据写入所述当前vCPU的vAPIC的vICR的高位寄存器或者低位寄存器,以使VMM从所述高位寄存器或者低位寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述VMM根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。这样一次中断只需要执行一次对vAPIC的操作,即一次中断只导致一次VM-Exit,从而可以提高虚拟机的性能,且由于是在vICR写入上述寄存数据包,而vICR为专门用于控制中断的虚拟寄存器,这样VMM可以快速实现将vCPU之间的中断注入到所述目的vCPU。
[0151]图8是本发明实施例提供的一种计算节点的结构示意图,如图8所示,包括:硬件层81、运行在所述硬件层81之上的VMM82、以及运行在所述VMM之上的至少一个虚拟机,其中,所述至少一个虚拟机VM包括第一虚拟机83和第二虚拟机81,第一虚拟机83包括第一VCPU831、第一 VCPU831 包括第一 vAPIC8311,第一 vAPIC8311 包括第一虚拟寄存器 8311,第二虚拟机84包括第二 VCPU841,其中:
[0152]硬件层81,用于提供VMM82、第一虚拟机83和第二虚拟机84的虚拟化环境运行的硬件平台。其中,硬件层81可包括多种硬件,例如某计算节点的硬件层可包括CPU和内存,还可以包括网卡、存储器等等高速/低速输入/输出(I/O, Input/Output)设备,及具有特定处理功能的其它设备,如10MMU,其中IOMMU可用于虚拟机物理地址和Host物理地址的转换。
[0153]第一 VCPU831,用于当第一 vCPU831需要向第二 vCPU触发中断时,将包含所述第二VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841触发中断的指示数据的寄存数据包写入所述第一虚拟寄存器83111 ;
[0154]所述VMM82,用于从所述第一虚拟寄存器83111解析出所述第二 vCPU的信息和所述指示数据,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二VCPU841,其中所述vCPU之间的中断包括第一 VCPU831与第二 vCPU841之间的中断。
[0155]可选的,当上述VMM上运行还有其它虚拟机(例如:第三虚拟机)时,本实施例还可以实现上述第一 vCPU与其它虚拟机(例如:第三虚拟机)的vCPU之间的中断,具体可以实现过程请参考第一 vCPU与第二 vCPU之间的中断实现过程,此作不作重复说明。
[0156]可选的,上述第一虚拟寄存器83111为vICR,该vICR包括高位寄存器和低位寄存器,其中,闻位寄存器和低位寄存器的结构具体可以参考图4和图5。
[0157]可选的,所述第一 VCPU831具体可以用于当第一 vCPU831需要向第二 vCPU触发中断时,将包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841触发中断的指示数据的寄存数据包写入所述高位寄存器或低位寄存器;
[0158]所述VMM82具体可以用于从所述高位寄存器或低位寄存器解析出所述第二VCPU841的信息和所述指示数据,并根据所述第二 VCPU841的信息和指示数据将vCPU之间的中断注入到所述第二 VCPU841,其中所述vCPU之间的中断包括第一 vCPU8 31与第二VCPU841之间的中断。
[0159]可选的,所述第一 VCPU831具体用于当第一 vCPU831需要向第二 vCPU841触发中断时,将包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841触发中断的指示数据的寄存数据包写入所述低位寄存器,其中,所述第二 VCPU841的信息被填入在所述低位寄存器的保留位;
[0160]所述VMM82具体用于从所述低位寄存器的保留位解析出所述第二 vCPU841的信息,以及从所述低位寄存器解析出所述指示数据,并根据所述第二 VCPU841的信息和指示数据将vCPU之间的中断注入到所述第二 VCPU841,其中所述vCPU之间的中断包括第一VCPU831与第二 VCPU841之间的中断。
[0161]其中,所述指示数据可以包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。
[0162]可选的,所述第一 VCPU831具体用于当第一 vCPU831需要向第二 vCPU841触发中断时,将包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841触发中断的指示数据的寄存数据包写入所述高位寄存器,其中,所述指示数据被填入在所述闻位寄存器的保留位;
[0163]所述VMM82具体用于从所述高位寄存器的保留位解析出所述指示数据,以及从所述高位寄存器解析出所述第二 VCPU841的信息,并根据所述第二 VCPU841的信息和指示数据将vCPU之间的中断注入到所述第二 VCPU841,其中所述vCPU之间的中断包括第一VCPU831与第二 VCPU841之间的中断。
[0164]可选的,所述第一 VCPU831具体可以用于当第一 vCPU831需要向第二 vCPU841触发中断时,将包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二VCPU841触发中断的指示数据和优化数据的寄存数据包写入所述第一虚拟寄存器83111,其中,所述优化数据被填入在该第一虚拟寄存器83111的保留位,所述优化数据用于指示所述VMM从所述第一虚拟寄存器83111中解析出所述第二 vCPU的信息和所述指示数据;
[0165]所述VMM具体可以用于从所述第一虚拟寄存器83111解析出所述优化数据,并根据所述优化数据从所述第一虚拟寄存器83111解析出所述第二 vCPU的信息和所述指示数据,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 VCPU841,其中所述vCPU之间的中断包括第一 VCPU831与第二 VCPU841之间的中断。
[0166]可选的,所述第一 VCPU831具体可以用于当第一 vCPU831需要向第二 vCPU触发中断时,将包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841触发中断的指示数据的寄存数据包写入所述第一虚拟寄存器83111,其中,所述第二 vCPU的信息被填入在所述虚拟寄存器的保留位,所述指示数据包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据;
[0167]所述VMM82具体可以用于从所述第一虚拟寄存器83111的保留位解析出所述第
二vCPU的信息,以及从所述第一虚拟寄存器83111的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域中解析出所述指示数据,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 VCPU841,其中所述vCPU之间的中断包括第一VCPU831与第二 VCPU841之间的中断。
[0168]上述技术方案中,所述第一 vCPU当第一 vCPU需要向第二 vCPU触发中断时,将包含所述第二 vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU触发中断的指示数据的寄存数据包写入所述第一虚拟寄存器;所述VMM从所述第一虚拟寄存器解析出所述第二vCPU的信息和所述指示数据,并根据所述第二 vCPU的信息和指示数据将vCPU之间的中断注入到所述第二 vCPU,其中所述vCPU之间的中断包括第一 vCPU与第二 vCPU之间的中断。这样一次中断只需要执行一次对vAPIC的操作,即一次中断只导致一次VM-Exit,从而可以提高虚拟机的性能。
[0169]图9是本发明实施例提供的另一种计算节点的结构示意图,如图9所示,该计算节点包括:至少一个处理器91,例如CPU,至少一个网络接口 92或者其他用户接口 93,存储器95,至少一个通信总线92。通信总线92用于实现这些组件之间的连接通信。该计算节点90可选的包含用户接口 93,包括显示器,键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触感显示屏)。存储器95可能包含高速RAM存储器,也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器605可选的可以包含至少一个位于远离前述处理器91的存储装置。
[0170]在一些实施方式中,存储器95存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
[0171]操作系统951,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;
[0172]应用程序模块952,包含各种应用程序,用于实现各种应用业务。
[0173]应用程序模块952中包括但不限于一个或者多个vCPU61,VCPU61包括vAPIC611,所述VAPIC611包括虚拟寄存器6111。
[0174]应用程序模块952中各模块的具体实现参见图7和图8所示实施例中的相应模块,在此不赘述。
[0175]在本发明实施例中,通过调用存储器95存储的程序或指令,处理器91用于:
[0176]当源vCPU需要向目的vCPU触发中断时,
[0177]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的虚拟高级可编程中断控制器vAPIC的一个虚拟寄存器,以使虚拟机监控器从所述虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述虚拟机监控器根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPUo
[0178]在上述各个实施例中,进一步地,所述处理器91还用于:
[0179]当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,以使VMM从所述高位寄存器或者低位寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述VMM根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。
[0180]可选的,处理器91执行的将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器的操作,可以包括:
[0181]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位。
[0182]可选的,处理器91执行的将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器的操作,可以包括:
[0183]将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的所述vICR的高位寄存器,其中,所述指示数据被填入在所述高位寄存器的保留位。
[0184]在上述各个实施例中,进一步地,所述处理器91还用于:
[0185]当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据和优化数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,其中,所述优化数据被填入在所述虚拟寄存器的保留位,所述优化数据用于指示所述VMM从所述虚拟寄存器中解析出所述目的vCPU的信息和所述指示数据。以使VMM根据所述优化数据从所述虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述VMM根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。
[0186]在上述各个实施例中,进一步地,所述处理器91还用于:
[0187]当源vCPU需要向目的vCPU触发中断时,将包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU触发中断的指示数据的寄存数据写入源vCPU的vAPIC的一个虚拟寄存器,其中,所述目的vCPU的信息被填入在所述虚拟寄存器的保留位,所述指示数据包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。以使VMM从所述虚拟寄存器解析出所述目的vCPU的信息和所述指示数据,并由所述VMM根据所述目的vCPU的信息和指示数据将vCPU之间的中断注入到所述目的vCPU。
[0188]可见,采用上述方案后,这样一次中断只需要执行一次对vAPIC的操作,即一次中断只导致一次VM-Exit,从而可以提高虚拟机的性能。且如果将上述寄存数据包写入虚拟寄存器,这样由于中断命令寄存为专门用于控制中断的虚拟寄存器,VMM可以快速实现将vCPU之间的中断注入到所述目的vCPU。
[0189]图10是本发明实施例还提供一种计算机系统的结构示意图,如图10所示,可包括:至少一个计算节点1000。
[0190]本发明实施例的计算节点的描述可参考前述实施例,这里不再赘述。
[0191]综上,本发明实施例中,中断过程只需要执行一次对vAPIC的操作,即一次中断只导致一次VM-Exit,从而可以提高虚拟机的性能。且由于是在vICR写入上述寄存数据包,而vICR为专门用于控制中断的虚拟寄存器,这样VMM可以快速实现将vCPU之间的中断注入到所述目的vCPU。另外,本发明实施例中,是在寄存数据包的保留位中填入信息这样在执行本方法过程中,不会修改寄存数据现有的功能。另外,本发明实施例中在寄存数据增加了优化数据,从而可以提高寄存数据和虚拟寄存器的兼容性。
[0192]具体的,为了克服现有技术中,IPI中断是系统常见中断,IPI中断处理中的APIC虚拟寄存器访问会引起VM-Exit,从而导致虚拟机性能下降的问题,在一种实现方式下,本发明实施例通过虚拟APIC的扩展位,将三次APIC访问合并为一次,从而减少APIC访问次数,达到优化IPI中断性能的效果,从而提升了虚拟机和系统的性能。
[0193]应当理解的是,对中断处理过程中,其他类型中断对APIC虚拟寄存器多次访问造成的VM-Exit场景也可以采用本发明实施例类似方式实现以优化性能。
[0194]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件(例如处理器)来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存取存储器(Random Access Memory,简称 RAM)等。
[0195]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【权利要求】
1.一种虚拟处理器之间的中断的实现方法,其特征在于,包括: 当源虚拟处理器需要向目的虚拟处理器触发中断时, 将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的虚拟高级可编程中断控制器VAPIC的一个虚拟寄存器,以使虚拟机监控器从所述虚拟寄存器解析出所述目的虚拟处理器的信息和所述指示数据,并由所述虚拟机监控器根据所述目的虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入到所述目的虚拟处理器。
2.如权利要求1所述的方法,其特征在于,所述虚拟寄存器为虚拟中断命令寄存器vICR的高位寄存器或低位寄存器;所述将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的vAPIC的一个虚拟寄存器,包括: 将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的vAPIC的所述vICR的高位寄存器或者低位寄存器。
3.如权利要求2所述的方法,其特征在于,所述将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的vAPIC的所述vICR的高位寄存器或者低位寄存器,包括: 将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的vAPIC的所述vICR的低位寄存器,其中,所述目的虚拟处理器的信息被填入在所述低位寄存器的保留位;或者 将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的vAPIC的所述vICR的高位寄存器,其中,所述指示数据被填入在所述高位寄存器的保留位。
4.如权利要求1所述的方法,其特征在于,所述将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的vAPIC的一个虚拟寄存器,包括: 将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据和优化数据的寄存数据写入源虚拟处理器的vAPIC的一个虚拟寄存器,其中,所述优化数据被填入在所述虚拟寄存器的保留位,所述优化数据用于指示所述虚拟机监控器从所述虚拟寄存器中解析出所述目的虚拟处理器的信息和所述指示数据。
5.如权利要求1所述的方法,其特征在于,所述将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的vAPIC的一个虚拟寄存器,包括: 将包含所述目的虚拟处理器的信息和用于表示源虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入源虚拟处理器的vAPIC的一个虚拟寄存器,其中,所述目的虚拟处理器的信息被填入在所述虚拟寄存器的保留位,所述指示数据包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。
6.一种虚拟机,其特征在于,包括:一个或多个虚拟处理器,所述虚拟处理器包括虚拟高级可编程中断控制器vAPIC,所述vAPIC包括虚拟寄存器,其中:所述一个或多个虚拟处理器中当前虚拟处理器用于: 当所述当前虚拟处理器需要向目的虚拟处理器触发中断时,将包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向所述目的虚拟处理器触发中断的指示数据的寄存数据包写入所述当前虚拟处理器的vAPIC的一个虚拟寄存器,以使虚拟机监控器从该虚拟寄存器解析出所述目的虚拟处理器的信息和所述指示数据,并由所述虚拟机监控器根据所述目的虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入所述目的虚拟处理器。
7.如权利要求6所述的虚拟机,其特征在于,所述虚拟寄存器为虚拟中断命令寄存器vICR的高位寄存器或低位寄存器;所述包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向所述目的虚拟处理器触发中断的指示数据的寄存数据包写入所述当前虚拟处理器的vAPIC的一个虚拟寄存器的操作上,所述当前虚拟处理器具体用于: 将包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入所述当前虚拟处理器的vAPIC的vICR的高位寄存器或者低位寄存器。
8.如权利要求7所述的虚拟机,其特征在于,所述将包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入所述当前虚拟处理器的vAPIC的vICR的高位寄存器或者低位寄存器的操作上,所述虚拟处理器具体用于: 将包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入所述当前虚拟处理器的vAPIC的vICR的低位寄存器,其中,所述目的虚拟处理器的信息被填入在所述低位寄存器的保留位;或者 将包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入所述当前虚拟处理器的vAPIC的vICR的高位寄存器,其中,所述指示数据被填入在所述高位寄存器的保留位。
9.如权利要求6所述的虚拟机,其特征在于,所述包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向所述目的虚拟处理器触发中断的指示数据的寄存数据包写入所述当前虚拟处理器的vAPIC的一个虚拟寄存器的操作上,所述当前虚拟处理器具体用于: 将包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向目的虚拟处理器触发中断的指示数据和优化数据的寄存数据写入所述当前虚拟处理器的vAPIC的一个虚拟寄存器,其中,所述优化数据被填入在该虚拟寄存器的保留位,所述优化数据用于指示所述虚拟机监控器从该虚拟寄存器中解析出所述目的虚拟处理器的信息和所述指示数据。
10.如权利要求6所述的虚拟机,其特征在于,所述包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向所述目的虚拟处理器触发中断的指示数据的寄存数据包写入所述当前虚拟处理器的vAPIC的一个虚拟寄存器的操作上,所述当前虚拟处理器具体用于: 将包含所述目的虚拟处理器的信息和用于表示所述当前虚拟处理器向目的虚拟处理器触发中断的指示数据的寄存数据写入所述当前虚拟处理器的vAPIC的一个虚拟寄存器,其中,所述目的虚拟处理器的信息被填入在该虚拟寄存器的保留位,所述指示数据包括被填入在该虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据。
11.一种计算节点,其特征在于,包括:硬件层、运行在所述硬件层之上的虚拟机监控器、以及运行在所述虚拟机监控器之上的至少一个虚拟机,其中,所述至少一个虚拟机包括第一虚拟机和第二虚拟机,第一虚拟机包括第一虚拟处理器,所述第一虚拟处理器包括第一虚拟高级可编程中断控制器VAPIC,所述第一 vAPIC包括第一虚拟寄存器,第二虚拟机包括第二虚拟处理器,其中: 所述第一虚拟处理器,用于当第一虚拟处理器需要向第二虚拟处理器触发中断时,将包含所述第二虚拟处理器的信息和用于表示所述第一虚拟处理器向所述第二虚拟处理器触发中断的指示数据的寄存数据包写入所述第一虚拟寄存器; 所述虚拟机监控器,用于从所述第一虚拟寄存器解析出所述第二虚拟处理器的信息和所述指示数据,并根据所述第二虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入到所述第二虚拟处理器,其中所述虚拟处理器之间的中断包括第一虚拟处理器与第二虚拟处理器之间的中断。
12.如权利要求11所述的计算节点,其特征在于,所述第一虚拟寄存器为为虚拟中断命令寄存器vICR的高位寄存器或低位寄存器; 所述第一虚拟处理器具体用于当第一虚拟处理器需要向第二虚拟处理器触发中断时,将包含所述第二虚拟处理器的信息和用于表示所述第一虚拟处理器向所述第二虚拟处理器触发中断的指示数据的寄存数据包写入所述高位寄存器或低位寄存器; 所述虚拟机监控器具体用于从所述高位寄存器或低位寄存器解析出所述第二虚拟处理器的信息和所述指示数据,并根据所述第二虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入到所述第二虚拟处理器,其中所述虚拟处理器之间的中断包括第一虚拟处理器与第二虚拟处理器之间的中断。
13.如权利要求12所述的计算节点,其特征在于, 所述第一虚拟处理器具体用于当第一虚拟处理器需要向第二虚拟处理器触发中断时,将包含所述第二虚拟处理器的信息和用于表示所述第一虚拟处理器向所述第二虚拟处理器触发中断的指示数据的寄存数据包写入所述低位寄存器,其中,所述第二虚拟处理器的信息被填入在所述低位寄存器的保留位; 所述虚拟机监控器具体用于从所述低位寄存器的保留位解析出所述第二虚拟处理器的信息,以及从所述低位寄存器解析出所述指示数据,并根据所述第二虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入到所述第二虚拟处理器,其中所述虚拟处理器之间的中断包括第一虚拟处理器与第二虚拟处理器之间的中断;或者 所述第一虚拟处理器具体用于当第一虚拟处理器需要向第二虚拟处理器触发中断时,将包含所述第二虚拟处理器的信息和用于表示所述第一虚拟处理器向所述第二虚拟处理器触发中断的指示数据的寄存数据包写入所述高位寄存器,其中,所述指示数据被填入在所述闻位寄存器的保留位; 所述虚拟机监控器具体用于从所述高位寄存器的保留位解析出所述指示数据,以及从所述高位寄存器解析出所述第二虚拟处理器的信息,并根据所述第二虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入到所述第二虚拟处理器,其中所述虚拟处理器之间的中断包括第一虚拟处理器与第二虚拟处理器之间的中断。
14.如权利要求11所述的计算节点,其特征在于, 所述第一虚拟处理器具体用于当第一虚拟处理器需要向第二虚拟处理器触发中断时,将包含所述第二虚拟处理器的信息和用于表示所述第一虚拟处理器向所述第二虚拟处理器触发中断的指示数据和优化数据的寄存数据包写入所述第一虚拟寄存器,其中,所述优化数据被填入在该虚拟寄存器的保留位,所述优化数据用于指示所述虚拟机监控器从所述第一虚拟寄存器中解析出所述第二虚拟处理器的信息和所述指示数据; 所述虚拟机监控器具体用于从所述第一虚拟寄存器解析出所述优化数据,并根据所述优化数据从所述第一虚拟寄存器解析出所述第二虚拟处理器的信息和所述指示数据,并根据所述第二虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入到所述第二虚拟处理器,其中所述虚拟处理器之间的中断包括第一虚拟处理器与第二虚拟处理器之间的中断。
15.如权利要求11所述的计算节点,其特征在于, 所述第一虚拟处理器具体用于当第一虚拟处理器需要向第二虚拟处理器触发中断时,将包含所述第二虚拟处理器的信息和用于表示所述第一虚拟处理器向所述第二虚拟处理器触发中断的指示数据的寄存数据包写入所述第一虚拟寄存器,其中,所述第二虚拟处理器的信息被填入在所述虚拟寄存器的保留位,所述指示数据包括被填入在所述虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域的数据; 所述虚拟机监控器具体用于从所述第一虚拟寄存器的保留位解析出所述第二虚拟处理器的信息,以及从所述第一虚拟寄存器的航向域、传送模域、目的模型域、等级域、触发模型域和目的速记域中解析出所述指示数据,并根据所述第二虚拟处理器的信息和指示数据将虚拟处理器之间的中断注入到所述第二虚拟处理器,其中所述虚拟处理器之间的中断包括第一虚拟处理器与第二虚拟处理器之间的中断。
16.一种计算机系统,其特`征在于,包括:至少一个如权利要求11-15任一项所述的计算节点。
【文档编号】G06F9/48GK103559087SQ201310531026
【公开日】2014年2月5日 申请日期:2013年10月31日 优先权日:2013年10月31日
【发明者】藏洪永, 张浩宇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1