專利名稱:分布式虛擬化系統的虛擬中斷管理方法及裝置的制作方法
技術領域:
本發明實施例涉及計算機技術,尤其涉及一種分布式虛擬化系統的虛擬中斷管理方法及裝置。
背景技術:
如圖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日
發明者王海波 申請人:華為技術有限公司