專利名稱:一種虛擬化下的中斷動態(tài)分發(fā)方法
技術領域:
本發(fā)明屬于虛擬化領域,更具體地,涉及一種虛擬化下的中斷動態(tài)分發(fā)方法。
背景技術:
虛擬化技術是云計算技術的基礎,I/O虛擬化的性能將直接影響虛擬化技術的發(fā)展,特別是網絡I/o的虛擬化性能。在服務器虛擬化領域,高速網絡設備(如千兆以太網卡等)短時間內會帶來內大量的中斷請求;因此高效的中斷虛擬化技術就顯得更加重要了。在X86平臺的SMP架構中,外設的中斷線連接到一個名為I/O高級可編程中斷控制器(Input/OutputAdvanced Programmable Interrupt Controller,簡稱 I/O APIC)上。此外,X86微處理器當前所有CPU都含有一個本地高級可編程中斷控制器(Advanced ProgrammableInterrupt Controller,簡稱APIC)。每個本地APIC都有32位的寄存器、一個內部時鐘、一個本地定時設備及為本地APIC保留的兩條額外的IRQ線LINTO和LINTl。所有的本地APIC都連接到一個外部1/0 APIC,形成一個多APIC的系統(tǒng)。1/0 APIC其中最重要的是中斷重定向表,表中的信息負責將每個外部IRQ轉化成一條消息并通過APIC總線發(fā)送給一個或者多個APIC單元。因此,在非虛擬化的情況下,外設的IRQ由1/0 APIC負責分發(fā)。如圖1所示,在引入了虛擬化技術后,由于CPU虛擬化增加了虛擬微處理器,中斷的處理響應的增加了虛擬中斷層。但目前的中斷虛擬化技術沒有完全對I/O APIC多APIC系統(tǒng)進行虛擬化,導致了虛擬化中斷都只能簡單的進行靜態(tài)分發(fā),默認都是分發(fā)給第一個虛擬微處理器,而不能進行動態(tài)分發(fā)。具體來說,就是虛擬機管理器只能將所有的物理中斷發(fā)送給驅動域的第一個虛擬微處理器,即所有的物理中斷請求都需要由驅動域的第一個微處理器來處理;虛擬域只能將所有的域間中斷都發(fā)送給其他域的第一個虛擬微處理器,即所有的域間中斷請求都需要由虛擬域的第一個微處理器來處理。然而,現有的虛擬化下的中斷分發(fā)方法存在以下問題1、中斷請求集中在第一個微處理器上,造成中斷分發(fā)在多核虛擬域的負載不均衡;2、虛擬1/0的服務延遲增大,由于中斷請求在單一微處理器上排隊,排隊的延遲比非虛擬化下的增大,造成1/0的服務延遲增大;3、分離驅動模型的中斷請求不能并發(fā)處理,即域間中斷只能在驅動域的第一個虛擬微處理器和其他域的第一個微處理器之間發(fā)送,沒有充分利用虛擬域的多核特性,從而造成了分離驅動模型的1/0性能下降。
發(fā)明內容
針對現有技術的缺陷,本發(fā)明的目的在于提供一種虛擬化下的中斷動態(tài)分發(fā)方法,旨在解決現有方法中存在的中斷請求負載不均衡、中斷請求延遲和分離驅動模型的并發(fā)處理的問題。為實現上述目的,本發(fā)明提供了一種虛擬化下的中斷動態(tài)分發(fā)方法,包括以下步驟( I)虛擬機管理器對其虛擬高級可編程中斷處理器進行初始化,并且虛擬域對其本地可高級編程中斷控制器進行初始化;(2)虛擬機管理器接收來自于外設的物理中斷請求;(3)虛擬機管理器根據物理中斷請求判斷其分發(fā)方式是靜態(tài)分發(fā)方式,還是動態(tài)分發(fā)方式,如果是靜態(tài)分發(fā)方式,則進入步驟(5),如果是動態(tài)分發(fā)方式,則進入步驟(4);(4)虛擬機管理器檢查驅動域中虛擬微處理器的配置,并根據配置確定目的虛擬微處理器,然后進入步驟(6);(5)虛擬機管理器根據物理中斷請求確定目的虛擬微處理器;(6)虛擬機管理器通過目的虛擬微處理器的事件通道將物理中斷請求發(fā)送到該目的虛擬微處理器;(7)驅動域根據物理中斷請求生成對應的域間中斷請求;(8)驅動域根據域間中斷請求判斷其分發(fā)方式是靜態(tài)分發(fā)方式,還是動態(tài)分發(fā)方式;如果是靜態(tài)分發(fā)方式,則進入步驟(10),如果是動態(tài)分發(fā)方式,則進入步驟(9);(9)驅動域檢查其他域中虛擬微處理器的配置,并根據配置確定目的虛擬微處理器,然后進入步驟(11);( 10)驅動域根據域間中斷請求確定目的虛擬微處理器;( 11)驅動域通過目的虛擬微處理器的事件通道將域間中斷請求發(fā)送到該目的虛擬微處理器。在步驟(I)中,虛擬機管理器將虛擬I/O APIC的分發(fā)方式設置為動態(tài)分發(fā)方式,并且虛擬域設置本地PIC中的優(yōu)先級和仲裁優(yōu)先級。虛擬域包括驅動域和其他域,外設包括外部存儲器、網絡設備,物理中斷請求包括物理請求編號、物理請求地址。步驟(3)中,虛擬機管理器是根據物理中斷請求中的物理請求編號及虛擬機管理器中的配置文件來判斷分發(fā)方式的類型。其他域和虛擬微處理器的配置均包括其優(yōu)先級和仲裁優(yōu)先級。步驟(7)中,通過驅動域中的后端驅動產生域間中斷請求包括有域間中斷請求的編號和地址等信息。步驟(8)中,驅動域是根據域間中斷請求中的域間中斷請求編號及驅動域中的配置文件來判斷分發(fā)方式的類型。步驟(5)包括以下子步驟(5-1)虛擬機管理器中的虛擬I/O APIC判斷在驅動域中查找到的優(yōu)先級最低的虛擬微處理器的數量是I個還是多個,如果是I個,則進入步驟(5-5),如果是多個,則進入步驟(5-2);(5-2)虛擬I/O APIC確定本地APIC的仲裁優(yōu)先級中最低的一個仲裁優(yōu)先級所對應的虛擬微處理器;(5-3)虛擬I/O APIC將該虛擬微處理器對應的本地APIC的仲裁優(yōu)先級設置為0,將其他虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加I ;(5-4)虛擬I/O APIC判斷所有虛擬微處理器對應的本地APIC的仲裁優(yōu)先級是否有大于15的,如果有,則將步驟(5-2)中確定的虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加1,過程結束;否則過程結束;(5-5)虛擬I/O APIC將物理中斷請求發(fā)送到該虛擬微處理器。步驟(10)包括以下子步驟( 10-1)驅動域中的虛擬I/O APIC判斷在其他域中查找到的優(yōu)先級最低的虛擬微處理器的數量是I個還是多個,如果是I個,則進入步驟(10-5),如果是多個,則進入步驟(10-2);(10-2)虛擬I/O APIC確定本地APIC的仲裁優(yōu)先級中最低的一個仲裁優(yōu)先級所對應的虛擬微處理器;(10-3)虛擬I/O APIC將該虛擬微處理器對應的本地APIC的仲裁優(yōu)先級設置為0,將其他虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加I ;(10-4)虛擬I/O APIC判斷所有虛擬微處理器對應的本地APIC的仲裁優(yōu)先級是否有大于15的,如果有,則將步驟(5-2)中確定的虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加1,過程結束;否則過程結束;(10-5)虛擬I/O APIC將域間中斷請求發(fā)送到該虛擬微處理器。通過本發(fā)明所構思的以上技術方案,與現有技術相比,本發(fā)明具有以下的有益效果1、能實現負載均衡由于采用了步驟(I)、(5-1)、(5-4)、(10-1)和(10-4),從而使得所有的虛擬微處理器都可以參數響應和處理物理中斷請求和域間中斷請求,即中斷請求被均衡到所有的虛擬處理器上,中斷請求本均衡的分布在各個虛擬微處理器上;2、減小了虛擬I/O的服務延遲由于采用了步驟(5-2)、(5-4)、(10-2)和(10-4),物理中斷請求和域間中斷請求隊列從單一隊列增加到每個微處理器都有一個隊列,從而使得虛擬I/O的中斷請求的服務延遲減??;3、增加了分離驅動模型中的中斷請求處理的并發(fā)度由于采用了步驟(10-2)、(10-3)和(10-4),域間中斷請求可以再驅動域和其他域的所有虛擬微處理器之間傳遞,而不是單一地從驅動域的第一個微處理器和其他域的第一個微處理器之間傳遞,充分利用的虛擬域的多核特性,增加了分離驅動模型的中斷請求處理的并發(fā)度。
圖1為現有的虛擬化下中斷分發(fā)方法的框架圖。圖2為本發(fā)明虛擬化下的中斷動態(tài)分發(fā)方法的框架圖。圖3為本發(fā)明虛擬化下的中斷動態(tài)分發(fā)方法的流程圖。圖4為本發(fā)明方法中步驟(5)的細化流程圖。圖5為本發(fā)明方法中步驟(10)的細化流程圖。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
首先對本發(fā)明種的技術術語進行解釋和定義高級可編程中斷控制器英文為I/O APIC,安裝在微機主板上的可編程組件,負責將外部中斷請求轉發(fā)給微處理器的內部中斷控制器。事件通道英文為Event Channel,虛擬機管理器與虛擬機以及虛擬機與虛擬機之間的異步通信方法。驅動域英文為Driver Domain,在半虛擬化模型中用于管理設備的虛擬機,具有操作相關設備的特權,驅動域包含設備的驅動程序和設備的后端驅動程序。物理中斷英文縮寫為pIRQ,是一類由虛擬機管理器發(fā)送給驅動域的虛擬中斷請求,這類中斷請求模擬實現真實外設發(fā)送的中斷請求。域間中斷英文縮寫為Inter-domain IRQ,是一類在虛擬域與虛擬域之間發(fā)送的虛擬中斷請求,這類中斷請求傳遞分離驅動模型中斷額中斷請求。下面結合附圖對本發(fā)明進一步作詳細的說明。如圖3所示,本發(fā)明虛擬化下的中斷動態(tài)分發(fā)方法包括以下步驟( I)虛擬機管理器對其虛擬高級可編程中斷處理器進行初始化,并且虛擬域對其本地可高級編程中斷控制器進行初始化;虛擬域包括有驅動域和其他域,具體而言,虛擬機管理器將虛擬I/O APIC的分發(fā)方式設置為動態(tài)分發(fā)方式,并且虛擬域設置本地PIC中的優(yōu)先級和仲裁優(yōu)先級;(2)虛擬機管理器接收來自于外設的物理中斷請求;在本實施方式中,外設包括外部存儲器、網絡設備等,物理中斷請求包括物理請求編號、物理請求地址等信息;(3)虛擬機管理器根據物理中斷請求判斷其分發(fā)方式是靜態(tài)分發(fā)方式,還是動態(tài)分發(fā)方式,如果是靜態(tài)分發(fā)方式,則進入步驟(5),如果是動態(tài)分發(fā)方式,則進入步驟(4);具體而言,虛擬機管理器是根據物理中斷請求中的物理請求編號及虛擬機管理器中的配置文件來判斷分發(fā)方式的類型;(4)虛擬機管理器檢查驅動域中虛擬微處理器的配置,并根據配置確定目的虛擬微處理器;虛擬微處理器的配置包括其優(yōu)先級和仲裁優(yōu)先級,然后進入步驟(6);(5)虛擬機管理器根據物理中斷請求確定目的虛擬微處理器;(6)虛擬機管理器通過目的虛擬微處理器的事件通道將物理中斷請求發(fā)送到該目的虛擬微處理器;(7)驅動域根據物理中斷請求生成對應的域間中斷請求;具體而言,通過驅動域中的后端驅動產生域間中斷請求包括有域間中斷請求的編號和地址等信息;(8)驅動域根據域間中斷請求判斷其分發(fā)方式是靜態(tài)分發(fā)方式,還是動態(tài)分發(fā)方式;如果是靜態(tài)分發(fā)方式,則進入步驟(10),如果是動態(tài)分發(fā)方式,則進入步驟(9);具體而言,驅動域是根據域間中斷請求中的域間中斷請求編號及驅動域中的配置文件來判斷分發(fā)方式的類型;(9)驅動域檢查其他域中虛擬微處理器的配置,并根據配置確定目的虛擬微處理器;其他域的配置包括其優(yōu)先級和仲裁優(yōu)先級,然后進入步驟(11);( 10)驅動域根據域間中斷請求確定目的虛擬微處理器;( 11)驅動域通過目的虛擬微處理器的事件通道將域間中斷請求發(fā)送到該目的虛擬微處理器。
如圖4所示,本發(fā)明方法中的步驟(5)包括以下子步驟(5-1)虛擬機管理器中的虛擬I/O APIC判斷在驅動域中查找到的優(yōu)先級最低的虛擬微處理器的數量是I個還是多個,如果是I個,則進入步驟(5-5),如果是多個,則進入步驟(5-2);具體而言,虛擬I/O APIC通過讀取本地APIC中的優(yōu)先級來獲取優(yōu)先級最低的虛擬微處理器的數量;(5-2)虛擬I/O APIC確定本地APIC的仲裁優(yōu)先級中最低的一個仲裁優(yōu)先級所對應的虛擬微處理器;(5-3)虛擬I/O APIC將該虛擬微處理器對應的本地APIC的仲裁優(yōu)先級設置為0,將其他虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加I ;(5-4)虛擬I/O APIC判斷所有虛擬微處理器對應的本地APIC的仲裁優(yōu)先級是否有大于15的,如果有,則將步驟(5-2)中確定的虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加1,過程結束;否則過程結束;(5-5)虛擬I/O APIC將物理中斷請求發(fā)送到該虛擬微處理器。如圖5所示,本發(fā)明方法中的步驟(10)包括以下子步驟(10-1)驅動域中的虛擬I/O APIC判斷在其他域中查找到的優(yōu)先級最低的虛擬微處理器的數量是I個還是多個,如果是I個,則進入步驟(10-5),如果是多個,則進入步驟(10-2);具體而言,虛擬I/O APIC通過讀取本地APIC中的優(yōu)先級來獲取優(yōu)先級最低的虛擬微處理器的數量;(10-2)虛擬I/O APIC確定本地APIC的仲裁優(yōu)先級中最低的一個仲裁優(yōu)先級所對應的虛擬微處理器;(10-3)虛擬I/O APIC將該虛擬微處理器對應的本地APIC的仲裁優(yōu)先級設置為0,將其他虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加I ;(10-4)虛擬I/O APIC判斷所有虛擬微處理器對應的本地APIC的仲裁優(yōu)先級是否有大于15的,如果有,則將步驟(5-2)中確定的虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加1,過程結束;否則過程結束;(10-5)虛擬I/O APIC將域間中斷請求發(fā)送到該虛擬微處理器。如圖2所示,在本發(fā)明中提出的方法中,物理中斷請求以輪轉的方式在驅動域所有可用的虛擬微處理器之間進行分發(fā),域間中斷請求以輪轉的方式在虛擬域所有可用虛擬微處理器之間進行分發(fā)。通過圖1和圖2的對比,可以知道本發(fā)明提出了虛擬化下的中斷請求(包括物理中斷請求和域間中斷請求)的分發(fā)方法以靜態(tài)分發(fā)或者動態(tài)分發(fā)的方式在可用虛擬微處理器之間分發(fā),而不是單一分發(fā)給第一個虛擬微處理器。本發(fā)明提出的分發(fā)方法解決了虛擬化下的中斷負載均衡問題;有效地解決了物理CPU的負載均衡問題,特別是在虛擬微處理器直接綁定到物理CPU的情況下的物理CPU負載不均衡情況;最后達到改善多核服務器下的I/o虛擬化性能。本領域的技術人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種虛擬化下的中斷動態(tài)分發(fā)方法,其特征在于,包括以下步驟 (1)虛擬機管理器對其虛擬高級可編程中斷處理器進行初始化,并且虛擬域對其本地可高級編程中斷控制器進行初始化; (2)虛擬機管理器接收來自于外設的物理中斷請求; (3)虛擬機管理器根據物理中斷請求判斷其分發(fā)方式是靜態(tài)分發(fā)方式,還是動態(tài)分發(fā)方式,如果是靜態(tài)分發(fā)方式,則進入步驟(5),如果是動態(tài)分發(fā)方式,則進入步驟(4); (4)虛擬機管理器檢查驅動域中虛擬微處理器的配置,并根據配置確定目的虛擬微處理器,然后進入步驟(6); (5)虛擬機管理器根據物理中斷請求確定目的虛擬微處理器; (6)虛擬機管理器通過目的虛擬微處理器的事件通道將物理中斷請求發(fā)送到該目的虛擬微處理器; (7)驅動域根據物理中斷請求生成對應的域間中斷請求; (8)驅動域根據域間中斷請求判斷其分發(fā)方式是靜態(tài)分發(fā)方式,還是動態(tài)分發(fā)方式;如果是靜態(tài)分發(fā)方式,則進入步驟(10),如果是動態(tài)分發(fā)方式,則進入步驟(9); (9)驅動域檢查其他域中虛擬微處理器的配置,并根據配置確定目的虛擬微處理器,然后進入步驟(11); (10)驅動域根據域間中斷請求確定目的虛擬微處理器; (11)驅動域通過目的虛擬微處理器的事件通道將域間中斷請求發(fā)送到該目的虛擬微處理器。
2.根據權利要求1所述的中斷動態(tài)分發(fā)方法,其特征在于,在步驟(I)中,虛擬機管理器將虛擬I/O APIC的分發(fā)方式設置為動態(tài)分發(fā)方式,并且虛擬域設置本地PIC中的優(yōu)先級和仲裁優(yōu)先級。
3.根據權利要求1所述的中斷動態(tài)分發(fā)方法,其特征在于, 虛擬域包括驅動域和其他域; 外設包括外部存儲器、網絡設備; 物理中斷請求包括物理請求編號、物理請求地址。
4.根據權利要求1所述的中斷動態(tài)分發(fā)方法,其特征在于,步驟(3)中,虛擬機管理器是根據物理中斷請求中的物理請求編號及虛擬機管理器中的配置文件來判斷分發(fā)方式的類型。
5.根據權利要求1所述的中斷動態(tài)分發(fā)方法,其特征在于,其他域和虛擬微處理器的配置均包括其優(yōu)先級和仲裁優(yōu)先級。
6.根據權利要求1所述的中斷動態(tài)分發(fā)方法,其特征在于,步驟(7)中,通過驅動域中的后端驅動產生域間中斷請求包括有域間中斷請求的編號和地址等信息。
7.根據權利要求1所述的中斷動態(tài)分發(fā)方法,其特征在于,步驟(8)中,驅動域是根據域間中斷請求中的域間中斷請求編號及驅動域中的配置文件來判斷分發(fā)方式的類型。
8.根據權利要求1所述的中斷動態(tài)分發(fā)方法,其特征在于,步驟(5)包括以下子步驟 (5-1)虛擬機管理器中的虛擬I/O APIC判斷在驅動域中查找到的優(yōu)先級最低的虛擬微處理器的數量是I個還是多個,如果是I個,則進入步驟(5-5),如果是多個,則進入步驟(5-2);(5-2)虛擬I/O APIC確定本地APIC的仲裁優(yōu)先級中最低的一個仲裁優(yōu)先級所對應的虛擬微處理器; (5-3)虛擬I/O APIC將該虛擬微處理器對應的本地APIC的仲裁優(yōu)先級設置為0,將其他虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加I ; (5-4)虛擬I/O APIC判斷所有虛擬微處理器對應的本地APIC的仲裁優(yōu)先級是否有大于15的,如果有,則將步驟(5-2)中確定的虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加.1,過程結束;否則過程結束; (5-5)虛擬I/O APIC將物理中斷請求發(fā)送到該虛擬微處理器。
9.根據權利要求1所述的中斷動態(tài)分發(fā)方法,其特征在于,步驟(10)包括以下子步驟 (10-1)驅動域中的虛擬I/O APIC判斷在其他域中查找到的優(yōu)先級最低的虛擬微處理器的數量是I個還是多個,如果是I個,則進入步驟(10-5),如果是多個,則進入步驟(10-2); (10-2)虛擬I/O APIC確定本地APIC的仲裁優(yōu)先級中最低的一個仲裁優(yōu)先級所對應的虛擬微處理器; (10-3)虛擬I/O APIC將該虛擬微處理器對應的本地APIC的仲裁優(yōu)先級設置為0,將其他虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加I ; (10-4)虛擬I/O APIC判斷所有虛擬微處理器對應的本地APIC的仲裁優(yōu)先級是否有大于15的,如果有,則將步驟(5-2)中確定的虛擬微處理器對應的本地APIC的仲裁優(yōu)先級加.I,過程結束;否則過程結束; (10-5)虛擬I/O APIC將域間中斷請求發(fā)送到該虛擬微處理器。
全文摘要
本發(fā)明公開了一種虛擬化下的中斷動態(tài)分發(fā)方法,包括虛擬機管理器對其虛擬高級可編程中斷處理器進行初始化,并且虛擬域對其本地可高級編程中斷控制器進行初始化,虛擬機管理器接收來自于外設的物理中斷請求,虛擬機管理器根據物理中斷請求判斷其分發(fā)方式是靜態(tài)分發(fā)方式,還是動態(tài)分發(fā)方式,如果是動態(tài)分發(fā)方式,則虛擬機管理器檢查驅動域中虛擬微處理器的配置,并根據配置確定目的虛擬微處理器,然后虛擬機管理器通過目的虛擬微處理器的事件通道將物理中斷請求發(fā)送到該目的虛擬微處理器,驅動域根據物理中斷請求生成對應的域間中斷請求。本發(fā)明能夠解決現有方法中存在的中斷請求負載不均衡、中斷請求延遲和分離驅動模型的并發(fā)處理的問題。
文檔編號G06F9/445GK103049333SQ20121053745
公開日2013年4月17日 申請日期2012年12月12日 優(yōu)先權日2012年12月12日
發(fā)明者金海 , 邵志遠, 魯志強, 鄭龍 申請人:華中科技大學