分布式虚拟化系统的虚拟中断管理方法及装置的制作方法

文档序号:6372446阅读:337来源:国知局
专利名称:分布式虚拟化系统的虚拟中断管理方法及装置的制作方法
技术领域
本发明实施例涉及计算机技术,尤其涉及一种分布式虚拟化系统的虚拟中断管理方法及装置。
背景技术
如图IA所示,在非虚拟化环境下 ,每个外围设备互联(Peripheral ComponentInterconnect,简称PCI)设备Devi、Dev2***. Devn,在完成自己的一次工作后需要传送一次中断去告知操作系统,这是通过将该PCI设备连接到中断控制器的中断引脚来实现的,例如,连接到IO高级可编程中断控制器(I/O Advanced Programmable InterruptController,简称I0-APIC)的中断引脚。在系统启动时,基本输入输出系统(Basicinput/output System,简称BIOS)通过向内存中写入高级配置和电源管理接口(AdvancedConfiguration and Power Interface,简称ACPI)表的方式,向操作系统告知所有PCI设备的信息,包括所有PCI设备自身的中断引脚与中断控制器的中断引脚的连接关系。操作系统启动后,设置该PCI设备的中断引脚,使该PCI设备的中断传递到一个指定的物理CPU上处理。其中,ACPI表可以是差异化系统描述表(Differentiated System DescriptionTable,简称 DSDT)表。在分布式虚拟化环境下,分布式虚拟机监控器(Distributed Virtual MachineMonitor,简称DVMM)也需要模拟虚拟PCI设备的中断连接关系。首先,分布式虚拟化环境下每个物理节点的设备模型(Device Model,简称DM)在创建一个虚拟PCI设备时,会为该虚拟PCI设备分配总线号Bus和设备号Device,并确定该虚拟PCI设备自身的中断引脚号 Intx。其次,当启动虚拟机时,虚拟 BIOS (Virtual Basic Input/Output System,简称vBIOS)会通过内存中的ACPI表告知操作系统设备号为Device的虚拟PCI设备的第Intx号中断引脚,连接在全局虚拟10高级可编程中断控制器(Virtual I/0AdvancedProgrammable Interrupt Controller,简称vIO-APIC)的哪一个全局虚拟中断引脚上。最后,DVMM为虚拟机模拟全局vIO-APIC中的全局虚拟中断引脚所连接的虚拟PCI设备的中断引脚号。现有的分布式虚拟化系统中,一台虚拟机的一个全局虚拟中断引脚可能会连接到若干个物理节点中的虚拟PCI设备的中断引脚上,如图IB所示,某物理节点中设备号和中断引脚号为(0,1)的虚拟PCI设备的中断引脚与另一物理节点中设备号和中断引脚号为(8,0)的虚拟PCI设备的中断引脚同时连接在某虚拟机的第17号全局虚拟中断引脚上。那么当操作系统对该第17号全局虚拟中断引脚的进行设置时,运行设置命令的DVMM截获到操作系统对该第17号全局虚拟中断引脚的设置操作后,需要向多个物理节点发送数据包,以对连接到该第17号全局虚拟中断引脚的所有的虚拟PCI设备的中断引脚,例如(0,I)和(8,0)进行同步设置,发送同步设置的数据包。当虚拟机的一条设置指令被截获之后,它的下一条指令会在上一条指令被模拟完后才会被执行,所以模拟该设置指令的所用时间越长,虚拟机的运行速度更慢。而模拟一条设置指令需要在多个节点间进行同步设置,花费的时间更长,这种不同物理节点间的同步操作会对虚拟机性能造成很大影响。

发明内容
本发明实施例提供一种分布式虚拟化系统的虚拟中断管理方法及装置,用以解决现有分布式虚拟化系统中,由于若干个物理节点中的虚拟PCI设备连接到同一个全局虚拟中断引脚导致性能降低的缺陷。一方面,本发明实施例提供一种分布式虚拟化系统的虚拟中断管理方法,包括虚拟机的虚拟BIOS模块在高级配置和电源管理接口 ACPI表中建立全局虚拟中断引脚与虚拟外围设备互联PCI设备的中断引脚的连接关系,其中,所述全局虚拟中断引脚为虚拟中断引脚控制器上的一个或多个中断引脚,所述全局虚拟中断引脚中的任意一个对应于属于同一个物理节点的一个或多个所述虚拟PCI设备的中断引脚;所述虚拟中断引脚控制器是为所述虚拟机的操作系统提供的;所述虚拟机的操作系统获取所述ACPI表,根据所述ACPI表,运行为所述ACPI表中的全局虚拟中断引脚设置目标虚拟中央处理单元vCPU的指令;截获到所述指令的分布式虚拟机监控器,根据分布式中断引脚信息确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点,所述局部虚拟中断引脚位于物理节点上并用于模拟所述全局虚拟中断引脚,所述分布式中断引脚信息包括全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,以及各个物理节点包括的虚拟PCI设备和局部虚拟中断引脚;所述局部虚拟中断引脚所在的物理节点上的分布式虚拟机监控器,根据所述指令保存所述局部虚拟中断引脚与所述目标VCPU的对应关系,其中,所述目标vCPU用于处理所述局部虚拟中断引脚上的中断。另一方面,本发明实施例提供一种分布式虚拟化系统的虚拟中断管理装置,包括虚拟机和多个部署在不同物理节点上的分布式虚拟机监控器。所述虚拟机,包括虚拟BIOS模块和操作系统;所述虚拟BIOS模块,用于在ACPI表中建立所述虚拟机上全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中所述全局虚拟中断引脚中的任意一个对应于属于同一个所述物理节点的一个或多个所述虚拟PCI设备的中断引脚;所述操作系统,用于获取所述ACPI表,根据所述ACPI表,运行为所述ACPI表中的 全局虚拟中断引脚设置目标vCPU的指令;所述多个分布式虚拟机监控器中的第一分布式虚拟机监控器,用于截获所述操作系统设置目标vCPU的指令,根据分布式中断引脚信息确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点,所述局部虚拟中断引脚位于所述物理节点上并用于模拟所述全局虚拟中断引脚,所述分布式中断引脚信息包括全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,以及各个物理节点包括的虚拟PCI设备以及所述各个物理节点负责的局部虚拟中断引脚;所述多个分布式虚拟机监控器中的第二分布式虚拟机监控器,用于根据所述指令保存所述局部虚拟中断引脚与所述目标vCPU的对应关系,所述第二分布式虚拟机监控器为所述局部虚拟中断引脚所在的物理节点上的分布式虚拟机监控器。本发明实施例提供的分布式虚拟化系统的虚拟中断管理方法及装置,虚拟BIOS模块写入ACPI表中的一个全局虚拟中断引脚对应同一个物理节点上的局部虚拟中断引脚,即一个全局虚拟中断引脚由在同一个物理节点上的局部虚拟中断引脚去模拟,因而,操作系统在设置该全局虚拟中断引脚时,不需要向不同的节点发送同步设置的数据包,提高了分布式虚拟化系统的性能。


图IA为现有技术提供的在非虚拟化环境下的PCI设备中断连接架构图;图IB为现有技术提供的在分布式虚拟化环境下的虚拟PCI设备中断连接架构图;图2为本发明实施例提供的一种分布式虚拟化结构;图3为本发明实施例提供的一种分布式虚拟化系统的虚拟中断引脚管理方法流程图;·图4为本发明实施例提供的虚拟PCI设备中断连接架构图;图5为本发明实施例提供的另一种分布式虚拟化系统的虚拟中断引脚管理方法流程图;图6为本发明实施例提供的又一种分布式虚拟化系统的虚拟中断引脚管理方法流程图;图7为本发明实施例提供的一种分布式虚拟化系统的虚拟中断引脚管理结构示意图。
具体实施例方式虚拟化技术是一种将底层硬件设备与上层操作系统、应用程序分离的去耦合方法,其引入虚拟机监控器(Virtual Machine Monitor,简称VMM)层来直接管理底层硬件资源,并创建与底层硬件无关的虚拟机(Virtual Machine,简称VM)供上层操作系统和应用程序使用。虚拟机没有真正的物理设备,需要用软件模拟中断控制器和物理设备,形成虚拟中断控制器和虚拟设备。操作系统启动之前,虚拟BIOS在分配给所属虚拟机的内存中写入ACPI表。操作系统启动后,可以通过指令设置和使用虚拟设备。VMM在截获到操作系统的这些指令后,按照操作系统的指令设置虚拟设备或模拟地操作物理设备,并把模拟结果返回给虚拟机。分布式虚拟化技术是一种将来自多台物理机器的资源,以虚拟的方式重新组合成一台虚拟机的技术,也就是分布式虚拟机的虚拟硬件分布在不同节点,为的是使用不同节点上的硬件设备。图2为本发明实施例提供的一种分布式虚拟化结构。如图2所示的分布式虚拟化架构包括VM层、DVMM层和物理节点层。每个物理节点包括处理器、内存、磁盘、网卡和外设等硬件资源。每个物理节点均部署有一个DVMM,创建一个虚拟机时,部署在每个物理节点上的DVMM会在各自所属的物理节点为虚拟机创建所需的虚拟硬件设备。虚拟机在同一个时间段,基于一个物理节点进行运行。DVMM主要包括CPU虚拟化、内存虚拟化和I/O虚拟化等三大模块,达成了以虚拟资源聚合为途径的物理资源聚合。其中I/O虚拟化会模拟非虚拟化环境下的PCI设备及其中断连接结构。安装在虚拟机上的操作系统启动和运行时初始化和使用硬件资源时,DVMM不会允许所有这些动作直接操作在物理硬件上,而是会截获敏感的访问行为,并把这种访问行为模拟成对虚拟硬件的访问,最终以虚拟硬件为代理去操作真正的物理硬件,保证了不同虚拟机间的隔离性和虚拟机对硬件资源使用的正确性。DVMM层直接管理本地底层硬件资源,并通过网络通信的方式与其他节点上的DVMM相互协作,使虚拟机具有跨节点访问资源的能力。具体地,当一个节点的分布式虚拟机监控器截获虚拟机操作系统的指令后,首先要判断该指令所操作的虚拟硬件(包括虚拟中断控制器的引脚)在哪个节点,然后把所要进行的操作通过通讯模块传送到该节点去模拟,例如,传送给设置虚拟硬件或者操作虚拟硬件对应的真正物理设备去模拟。图3为本发明实施例提供的一种分布式虚拟化系统的虚拟中断引脚管理方法流程图。图4为本发明实施例提供的虚拟PCI设备中断连接架构图。如图4所示,VM提供的虚拟中断控制器为全局vIO-APIC,全局vIO-APIC上的中断引脚称为全局虚拟中断引脚,虚拟OS只有VM给它提供的全局虚拟中断控制器,每个虚拟PCI设备的中断引脚连接在全局虚拟中断控制器上的一个全局虚拟中断引脚上。每个物理节点上的DVMM提供的虚拟中断控制器为局部vIO-APIC,局部vIO-APIC上的中断引脚称为局部虚拟中断引脚,由每个物理节点上的局部虚拟中断控制器来模拟全局虚拟中断引脚,每个虚拟PCI设备的中断引脚连接在 局部虚拟中断控制器上的一个局部虚拟中断引脚。一个物理节点有多个虚拟PCI设备,一个虚拟PCI设备可有多个中断引脚,一个虚拟PCI设备也可连接到局部vIO-APIC上的多个局部虚拟中断引脚。DM模块在为每个物理节点中创建的虚拟PCI设备注册所属PCI总线号和设备号,所有物理节点上的虚拟PCI设备的设备号统一编号,每个物理节点上的局部vIO-APIC上的局部虚拟中断引脚可单独编号。VM向虚拟机操作系统提供的中断结构为,该VM包括的虚拟PCI设备的虚拟中断引脚与全局vIO-APIC上的全局虚拟中断引脚的连接关系。而部署在一个物理节点上的DVMM提供的中断结构为,该物理节点包括的虚拟PCI设备的中断引脚与本物理节点管理的局部vIO-APIC上的局部虚拟中断引脚的连接关系。例如,虚拟化操作系统获知的中断结构中,设备号为Device的虚拟PCI设备的第Intx号中断引脚连接到全局vIO-APIC中第gsi号的全局虚拟中断引脚上;而在设备号为Device的虚拟PCI设备所在的物理节点上保存的中断结构为,设备号为Device的虚拟PCI设备的第Intx号中断引脚连接到局部vIO-APIC中第X号的局部虚拟中断引脚上,也就是,在物理节点上,用局部vIO-APIC中第X号的局部虚拟中断引脚模拟全局vIO-APIC中第gsi号的全局虚拟中断引脚。当虚拟机操作系统要去设置某个全局虚拟中断引脚时,DVMM会截获这个操作,并模拟成在指定的物理节点内设置该全局虚拟中断引脚,所述指定的物理节点为连接到该全局虚拟中断引脚的局部虚拟中断引脚所在物理节点。如图3所示,本实施例提供的方法包括步骤31 :虚拟机的虚拟BIOS模块在ACPI表中建立全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中,所述全局虚拟中断引脚为虚拟中断引脚控制器上的一个或多个中断引脚,所述全局虚拟中断引脚中的任意一个对应于属于同一个物理节点的一个或多个所述虚拟PCI设备的中断引脚;所述虚拟中断引脚控制器是为所述虚拟机的操作系统提供的;分布式虚拟化系统的虚拟BIOS模块可以将所述ACPI写入虚拟机的虚拟内存。将ACPI表写入虚拟内存后,虚拟机操作系统可从内存中获取ACPI表,根据ACPI表可获知哪个全局虚拟中断引脚被连接到哪个虚拟PCI设备上的哪个虚拟中断引脚上。在ACPI表记录的所有连接关系中,任意一个全局虚拟中断引脚连接到同一个物理节点上的一个或多个虚拟PIC设备的中断引脚。也就是说,不同物理节点上的虚拟PCI设备不会连接到一个相同的全局虚拟中断引脚上。因此,实现了同一个全局虚拟中断引脚由一个物理节点上的局部虚拟中断引脚去模拟。例如,将设备号为Device的虚拟PCI设备的第Intx号中断引脚连接到全局vIO-APIC中第gsi号的全局虚拟中断引脚上,在ACPI表上述连接关系可表述为(虚拟PCI设备号Device、中断引脚号Intx、全局虚拟中断引脚号gsi)。如图4所示,全局vIO-APIC的第10号全局虚拟中断引脚连接到NODEl节点上虚拟PCI设备vDEVll的第Intxl号中断引脚和NODEl节点上虚拟PCI设备vDEV12的第Intx3号中断引脚,全局vIO-APIC的第20号全局虚拟中断引脚连接到N0DE2节点上虚拟PCI设备vDEV21的第Intxl号中断引脚和N0DE2节点上虚拟PCI设备vDEV22的第Intxl号中断引脚。从上述连接关系可获知,全局vIO-APIC的第10号全局虚拟中断引脚连接到NODEl节点上的虚拟PCI设备,全局vIO-APIC的第20号全局虚拟中断引脚连接到N0DE2节点上的虚拟PCI设备。
使一个全局虚拟中断引脚连接在同一个物理节点上的虚拟PCI设备上的中断引脚的方法有多种。优选地,虚拟BIOS模块将所有的全局虚拟中断引脚划分为多个互不相交的子集,在映射一个物理节点上的局部虚拟中断引脚时,将同一个物理节点的所有PCI设备的中断引脚映射在一个子集内。因此,在ACPI表中一个物理节点的所有PCI设备的中断引脚连接在一个子集内。例如,0号物理节点上虚拟PCI设备的设备号在(T10之间,I号物理节点上虚拟PCI设备的设备号在If 13之间,2号物理节点上虚拟PCI设备的设备号在iri6之间,. .,7号节点上虚拟PCI设备的设备号为2扩31之间,(TlO号PCI设备的中断针脚(即0号节点的所有PCI设备中断针脚)会直连到16 26号vIO-APIC针脚;1广13号PCI设备的中断针脚(即I号节点的所有PCI设备中断针脚)会直连到27 29号vIO-APIC针脚;2扩31号PCI设备的中断针脚(即7号节点的所有PCI设备中断针脚)会直连到45 47号vIO-APIC针脚。vIO-APIC的(T15号针脚作为特殊用途。如果将所有的全局虚拟中断引脚划分为多个互不相交的子集,将一个物理节点的所有PCI设备的中断引脚对应在一个子集内后,操作系统可一次设置该子集内的所有全局虚拟中断引脚,而不需要分多次设置这些全局虚拟中断引脚,因为模拟这些全局虚拟中断引脚的局部虚拟中断引脚在同一个物理节点上。因而,可提高虚拟机的性能。可选地,虚拟BIOS模块也可以将一个物理节点上的所有虚拟PCI设备的中断引脚都连接到同一个全局虚拟中断引脚,即在ACPI表中一个物理节点上的所有局部虚拟中断引脚对应一个全局虚拟中断引脚。步骤32 :虚拟机的操作系统获取所述ACPI表,根据所述ACPI表,运行为所述ACPI表中的全局虚拟中断引脚设置目标vCPU的指令。虚拟机的操作系统根据APCI表中全局虚拟中断引脚所连接的虚拟PCI设备,确定处理每个全局虚拟中断引脚上中断的目标虚拟中央处理器(Virtual Central ProcessingUnit,简称vCPU)。例如,APCI表中的一个全局中断引脚连接的虚拟PCI设备为虚拟鼠标,虚拟机操作系统将处理该虚拟PCI设备的中断的目标vCPU可以设置为多个vCPU,而APCI表中的另一个全局中断引脚连接的虚拟PCI设备为虚拟硬盘,虚拟机操作系统将处理该虚拟PCI设备的中断的目标vCPU可以设置为一个vCPU。虚拟机操作系统设置处理一个全局虚拟中断引脚上中断的vCPU时,向全局虚拟中断控制器发送设置指令,该设置指令用于设置全局虚拟中断引脚上产生的中断由哪个vCPU来处理。需要说明的是,APCI表中的每一个全局虚拟中断引脚都需要设置目标vCPU,可以是一个个处理,也可以是批处理,以下实施例中,为了便于理解,具体以单次为其中的一个全局虚拟中断引脚设置vCPU为例来说明的,本领域技术人员完全可以理解,以下实施例的每个步骤中,也可以针对APCI表中的全部全局虚拟中断引脚同时进行相同的处理。步骤33 :截获到所述指令的分布式虚拟机监控器,根据分布式中断引脚信息确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点,所述局部虚拟中断引脚位于物理节点上并用于模拟所述全局虚拟中断引脚,所述分布式中断引脚信息包括全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,以及各个物理节点包括的虚拟PCI设备和局部虚拟中断引脚。分布式虚拟化系统的存储系统中可以记录有以下分布式中断引脚信息一种是,每个全局虚拟中断引脚与物理节点上虚拟PCI设备的中断引脚的连接关系,该连接关系与 ACPI表中连接关系相同。另一种是,各个物理节点包括的虚拟PCI设备和局部虚拟中断引脚。分布式中断引脚信息有可能没有存储在截获虚拟机操作系统设置指令的DVMM所属的物理节点,截获虚拟机操作系统设置指令的DVMM可通过DVMM之间相互协作,从其它物理节点获取分布式中断引脚信息。在物理节点中,虚拟PCI设备的中断引脚所连接的局部虚拟中断引脚,在物理节点上模拟该虚拟PCI设备的中断引脚所连接的全局虚拟中断引脚。如图4所示,部署在NODEl节点上DVMM提供的中断结构中,NODEl节点上虚拟PCI设备vDEVll的第Intxl号中断引脚连接在NODEl节点上的局部vIO-APIC的第5号局部虚拟中断引脚,NODEl节点上虚拟PCI设备vDEV12的第Intx3号中断引脚连接在NODEl节点上的局部vIO-APIC的第6号局部虚拟中断引脚。如图4所示,部署在N0DE2节点上DVMM提供的中断结构中,在N0DE2节点上虚拟PCI设备vDEV21的第Intxl号中断引脚连接在N0DE2节点上的局部vIO-APIC的第9号局部虚拟中断引脚,在N0DE2节点上虚拟PCI设备vDEV22的第Intxl号中断引脚连接在N0DE2节点上的局部vIO-APIC的第10号局部虚拟中断引脚。虚拟机操作系统为一个全局虚拟中断引脚设置处理其上产生的中断的目标vCPU时,运行虚拟机操作系统的物理节点上部署的DVMM截获虚拟机操作系统设置全局中断虚拟引脚的设置指令后,根据记录的每个全局虚拟中断引脚与物理节点上虚拟PCI设备的中断引脚的连接关系,确定被设置的全局虚拟中断引脚所对应的虚拟PCI设备的中断引脚。通过记录的每个物理节点包括的虚拟PCI设备和每个物理节点负责的局部虚拟中断引脚,可确定模拟的局部虚拟中断引脚所在的物理节点。步骤34 :所述局部虚拟中断引脚所在的物理节点上的DVMM根据所述指令保存所述局部虚拟中断引脚与所述目标vCPU的对应关系,所述目标vCPU用于处理所述局部虚拟中断引脚上的中断。所述局部虚拟中断引脚所在的物理节点与截获操作系统设置指令的DVMM的本地物理节点为同一物理节点时,截获操作系统设置指令的DVMM保存所述局部虚拟中断引脚与处理所述局部虚拟中断引脚上中断的目标vCPU的对应关系,例如保存在中断处理vCPU表中,处理所述局部虚拟中断引脚上中断的目标vCPU为操作系统的指令中设置的目标VCPU0当连接在所述局部虚拟中断引脚上的虚拟PCI设备的中断引脚上产生中断后,该局部虚拟中断引脚所在物理节点上的DVMM按照保存的中断处理vCPU表可确定由哪个vCPU来处理该局部虚拟中断引脚上的中断。所述局部虚拟中断引脚所在的物理节点与截获操作系统设置指令的DVMM所在的本地物理节点不是同一物理节点时,截获操作系统设置指令的DVMM将设置指令发送给所述局部虚拟中断引脚所在的远端物理节点,由远端物理节点的DVMM保存所述局部虚拟中断引脚与目标vCPU的对应关系,例如保存在中断处理vCPU表中,从而在连接在所述局部虚拟中断引脚上的虚拟PCI设备产生中断后,远端物理节点的DVMM按照保存的中断处理vCPU表可确定由哪个vCPU来处理所述局部虚拟中断引脚上的中断。本实施例提供的方法,虚拟BIOS模块写入ACPI表中的一个全局虚拟中断引脚连接到同一个物理节点上一个或多个虚拟PIC设备的中断引脚上,即一个全局虚拟中断引脚由同一个物理节点上的局部虚拟中断引脚去模拟,由于不同的物理节点的虚拟PCI设备的中断引脚不会连接在同一个全局虚拟中断引脚上,虚拟机操作系统在设置该全局虚拟中断引脚时,不需要向不同的物理节点发送用于同步设置的数据包,提高了分布式虚拟化系统 的性能。进一步,如果步骤35中所述局部虚拟中断引脚所在物理节点的DVMM,根据操作系统的指令确定处理所述局部虚拟中断引脚上中断的目标vCPU是远端物理节点上的vCPU,该局部虚拟中断引脚所在物理节点的DVMM接收到该局部虚拟中断引脚上的中断后,根据保存的中断处理vCPU表,要将该中断传递到远端物理节点的目标vCPU来处理,导致处理时间较长,这种非本地化处理中断的方式会对虚拟机的性能产生较大的影响。为避免中断由非本地vCPU处理的现象,本发明实施例还提供了以下方法实现中断本地化处理如图5所示,步骤34可以包括步骤340 :局部虚拟中断引脚所在物理节点的DVMM,根据所述指令确定目标vCPU所在物理节点是否为本地物理节点。若是执行步骤341,否则执行步骤342。步骤341 :保存局部虚拟中断引脚与所述指令中目标vCPU的对应关系。步骤342 :如果本地物理节点上包括一个以上的vCPU,将设置指令中的目标vCPU修改为本地物理节点上的vCPU,保存局部虚拟中断引脚与修改后目标vCPU的对应关系。如果局部虚拟中断引脚所在物理节点的DVMM,根据设置指令判断处理被设置的全局中断引脚上产生的中断的目标vCPU所在物理节点不是本地物理节点,而且本地物理节点包括多个vCPU,可根据本地vCPU的负载状况,将设置指令中处理被设置的全局中断引脚上产生的中断的目标vCPU修改为本地物理节点上的vCPU。模拟该全局虚拟中断引脚的局部虚拟中断引脚上产生中断后,本地DVMM将该中断传递给本地物理节点上的vCPU来处理,不需要将该中断传递到远端物理节点来处理,减轻了节点间的通讯压力,降低了中断对虚拟机性能的影响,提高了中断过程中虚拟机的性能。图6为本发明实施例提供的又一种分布式虚拟化系统的虚拟中断引脚管理方法流程图。本实施例为对图5对应实施例进一步细化后的实施例。如图6所示,本实施例提供的方法包括步骤60 :虚拟机的虚拟BIOS模块在ACPI表中建立全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中,所述全局虚拟中断引脚为虚拟中断引脚控制器上的一个或多个中断引脚,所述全局虚拟中断引脚中的任意一个对应于属于同一个物理节点的一个或多个所述虚拟PCI设备的中断引脚;所述虚拟中断引脚控制器是为所述虚拟机的操作系统提供的;步骤61 :虚拟机的操作系统获取所述ACPI表,根据所述ACPI表,运行为所述ACPI表中的全局虚拟中断引脚设置目标vCPU的指令。步骤62 :截获所述指令的DVMM根据分布式虚拟中断信息,确定所述模拟被设置的全局虚拟中断引脚的局部虚拟中断引脚。步骤63 :截获所述指令的DVMM根据分布式虚拟中断信息,确定所述局部虚拟中断弓I脚所在的物理节点是否为该DVMM所在的本地物理节点。若所述局部虚拟中断引脚所在的物理节点为本地物理节点,截获操作系统指令的DVMM执行步骤641、步骤642和步骤643,否则截获操作系统指令的DVMM执行步骤65。 步骤641 :根据所述指令判断处理被设置的全局中断引脚上产生的中断的目标vCPU所在物理节点是否为本地物理节点。若是执行步骤642,否则执行步骤643。步骤642 :处理被设置的全局中断引脚上产生的中断的目标vCPU所在物理节点是本地物理节点,根据设置指令保存所述局部虚拟中断引脚与目标vCPU的对应关系。步骤643 :处理被设置的全局中断引脚上产生的中断的目标vCPU所在物理节点不是本地物理节点且本地物理节点上包括一个以上的vCPU,将处理被设置的全局中断引脚上产生的中断的目标vCPU修改为本地物理节点上的目标vCPU,保存所述局部虚拟中断引脚与修改后目标vCPU的对应关系。步骤65 :截获所述指令的DVMM将所述指令发送给所述局部虚拟中断引脚所在的远端物理节点。接收到指令的远端物理节点执行步骤641、步骤642和步骤643。图7为本发明实施例提供的一种分布式虚拟化系统的虚拟中断管理装置结构示意图。如图7所示,该装置包括虚拟机和多个部署在不同物理节点上的分布式虚拟机监控器。其中,虚拟机包括虚拟BIOS模块70和操作系统71,分布式虚拟机监控器可以是第一分布式虚拟机监控器72和第二分布式虚拟机监控器73。所述虚拟BIOS模块70,用于在ACPI表中建立虚拟机上全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中所述全局虚拟中断引脚中的任意一个对应于属于同一个所述物理节点的一个或多个所述虚拟PCI设备的中断引脚。虚拟BIOS模块70可以将所述ACPI表写入虚拟机的虚拟内存。优选地,所述虚拟BIOS模块具体用于将所述全局虚拟中断引脚划分为多个互不相交的子集,建立所述全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中,属于同一个所述物理节点的所有虚拟PCI设备的中断引脚连接在同一个所述子集内。或者,所述虚拟BIOS模块具体用于建立所述全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中同一个物理节点上的所有虚拟PCI设备中断引脚对应在同一个全局虚拟中断引脚。操作系统71,用于获取所述ACPI表,根据所述ACPI表,运行为所述ACPI表中的全局虚拟中断引脚设置目标vCPU的指令。所述多个分布式虚拟机监控器中的第一分布式虚拟机监控器72,用于截获所述操作系统设置目标vCPU的指令,根据分布式中断引脚信息确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点,所述局部虚拟中断引脚位于所述物理节点上并用于模拟所述全局虚拟中断引脚,所述分布式中断引脚信息包括所述虚拟机上全局虚拟中断引脚与物理节点上虚拟PCI设备的中断引脚的连接关系,以及各个物理节点包括的虚拟PCI设备以及所述各个物理节点负责的局部虚拟中断引脚。进一步,第一分布式虚拟机监控器72,还用于确定所述局部虚拟中断引脚所在的物理节点不是本地物理节点时,将所述指令发送给所述局部虚拟中断引脚所在物理节点上的分布式虚拟机监控器。所述多个分布式虚拟机监控器中的第二分布式虚拟机监控器73,用于根据所述指令保存所述局部虚拟中断引脚与所述目标vCPU的对应关系,所述第二分布式虚拟机监控器为所述局部虚拟中断引脚所在的物理节点上的分布式虚拟机监控器。进一步,第二分布式虚拟机监控器73,还用于连接在所述局部虚拟中断引脚上的虚拟PCI设备的中断引脚上产生中断后,根据所在物理节点保存的所述局部虚拟中断引脚与处理所述局部虚拟中断引脚上中断的目标vCPU的对应关系,将所述局部虚拟中断引脚上中断传递到目标vCPU。 本实施例提供的装置中,虚拟BIOS模块写入虚拟内存的ACPI表中的同一个全局虚拟中断引脚对应到同一个物理节点上的局部虚拟中断引脚,即一个全局虚拟中断引脚由同一个物理节点上的局部虚拟中断引脚去模拟,因而,操作系统在设置该全局虚拟中断引脚时,不需要向不同的节点发送同步设置的数据包,提高了分布式虚拟化系统的性能。为避免中断非本地处理的现象,即避免本地中断引脚上产生的中断由远端的物理节点上的vCPU来处理的现象,第二分布式虚拟机监控器还具有以下功能所述第二分布式虚拟机监控器73,还用于当根据所述指令确定所述目标vCPU所在物理节点是本地物理节点时,保存所述局部虚拟中断引脚与所述局部虚拟中断引脚上中断的目标vCPU的对应关系。其中,处理所述局部虚拟中断引脚上中断的目标vCPU为操作系统的指令中的vCPU。所述第二分布式虚拟机监控器73,还用于当根据所述指令确定所述目标vCPU所在物理节点不是本地物理节点且所述本地物理节点包括一个以上的vCPU时,将所述指令中所述目标vCPU修改为所述本地物理节点上的一个vCPU,保存局部虚拟中断引脚与修改后所述目标vCPU的对应关系。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种分布式虚拟化系统的虚拟中断管理方法,其特征在于,包括 虚拟机的虚拟BIOS模块在高级配置和电源管理接口 ACPI表中建立全局虚拟中断引脚与虚拟外围设备互联PCI设备的中断引脚的连接关系,其中,所述全局虚拟中断引脚为虚拟中断引脚控制器上的一个或多个中断引脚,所述全局虚拟中断引脚中的任意一个对应于属于同一个物理节点的一个或多个所述虚拟PCI设备的中断引脚;所述虚拟中断引脚控制器是为所述虚拟机的操作系统提供的; 所述虚拟机的操作系统获取所述ACPI表,根据所述ACPI表,运行为所述ACPI表中的全局虚拟中断引脚设置目标虚拟中央处理单元vCPU的指令; 截获到所述指令的分布式虚拟机监控器,根据分布式中断引脚信息确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点,所述局部虚拟中断引脚位于物理节点上并用于模拟所述全局虚拟中断引脚,所述分布式中断引脚信息包括全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,以及各个物理节点包括的虚拟PCI设备和局部虚拟中断引脚; 所述局部虚拟中断引脚所在的物理节点上的分布式虚拟机监控器,根据所述指令保存所述局部虚拟中断引脚与所述目标VCPU的对应关系,其中,所述目标VCPU用于处理所述局部虚拟中断引脚上的中断。
2.根据权利要求I所述的方法,其特征在于,所述局部虚拟中断引脚所在的物理节点上的分布式虚拟机监控器,根据所述指令保存所述局部虚拟中断引脚与所述目标vCPU的对应关系包括 若所述截获到所述指令的分布式虚拟机监控器确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点为自身所在的物理节点,则所述截获到所述指令的分布式虚拟机监控器,根据所述指令确定所述目标vCPU所在物理节点是本地物理节点时,保存所述局部虚拟中断引脚与所述目标vCPU的对应关系。
3.根据权利要求I或2所述的方法,其特征在于,所述局部虚拟中断引脚所在的物理节点上的分布式虚拟机监控器,根据所述指令保存所述局部虚拟中断引脚与所述目标vCPU的对应关系包括 若所述截获到所述指令的分布式虚拟机监控器确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点不是自身所在的物理节点,则所述截获到所述指令的分布式虚拟机监控器通知所述局部虚拟中断引脚所在的物理节点上的分布式虚拟机监控器设置所述指令,所述局部虚拟中断引脚所在的物理节点的分布式虚拟机监控器,根据所述指令确定所述目标vCPU所在物理节点不是本地物理节点且所述本地物理节点包括一个以上的vCPU时,将所述指令中的所述目标vCPU修改为所述本地物理节点上的一个vCPU,保存所述局部虚拟中断引脚与修改后所述目标vCPU的对应关系。
4.根据权利要求1、2或3所述的方法,其特征在于,所述建立全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,具体为 将所述全局虚拟中断引脚划分为多个互不相交的子集,建立所述全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中,属于同一个物理机的所述虚拟PCI设备的中断引脚连接在同一个所述子集内。
5.根据权利要求1、2或3所述的方法,其特征在于,所述ACPI表中,同一个物理节点上的所述所有虚拟PCI设备的中断引脚连接到一个所述全局虚拟中断引脚。
6.根据权利要求I至5任一项所述的方法,其特征在于,还包括 连接在所述局部虚拟中断引脚上的虚拟PCI设备的中断引脚上产生中断后,所述局部虚拟中断引脚所在物理节点上的分布式虚拟机监控器,根据所在的物理节点保存的所述局部虚拟中断引脚与处理所述局部虚拟中断引脚上中断的所述目标VCPU的对应关系,将所述局部虚拟中断引脚上的中断传递到所述目标vCPU。
7.一种分布式虚拟化系统的虚拟中断管理装置,包括虚拟机和多个部署在不同物理节点上的分布式虚拟机监控器。其特征在于 所述虚拟机,包括虚拟BIOS模块和操作系统; 所述虚拟BIOS模块,用于在ACPI表中建立所述虚拟机上全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中所述全局虚拟中断引脚中的任意一个对应于属于同一个所述物理节点的一个或多个所述虚拟PCI设备的中断引脚; 所述操作系统,用于获取所述ACPI表,根据所述ACPI表,运行为所述ACPI表中的全局虚拟中断引脚设置目标vCPU的指令;所述多个分布式虚拟机监控器中的第一分布式虚拟机监控器,用于截获所述操作系统设置目标vCPU的指令,根据分布式中断引脚信息确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点,所述局部虚拟中断引脚位于所述物理节点上并用于模拟所述全局虚拟中断引脚,所述分布式中断引脚信息包括全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,以及各个物理节点包括的虚拟PCI设备以及所述各个物理节点负责的局部虚拟中断引脚; 所述多个分布式虚拟机监控器中的第二分布式虚拟机监控器,用于根据所述指令保存所述局部虚拟中断引脚与所述目标VCPU的对应关系,所述第二分布式虚拟机监控器为所述局部虚拟中断引脚所在的物理节点上的分布式虚拟机监控器。
8.根据权利要求7所述的装置,其特征在于 所述第二分布式虚拟机监控器,还用于当根据所述指令确定所述目标vCPU所在物理节点是本地物理节点时,保存所述局部虚拟中断引脚与所述目标vCPU的对应关系; 所述第二分布式虚拟机监控器,还用于当根据所述指令确定所述目标vCPU所在物理节点不是本地物理节点且所述本地物理节点包括一个以上的vCPU时,将所述指令中的所述所述目标vCPU修改为所述本地物理节点上的一个vCPU,保存所述局部虚拟中断引脚与修改后所述目标vCPU的对应关系。
9.根据权利要求8所述的装置,其特征在于 所述第一分布式虚拟机监控器,还用于当确定所述局部虚拟中断引脚所在的物理节点不是本地物理节点时,将所述指令发送给所述局部虚拟中断引脚所在物理节点上的分布式虚拟机监控器。
10.根据权利要求7、8或9所述的装置,其特征在于,所述虚拟BIOS模块具体用于将所述全局虚拟中断引脚划分为多个互不相交的子集,建立所述全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中,属于同一个所述物理机的所有虚拟PCI设备的中断引脚连接在同一个所述子集内。
11.根据权利要求7、8或9所述的装置,其特征在于,所述虚拟BIOS模块具体用于建立所述全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,其中同一个物理节点上的所有虚拟PCI设备的中断引脚连接到同一个所述全局虚拟中断引脚。
12.根据权利要求7至11任一项所述的装置,其特征在于,所述第二分布式虚拟机监控器,用于连接在所述局部虚拟中断引脚上的虚拟PCI设备的中断引脚上产生中断后,根据所在的物理节点保存的所述局部虚拟中断引脚与处理所述局部虚拟中断引脚上中断的目标vCPU的对应关系,将所述局部虚拟中断引脚上的中断传递到目标vCPU。
全文摘要
本发明提供一种分布式虚拟化系统的虚拟中断管理方法及装置,该方法包括虚拟BIOS模块在ACPI表中建立全局虚拟中断引脚与虚拟PCI设备的中断引脚的连接关系,所述全局虚拟中断引脚中的任意一个对应于属于同一个物理节点上的一个或多个虚拟PCI设备的中断引脚;所述虚拟机的操作系统获取所述ACPI表,并根据ACPI表运行为所述ACPI表中的全局虚拟中断引脚设置目标vCPU的指令;截获到所述指令的分布式虚拟机监控器,根据分布式中断引脚信息确定所述全局虚拟中断引脚对应的局部虚拟中断引脚所在的物理节点,根据指令保存该局部虚拟中断引脚与所述目标vCPU的对应关系,其中,所述目标vCPU用于处理所述局部虚拟中断引脚上的中断。
文档编号G06F9/48GK102799465SQ20121022302
公开日2012年11月28日 申请日期2012年6月30日 优先权日2012年6月30日
发明者王海波 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1