TWI547876B - 虛擬環境之中斷處理方法與系統 - Google Patents

虛擬環境之中斷處理方法與系統 Download PDF

Info

Publication number
TWI547876B
TWI547876B TW103137783A TW103137783A TWI547876B TW I547876 B TWI547876 B TW I547876B TW 103137783 A TW103137783 A TW 103137783A TW 103137783 A TW103137783 A TW 103137783A TW I547876 B TWI547876 B TW I547876B
Authority
TW
Taiwan
Prior art keywords
virtual machine
interrupt
virtual
hypervisor
processor cores
Prior art date
Application number
TW103137783A
Other languages
English (en)
Other versions
TW201612749A (en
Inventor
涂政君
闕志克
李肇棠
Original Assignee
財團法人工業技術研究院
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 財團法人工業技術研究院 filed Critical 財團法人工業技術研究院
Publication of TW201612749A publication Critical patent/TW201612749A/zh
Application granted granted Critical
Publication of TWI547876B publication Critical patent/TWI547876B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Description

虛擬環境之中斷處理方法與系統
本案是有關於一種處理虛擬環境之中斷之方法與系統。
虛擬機器(Virtual Machine,VM)是以軟體方式來實現機器(比如電腦),其能像真正機器般執行程式。多個機器會各自執行於其各自作業系統(稱為客戶OS)之上。客戶OS並不需要符合於硬體,故而,可能在同一電腦上執行不同OS,且客戶OS可共享虛擬硬體資源。超級管理程式(hypervisor),也可稱為虛擬機器監控程式(virtual machine monitor,VMM),一般為電腦軟體的一部份,或者亦可為韌體/硬體,其可在虛擬環境中建造與執行虛擬機器。如果超級管理程式在電腦上執行一或多個虛擬機器的話,則此台電腦可稱為主機(host machine)。虛擬機器稱為客戶機。超級管理程式利用虛擬作業平台來呈現客戶OS,且管理客戶OS的執行。
當超級管理程式執行於二處理器核心上的話,則稱此處理器核心處於主機模式(host mode);如果虛擬機器執行於處理器核心上的話,則稱此處理器核心處於客戶模式(guest mode)。 處理器核心會處於客戶模式,直到事件發生,來強迫處理器核心進入主機模式,這類事件比如為,由I/O裝置或計時器(timer)所發出的中斷,或者是其他事件。當轉換成主機模式時,超級管理程式會接手來處理所觸發的事件,將此中斷送至目的虛擬機器的相關中斷處理程式,接著,再次進入客戶模式,以回復虛擬機器的執行。當相關中斷處理程式已經完成處理後,相關中斷處理程式發出用中斷結束(EOI,end of interrupt)信號給硬體,比如但不受限於,相關中斷處理程式可寫入至處理器核心的相關區域中斷控制器的EOI暫存器。甚至,由一處理器核心送至另一處理器核心的中斷也可稱為處理器之間中斷(inter-processor interrupt)。
從客戶模式進入至主機模式可稱為虛擬機器離開(VM exit),而從主機模式進入至客戶模式可稱為虛擬機器進入(VM entry)。虛擬機器離開/進入的性能成本(performance overhead)在於,當執行超級管理程式碼時,花費於儲存與回復內文(context)與處理器快取的相關污染(pollution)。某些現在架構(比如x86伺服架構)規定每個外部中斷會造成虛擬機器離開,或者,外部中斷無法造成虛擬機器離開。此限制造成,如果要依目的虛擬機器是否正在執行而來傳送不同中斷,這件事變得困難。
隨著虛擬化的硬體支援變得愈來愈複雜,因為I/O虛擬化所導致的性能成本也逐漸出現。因而,單根I/O虛擬化(SR-IOV,Single Root I/O Virtualization),多根I/O虛擬化(MR-IOV,Multi-Root I/O Virtualization)與半虛擬化(para-virtualization)的出 現使得虛擬機器能降低DMA相關虛擬化成本。然而,對於經常發生的一般性內文交換而言,比如,在中斷傳送過程中所發生的虛擬機器離開/進入,造成I/O虛擬化性能成本的絕大部份。
只有當超級管理程式與虛擬機器皆執行於同一處理器核心當中時,超級管理程式才能將虛擬中斷注入至虛擬機器。對於仿真(emulate)的虛擬裝置而言,將使得由後端驅動程式送至其相關前端驅動程式的每一中斷都會造成虛擬機器離開,因為這些驅動程式乃是執行於不同處理器核心上。此外,計時器中斷的離開機制亦會對超級管理程式造成虛擬機器離開。
為降低虛擬機器離開的數量,某些硬體製造商致力於中斷控制器的硬體虛擬支援。目前研究已提出二進位重寫(binary rewriting)技術,以降低虛擬機器離開的數量。此機制動態地將虛擬機器碼給以最佳化,藉由辨別出會造成連續虛擬機器離開的指令對,並動態地將客戶碼轉譯成可能造成較少虛擬機器離開的變化型態。另一研究則是藉由預先分配各資源與對客戶進行半虛擬化來降低虛擬機器離開。此外,尚有另一機制乃是設定既定系統呼叫,以根據各種資料結構的設定來進入即時模式操作,以降低虛擬機器離開。
本案實施例提供虛擬環境之中斷處理方法與系統,其能操作於具有一或多處理器核心之電腦上。
根據本案一實施例,提出一種虛擬環境之中斷處理 方法,可運作於具有一或多處理器()核心之一電腦上。該中斷處理方法包括:透過該虛擬環境之一超級管理程式,將目的為一虛擬機器之一中斷所觸發的一虛擬機器離開給予失能;以及當該目的虛擬機器正在執行於該一或多處理器核心之一上時,將由一輸出入虛擬裝置及/或一虛擬裝置所發出的一或多中斷直接送至該目的虛擬機器,否則,將該一或多中斷送至該超級管理程式,以將該一或多中斷送至該目的虛擬機器。
根據本案另一實施例,提出一種虛擬環境之中斷處理系統,可運作於具有一或多處理器核心之一電腦上。該中斷處理系統包括:一超級管理程式,將目的為一虛擬機器之一中斷所觸發的一虛擬機器離開給予失能;以及一輸出入虛擬(IOV)裝置及一虛擬裝置,當該目的虛擬機器正在執行於該一或多處理器核心之一上時,該系統將由一輸出入虛擬裝置及/或一虛擬裝置所發出的一或多中斷直接送至該目的虛擬機器,否則,將該一或多中斷送至該超級管理程式,以將該一或多中斷送至該目的虛擬機器。
為了對本案之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式,作詳細說明如下:
110~130‧‧‧步驟
131~135‧‧‧步驟
410~413‧‧‧步驟
500‧‧‧中斷處理系統
501‧‧‧處理器核心
503‧‧‧超級管理程式
505‧‧‧虛擬機器
507‧‧‧IOV裝置
509‧‧‧虛擬裝置
511‧‧‧計時器
第1圖繪示根據本案之在虛擬環境中直接傳送中斷至虛擬機器之中斷處理方法一實施範例。
第2圖繪示依照本案的輸出入虛擬(I/O virtualization,IOV) 裝置及/或虛擬裝置之中斷處理方法一實施範例。
第3圖顯示當允許虛擬機器直接觸發EOI信號時,有可能發生的情況。
第4圖繪示根據本案之直接傳送計時器中斷至虛擬機器之中斷處理方法一實施範例。
第5圖繪示根據本案在虛擬環境中直接傳送中斷之中斷處理系統一實施範例。
揭露一種在虛擬環境中之中斷處理方法與系統的實施範例。本案實施例可以將由IOV(I/O虛擬化)裝置,虛擬裝置,及/或計時器所發出之中斷直接送至目的虛擬機器,而不用喚起傳送路徑上之虛擬環境之超級管理程式(在虛擬環境中,許多的現有中斷傳送機制通常會喚起超級管理程式)。甚至,本案一實施例可減少在中斷傳送過程中的相關於各I/O交易的虛擬機器離開的數量。
第1圖繪示根據本案之在虛擬環境中直接傳送中斷至虛擬機器之中斷處理方法一實施範例,其可執行於具有一或多處理器核心之電腦上。在方塊110,此中斷處理方法由虛擬環境之超級管理程式將目的為虛擬機器之中斷所觸發之虛擬機器離開給予失能。在本案另一實施例中,超級管理程式會清除虛擬機器之相關控制結構中之外部中斷離開(EIE,external interrupt exiting)位元,以失能相關的虛擬機器離開,使得將中斷傳送至執 行中虛擬機器不會造成虛擬機器離開。在本案之中斷處理方法再一實施例中,超級管理程式選擇將可以直接發出EOI的虛擬機器給予致能,以通知中斷服務已完成,如方塊120。在方塊130,當此目的虛擬機器執行於該一或多處理器核心之一上時,本案之中斷處理方法一實施例,將由IOV裝置及/或虛擬裝置所發出的一或多中斷直接送至目的虛擬機器,否則,將此一或多中斷送至超級管理程式,以將相關的一或多中斷送至目的虛擬機器。
當在具有IOV裝置(比如,網路中斷控制器(Network Interrupt Controller,NIC)之SRIOV裝置)之伺服器上之虛擬機器M被啟動時,會造此IOV裝置上產生虛擬函數(Virtual Function)F。一旦在虛擬機器M與虛擬函數F間的連結建立起來之後,虛擬機器M可直接發出記憶體映對(map)I/O指令給虛擬函數F,且虛擬函數F只能中斷虛擬機器M。在本案一實施例之直接中斷傳送(DID,direct interrupt controller)中,當虛擬函數F產生中斷時,如果虛擬機器M正在執行,則此中斷會通過,舉例但不受限於,譬如PCIe階級(hierarchy)與輸出入記憶體管理單元,最後到達處理器核心(虛擬機器M執行於其上且此處理器核心為客戶模式)之區域中斷控制器(local interrupt controller,LIC),比如為,硬體區域先進可程式化中斷控制器(local advanced programmable interrupt controller,LAPIC);否則,依據本案的DID機制一實施例可將中斷送至超級管理程式,接著將相關中斷注入至虛擬機器M。
第1圖之方塊130一實施例,可如第2圖所示。現將參考第2圖,其繪示依照本案的IOV裝置及/或虛擬裝置之中斷處理方法一實施範例如。當超級管理程式安排虛擬機器執行於一或多處理器核心之一之上時,本案的中斷處理方法一實施例可對虛擬裝置之IOV裝置所相關之I/O中斷表之項目再映對(remap),使得此虛擬機器之IOV裝置之相關中斷的目的(destination)可為執行此虛擬機器之一或多處理器核心之一(方塊131)。當超級管理程式對虛擬裝置進行反調度(deschedule)(方塊133)時,本案之中斷處理方法一實施例可致能由虛擬機器之非屏蔽中斷(non-maskable interrupt,NMI)所觸發之非屏蔽(non-maskable)虛擬機器離開,將相關於虛擬機器之IOV裝置所相關之I/O中斷表項目之傳送模式改變為NMI模式。在本案一實施例中,超級管理程式可設定虛擬機器之控制結果之NMI離開位元,以致能非屏蔽虛擬機器離開。此NMI中斷將強制造成虛擬機器離開,即便當EIE位元已被清除。
在本案一實施例中,當超級管理程式安排虛擬機器M來執行於處理器核心C上時,其可能但不受限於,改變IOMMU中斷再映對表項目(分配給虛擬機器M之虛擬函數),使得由這些虛擬函數所產生之中斷的目的為處理器核心C。這可使得當虛擬機器M正在執行時,虛擬機器M之每一個IOV裝置中斷可直接送至分配給虛擬機器M之處理器核心。此外,當超級管理程式反調度虛擬機器M時,其改變IOMMU中斷再映對表項目(分配給 虛擬機器M之虛擬函數),使得由這些虛擬函數所產生的中斷的傳送模式被改變為NMI模式。這可使得當虛擬機器M未執行時,虛擬機器M之每一個IOV裝置中斷造成虛擬機器離開,且被當成NMI中斷而送至超級管理程式。當超級管理程式安排與反調度虛擬機器時,對虛擬機器之中斷表之額外再映對能使得,只有當中斷的目的虛擬機器正在執行時,才將IOV裝置中斷直接傳送。
當IOV裝置中斷透過超級管理程式來間接傳送時,超級管理程式可執行於原本執行此中斷的目的虛擬機器的該處理器核心上,而非執行於專用處理器核心上。這使得間接傳送中斷的處理成本能平均地橫跨於所有處理器核心上。
即使當虛擬機器M正在執行於處理器核心C之上,當直接傳送IOV裝置中斷到達處理器核心C時,處理器核心C仍然有可能處於主機模式(亦即,是超級管理程式而非虛擬機器M正在執行)。在此情況下,當正在回復虛擬機器M的執行時,超級管理程式將所接收的中斷轉換成虛擬中斷,並注入至虛擬機器M。
在第2圖所示的實施例中,中斷處理方法一實施例可使用處理器之間中斷(inter-processor interrupt)來設定此虛擬機器所相關的虛擬裝置之I/O執行緒,當超級管理程式安排虛擬機器來執行於一或多處理器核心之一上(虛擬機器執行於其上)時,以使得處理器間中斷(inter-processor interrupt,IPI)的中斷向量設定為虛擬機器的虛擬裝置的相關中斷向量(方塊135)。本案之中斷 處理方法另一實施例也可致能非屏蔽虛擬機器離開,如方塊133所示。
本案一實施例可利用自IPI(self-IPI)來將虛擬中斷注入至虛擬機器。特別是,在超級管理程式回復虛擬機器之前,將IPI送至本身的處理器核心。在虛擬機器回復之後,此IPI接著被直接送至所注入的虛擬機器。如果有多個虛擬中斷需要被注入至虛擬機器,則超級管理程式設定多重IPI,各相關於一個虛擬中斷。
為了利用實體I/O裝置操作與虛擬機器執行間的平行關係(parallelism),現有的超級管理程式,比如,核心虛擬機器(Kernel Virtual Machine(KVM)),對於相關於虛擬機器的各虛擬裝置專門配置一個執行緒。正常情況下,執行虛擬機器的虛擬裝置執行緒的處理器核心不同於執行虛擬機器的處理器核心。在本案的DID方法與系統實施例中,當虛擬裝置執行緒送出虛擬裝置中斷I至虛擬機器M時,此虛擬裝置執行緒先檢查虛擬機器M是否正在執行,如果是的話,則發出IPI至執行此虛擬機器M的處理器核心,並將IPI中斷向量設定為虛擬裝置中斷I的中斷向量。因為EIE位元已被清除,此IPI會送至虛擬機器M,而不會造成虛擬機器離開。最後結果是,虛擬裝置中斷直接送至虛擬機器,而不會造成虛擬機器離開。
即便是,只有當虛擬裝置正在執行時,超級管理程式才試著要將虛擬裝置中斷送至虛擬裝置,仍有可能造成競爭情 況(race condition)。IPI式的虛擬裝置中斷只能被送至原本該執行虛擬機器的處理器核心上,但當此中斷送達時,此處理器核心有可能處於主機模式,而非客戶模式。在此情況下,超級管理程式代表虛擬機器來接收此IPI,將IPI式的虛擬裝置中斷轉換成虛擬中斷,並將之注入至虛擬機器,在回復客戶執行之前。
但在未應用符合本案DID機制實施例的環境下,當虛擬機器送出中斷結束通知時,其會送至超級管理程式。超級管理程式比如但不受限於,則接著寫入至硬體EOI暫存器來發出EOI。在本案一實施例中,超級管理程式可使得虛擬機器直接發出EOI,以通知中斷服務已完成。在本實施例中,當中斷處理器完成對中斷需求IRQ的服務時,其藉由寫入至目的處理器核心的區域中斷控制器(LIC)的EOI暫存器,以通知對目前中斷的服務已完成,且LIC可傳送下一待處理的中斷。雖然當虛擬機器發出EOI時,最好能避免虛擬機器離開,但可能也會有不想要的邊際效應產生,如果超級管理程式並未涉及到EOI的發出的話。
第3圖顯示當允許虛擬機器直接觸發EOI信號且將直接中斷/虛擬中斷混合來造成優先順序反轉時,有可能發生的情況。在第3圖中,假設優先順序為IRQ3>IRQ1>IRQ2。如果虛擬中斷處理器直接發出EOI的話,LIC可能接收虛擬中斷IRQ3的EOI通知,如果其認為目前沒有待處理的中斷的話,如第3圖(a)所示,或認為目前待處理中斷已經處理完畢(實際上,正在進行中),如第3圖(b)所示。甚至,LIC可能錯誤地發出低優先順序中 斷(比如第3圖(b)的直接中斷IRQ2)而優先於高優先順序中斷(比如第3圖(b)的直接中斷IRQ1),因為虛擬中斷IRQ3的處理器已直接發出EOI。優先順序反轉的原因在於,當虛擬中斷透過,比如但不受限於,中斷需求/服務暫存器的軟體仿真而被注入時,LIC是無法察覺到這些虛擬中斷的。
依據本案的IPI式虛擬中斷注入機制一實施例可減少優先順序反轉問題,因為將EOI直接發出。當虛擬中斷以IPI的形式發出時,目的處理器核心的LIC便可察覺,使其能跟其他直接中斷與虛擬中斷競爭。因為LIC可察覺到要送至處理器核心的每個中斷與每個EOI信號,其使得系統不會將正在服務中的中斷誤認為已被完成(然實際上,未被完成),也不會貿然地送出新的中斷。在一實施例中,可使用特殊IPI(其傳送模式被設為NMI)。NMI設定可在目的處理器核心上強制造成虛擬機器離開,使得超級管理程式能再度控制並對這些特殊IPI採取適當行動。
不論超級管理程式與虛擬機器(目前正有虛擬中斷要注入)是否執行於同一處理器核心上,符合本案的DID機制一實施例,使用相同的IPI式機制(具有適當的中斷向量設定),來傳送虛擬中斷。當虛擬中斷傳送的來源與目的執行於不同處理器核心上時,不需要虛擬機器離開。因為各虛擬中斷是以硬體中斷形式(比如IPI)出現且通過目的處理器核心的LIC,不論中斷是否直接傳送,送至處理器核心的中斷的優先順序不會被反轉。
現參考第4圖來描述本案另一實施範例,其顯示根 據本案的直接傳送計時器中斷至目的虛擬機器之中斷處理方法一實施例。第4圖中,當此目的虛擬機器正執行於該一或多處理器核心之一之上時,本案之中斷處理方法一實施例更可直接傳送一或多計時器至目的虛擬機器,否則將該一或多計時器中斷送至超級管理程式以將傳送一或多計時器送至目的虛擬機器(方塊410)。在第4圖之本案另一實施例中,當超級管理程式反調度虛擬機器時,中斷處理方法可儲存該一或多處理器核心之一之計時器狀態(比如,計時器相關暫存器及其他計時器狀態等),方塊411所示;以及,當超級管理程式安排虛擬機器來執行於該一或多處理器核心之一之上時,失能對該一或多處理器核心之一上之計時器相關暫存器之抑制(trapping)並將所儲存的計時器狀態回復至該一或多處理器核心之一(方塊413)。在本案一實施例中,中斷處理方法更可致能由虛擬機器之非屏蔽中斷(NMI)所觸發的非屏蔽虛擬機器離開,並在超級管理程式反調度虛擬機器時,將虛擬機器的計時器所相關的I/O中斷表項目的傳送模式改變為NMI模式。
現參考第5圖,其繪示根據本案的在虛擬環境中之中斷處理系統500一實施範例,其可執行於具有一或多處理器核心501之電腦上。中斷處理系統500具有至少一或多處理器核心501,超級管理程式503,一或多虛擬機器505,一或多IOV裝置507與一或多虛擬裝置509。超級管理程式503將目的為虛擬機器505、IOV裝置507或虛擬裝置509的中斷所觸發的虛擬機器 離開給予失能,且當此目的虛擬機器505正在執行於該一或多處理器核心501之一上時,此中斷處理系統500將由IOV裝置507及/或虛擬裝置509所發出的一或多中斷直接送至目的虛擬機器505;否則,將此一或多中斷送至超級管理程式503以將此一或多中斷送至目的虛擬機器。在本案一實施例中,超級管理程式503可將虛擬機器505的控制結構的外部中斷離開(EIE)位元給予清除,以失能虛擬機器離開。
當超級管理程式503安排虛擬機器505來執行於該一或多處理器核心501之一上時,本案之中斷處理系統一實施例,可將虛擬機器505的IOV裝置507所相關的I/O中斷表項目再映對,使得要送至虛擬機器505之IOV裝置的中斷的目的為可執行虛擬機器505的該一或多處理器核心501之一;且當超級管理程式503對虛擬裝置505進行反調度時,可致能由虛擬機器505之非屏蔽中斷(non-maskable interrupt,NMI)所觸發之非屏蔽虛擬機器離開,且將相關於虛擬機器505之IOV裝置507所相關之I/O中斷表項目之傳送模式改變為NMI模式。
本案之中斷處理系統一實施例,更可以使用處理器之間中斷(inter-processor interrupt)來設定此虛擬機器505所相關的虛擬裝置509之I/O執行緒,當超級管理程式安排虛擬機器來執行於一或多處理器核心之一上(虛擬機器執行於其上)時,以使得IPI的中斷向量設定為虛擬機器505的虛擬裝置509的相關中斷向量。當超級管理程式對虛擬裝置進行反調度時,可能致能非 屏蔽虛擬機器離開,其由虛擬機器505的非屏蔽中斷(NMI)所觸發,且將虛擬機器505之虛擬裝置509所相關之I/O中斷表項目之傳送模式改變為NMI模式,並將I/O執行緒之IPI中斷轉換成虛擬中斷。
在本案一實施例中,超級管理程式503可設定於虛擬機器505之控制結構之NMI離開位元,以致能非屏蔽虛擬機器離開。在本案一實施例中,超級管理程式503也可選擇致能虛擬機器505來發出EOI,比如,虛擬機器505直接寫入EOI暫存器,以通知中斷處理器之中斷服務已完成。
在本案一實施例中,中斷處理系統更可包括LIC的計時器511,中斷處理系統500直接傳送計時器511的一或多中斷至目的虛擬機器505(其正在執行於該一或多處理器核心501之一之上);否則,將計時器511的一或多中斷送至超級管理程式503,以將一或多虛擬計時器中斷送至目的虛擬機器505。
在本案一實施例中,當超級管理程式503反調度虛擬機器505時,中斷處理系統500可儲存該一或多處理器核心501之一之計時器511之狀態;以及,當超級管理程式503安排虛擬機器505來執行於該一或多處理器核心501之一之上時,失能對該一或多處理器核心501之一上之計時器相關暫存器之抑制,並將所儲存的計時器狀態回復至該一或多處理器核心501之一。在本案一實施例中,中斷處理系統更可致能由虛擬機器之非屏蔽中斷(NMI)所觸發的非屏蔽虛擬機器離開,並在超級管理程式反調 度虛擬機器時,將虛擬機器的計時器所相關的I/O中斷表項目的傳送模式改變為NMI模式。
以x86伺服器為例,計時器中斷乃是相關於每核心(per-core)LAPIC,且超級管理程式將LAPIC計時器虛擬化至虛擬機器。
因為計時器中斷在到達目的處理器核心之前,並未通過中斷再映對表,在設定之後,超級管理程式沒有可以改變計時器中斷如何傳送的彈性。因此,如果將計時器中斷直接傳送,而無超級管理程式涉及其中,由虛擬機器所設定的計時器中斷可能會誤傳至超級管理程式,如果目的處理器核心處於主機模式;或者是,其可能會被傳至錯誤的虛擬機器,如果在計時器失效時,正有另一虛擬機器也執行於同一目的處理器核心上的話。
當超級管理程式安排虛擬機器M於處理器核心C上時,虛擬機器M所設定的計時器乃是安裝於處理器核心C的硬體計時器之上;當超級管理程式從處理器核心C上反調度虛擬機器M時,虛擬機器M所設定的計時器被從處理器核心C的硬體計時器移除,且所指定的處理器核心C的硬體計時器變回至由超級管理程式所使用。除了所指定處理器核心之外,安裝於處理器核心C的硬體計時器之上的計時器只被目前正在此處理器核心上運行之虛擬機器所設定。在被指定的處理器核心上,超級管理程式準備服務由超級管理程式與目前未執行的虛擬機器所設定的計時器中斷。當這些虛擬機器回復時,目的為目前未執行的虛擬機 器的計時器中斷會如同虛擬中斷般被傳送至這些虛擬機器。
綜上所述,雖然本案已以實施範例揭露如上,然其並非用以限定本案。本案所屬技術領域中具有通常知識者,在不脫離發明之精神和範圍內,當可作各種之更動與潤飾。因此,本案之保護範圍當視後附之申請專利範圍所界定者為準。
110~130‧‧‧步驟

Claims (30)

  1. 一種虛擬環境之中斷處理方法,可運作於具有一或多處理器核心之一電腦上,該中斷處理方法包括:透過該虛擬環境之一超級管理程式,將目的為一虛擬機器之一中斷所觸發的一虛擬機器離開給予失能;以及當該目的虛擬機器正在執行於該一或多處理器核心之一上時,將由一輸出入虛擬(IOV)裝置及/或一虛擬裝置所發出的一或多中斷直接送至該目的虛擬機器,否則,將該一或多中斷送至該超級管理程式,以將該一或多中斷送至該目的虛擬機器;其中,當該超級管理程式安排該虛擬機器來執行於該一或多處理器核心之該一處理器核心上時,將該虛擬機器的該IOV裝置所相關的一I/O中斷表項目再映對,使得要送至該虛擬機器之該IOV裝置之該相關中斷的目的為執行該虛擬機器的該一或多處理器核心之該一處理器核心;以及當該超級管理程式對該虛擬裝置進行反調度時,致能由該虛擬機器之一非屏蔽中斷(non-maskable interrupt,NMI)所觸發之一非屏蔽虛擬機器離開,且將該虛擬機器之該IOV裝置所相關之該I/O中斷表項目之一傳送模式改變為一NMI模式。
  2. 如申請專利範圍第1項所述之中斷處理方法,更包括:致能該虛擬機器以直接發出一中斷結束(EOI),以透過該超級管理程式來通知一中斷服務已完成。
  3. 如申請專利範圍第1項所述之中斷處理方法,更包括: 由該超級管理程式將該虛擬機器的一相關控制結構的一外部中斷離開(EIE)位元給予清除,以失能該虛擬機器離開。
  4. 如申請專利範圍第1項所述之中斷處理方法,其中,致能由該非屏蔽中斷(NMI)所觸發之該非屏蔽虛擬機器離開之該步驟包括:設定該虛擬機器之一相關控制結構之一NMI離開位元,以致能該非屏蔽虛擬機器離開。
  5. 如申請專利範圍第1項所述之中斷處理方法,更包括:當該目的虛擬機器正在執行於該一或多處理器核心之該一處理器核心之上時,直接傳送一或多計時器中斷至該目的虛擬機器,否則,將該一或多計時器中斷送至該超級管理程式,以將相關的一或多虛擬計時器中斷送至該目的虛擬機器。
  6. 如申請專利範圍第1項所述之中斷處理方法,更包括:當該超級管理程式反調度該虛擬機器時,儲存該一或多處理器核心之該一處理器核心之一計時器狀態;以及當該超級管理程式安排該虛擬機器來執行於該一或多處理器核心之該一處理器核心之上時,失能對該一或多處理器核心之該一處理器核心上之計時器相關暫存器之抑制,並將所儲存的該計時器狀態回復至該一或多處理器核心之該一處理器核心。
  7. 如申請專利範圍第1項所述之中斷處理方法,其中,該超級管理程式執行於原本執行該目的虛擬機器之該一或多處理器核心之同一處理器核心之上。
  8. 一種虛擬環境之中斷處理系統,可運作於具有一或多處理器核心之一電腦上,該中斷處理系統包括:一超級管理程式,將目的為一虛擬機器之一中斷所觸發的一虛擬機器離開給予失能;以及一輸出入虛擬(IOV)裝置及一虛擬裝置,當該目的虛擬機器正在執行於該一或多處理器核心之一上時,該系統將由一輸出入虛擬裝置及/或一虛擬裝置所發出的一或多中斷直接送至該目的虛擬機器,否則,將該一或多中斷送至該超級管理程式,以將該一或多中斷送至該目的虛擬機器;其中:當該超級管理程式安排該虛擬機器來執行於該一或多處理器核心之該一處理器核心上時,將該虛擬機器的該IOV裝置所相關的一I/O中斷表項目再映對,使得要送至該虛擬機器之該IOV裝置之該相關中斷的目的為執行該虛擬機器的該一或多處理器核心之該一處理器核心;以及當該超級管理程式對該虛擬裝置進行反調度時,致能由該虛擬機器之一非屏蔽中斷(non-maskable interrupt,NMI)所觸發之一非屏蔽虛擬機器離開,且將該虛擬機器之該IOV裝置所相關之該I/O中斷表項目之一傳送模式改變為一NMI模式。
  9. 如申請專利範圍第8項所述之中斷處理系統,其中,該超級管理程式更致能該虛擬機器,以直接發出一中斷結束(EOI),來通知一中斷服務已完成。
  10. 如申請專利範圍第8項所述之中斷處理系統,其中,該超級管理程式更將該虛擬機器的一相關控制結構的一外部中斷離開(EIE)位元給予清除,以失能該虛擬機器離開。
  11. 如申請專利範圍第8項所述之中斷處理系統,其中,該中斷處理系統致能由該非屏蔽中斷(NMI)所觸發之該非屏蔽虛擬機器離開時,該中斷處理系統設定該虛擬機器之一相關控制結構之一NMI離開位元,以致能該非屏蔽虛擬機器離開。
  12. 如申請專利範圍第8項所述之中斷處理系統,更包括:一計時器,當該目的虛擬機器正在執行於該一或多處理器核心之該一處理器核心之上時,該中斷處理系統直接傳送一或多計時器中斷至該目的虛擬機器,否則,該中斷處理系統將該一或多計時器中斷送至該超級管理程式,以將相關的一或多虛擬計時器中斷送至該目的虛擬機器。
  13. 如申請專利範圍第12項所述之中斷處理系統,其中:當該超級管理程式反調度該虛擬機器時,該中斷處理系統儲存該一或多處理器核心之該一處理器核心之一計時器狀態;以及當該超級管理程式安排該虛擬機器來執行於該一或多處理器核心之該一處理器核心之上時,該中斷處理系統失能對該一或多處理器核心之該一處理器核心上之計時器相關暫存器之抑制,並將所儲存的該計時器狀態回復至該一或多處理器核心之該一處理器核心。
  14. 如申請專利範圍第8項所述之中斷處理系統,其中,該超級管理程式執行於原本執行該目的虛擬機器之該一或多處理器核心之同一處理器核心之上。
  15. 一種虛擬環境之中斷處理方法,可運作於具有一或多處理器核心之一電腦上,該中斷處理方法包括:透過該虛擬環境之一超級管理程式,將目的為一虛擬機器之一中斷所觸發的一虛擬機器離開給予失能;以及當該目的虛擬機器正在執行於該一或多處理器核心之一上時,將由一輸出入虛擬(IOV)裝置及/或一虛擬裝置所發出的一或多中斷直接送至該目的虛擬機器,否則,將該一或多中斷送至該超級管理程式,以將該一或多中斷送至該目的虛擬機器;其中,當該超級管理程式安排該虛擬機器來執行於該一或多處理器核心之該一處理器核心上時,利用一處理器間中斷(IPI)來設定該虛擬機器的該虛擬裝置之一I/O執行緒,以將該IPI的中斷向量設定為該虛擬機器的該虛擬裝置的一相關中斷向量;以及當該超級管理程式對該虛擬裝置進行反調度時,致能由該虛擬機器之一非屏蔽中斷(non-maskable interrupt,NMI)所觸發之一非屏蔽虛擬機器離開,且將該虛擬機器之該虛擬裝置所相關之該I/O中斷表項目之一傳送模式改變為一NMI模式,並將該I/O執行緒之該IPI中斷轉換成一相關虛擬中斷。
  16. 如申請專利範圍第15項所述之中斷處理方法,更包括: 致能該虛擬機器以直接發出一中斷結束(EOI),以透過該超級管理程式來通知一中斷服務已完成。
  17. 如申請專利範圍第15項所述之中斷處理方法,更包括:由該超級管理程式將該虛擬機器的一相關控制結構的一外部中斷離開(EIE)位元給予清除,以失能該虛擬機器離開。
  18. 如申請專利範圍第15項所述之中斷處理方法,其中,致能由該非屏蔽中斷(NMI)所觸發之該非屏蔽虛擬機器離開之該步驟包括:設定該虛擬機器之一相關控制結構之一NMI離開位元,以致能該非屏蔽虛擬機器離開。
  19. 如申請專利範圍第15項所述之中斷處理方法,更包括:由該超級管理程式來直接致能該虛擬機器來發出EOI,以通知一中斷服務已完成。
  20. 如申請專利範圍第15項所述之中斷處理方法,更包括:當該目的虛擬機器正在執行於該一或多處理器核心之該一處理器核心之上時,直接傳送一或多計時器中斷至該目的虛擬機器,否則,將該一或多計時器中斷送至該超級管理程式,以將相關的一或多虛擬計時器中斷送至該目的虛擬機器。
  21. 如申請專利範圍第15項所述之中斷處理方法,更包括:當該超級管理程式反調度該虛擬機器時,儲存該一或多處理器核心之該一處理器核心之一計時器狀態;以及當該超級管理程式安排該虛擬機器來執行於該一或多處理 器核心之該一處理器核心之上時,失能對該一或多處理器核心之該一處理器核心上之計時器相關暫存器之抑制,並將所儲存的該計時器狀態回復至該一或多處理器核心之該一處理器核心。
  22. 如申請專利範圍第15項所述之中斷處理方法,其中,該超級管理程式執行於原本執行該目的虛擬機器之該一或多處理器核心之同一處理器核心之上。
  23. 一種虛擬環境之中斷處理系統,可運作於具有一或多處理器核心之一電腦上,該中斷處理系統包括:一超級管理程式,將目的為一虛擬機器之一中斷所觸發的一虛擬機器離開給予失能;以及一輸出入虛擬(IOV)裝置及一虛擬裝置,當該目的虛擬機器正在執行於該一或多處理器核心之一上時,該系統將由一輸出入虛擬裝置及/或一虛擬裝置所發出的一或多中斷直接送至該目的虛擬機器,否則,將該一或多中斷送至該超級管理程式,以將該一或多中斷送至該目的虛擬機器;其中:當該超級管理程式安排該虛擬機器來執行於該一或多處理器核心之該一處理器核心上時,利用一處理器間中斷(IPI)來設定該虛擬機器的該虛擬裝置之一I/O執行緒,以將該IPI的中斷向量設定為該虛擬機器的該虛擬裝置的一相關中斷向量;以及當該超級管理程式對該虛擬裝置進行反調度時,致能由該虛擬機器之一非屏蔽中斷(non-maskable interrupt,NMI)所觸發之一 非屏蔽虛擬機器離開,且將該虛擬機器之該虛擬裝置所相關之該I/O中斷表項目之一傳送模式改變為一NMI模式,並將該I/O執行緒之該IPI中斷轉換成一相關虛擬中斷。
  24. 如申請專利範圍第23項所述之中斷處理系統,其中,該超級管理程式更致能該虛擬機器,以直接發出一中斷結束(EOI),來通知一中斷服務已完成。
  25. 如申請專利範圍第23項所述之中斷處理系統,其中,該超級管理程式更將該虛擬機器的一相關控制結構的一外部中斷離開(EIE)位元給予清除,以失能該虛擬機器離開。
  26. 如申請專利範圍第23項所述之中斷處理系統,其中,該中斷處理系統致能由該非屏蔽中斷(NMI)所觸發之該非屏蔽虛擬機器離開時,該中斷處理系統設定該虛擬機器之一相關控制結構之一NMI離開位元,以致能該非屏蔽虛擬機器離開。
  27. 如申請專利範圍第23項所述之中斷處理系統,其中,該超級管理程式更直接致能該虛擬機器來發出EOI,以通知一中斷服務已完成。
  28. 如申請專利範圍第23項所述之中斷處理系統,更包括:一計時器,當該目的虛擬機器正在執行於該一或多處理器核心之該一處理器核心之上時,該中斷處理系統直接傳送一或多計時器中斷至該目的虛擬機器,否則,該中斷處理系統將該一或多計時器中斷送至該超級管理程式,以將相關的一或多虛擬計時器中斷送至 該目的虛擬機器。
  29. 如申請專利範圍第28項所述之中斷處理系統,其中:當該超級管理程式反調度該虛擬機器時,該中斷處理系統儲存該一或多處理器核心之該一處理器核心之一計時器狀態;以及當該超級管理程式安排該虛擬機器來執行於該一或多處理器核心之該一處理器核心之上時,該中斷處理系統失能對該一或多處理器核心之該一處理器核心上之計時器相關暫存器之抑制,並將所儲存的該計時器狀態回復至該一或多處理器核心之該一處理器核心。
  30. 如申請專利範圍第23項所述之中斷處理系統,其中,該超級管理程式執行於原本執行該目的虛擬機器之該一或多處理器核心之同一處理器核心之上。
TW103137783A 2014-09-16 2014-10-31 虛擬環境之中斷處理方法與系統 TWI547876B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/488,061 US9772868B2 (en) 2014-09-16 2014-09-16 Method and system for handling interrupts in a virtualized environment

Publications (2)

Publication Number Publication Date
TW201612749A TW201612749A (en) 2016-04-01
TWI547876B true TWI547876B (zh) 2016-09-01

Family

ID=55454832

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103137783A TWI547876B (zh) 2014-09-16 2014-10-31 虛擬環境之中斷處理方法與系統

Country Status (3)

Country Link
US (1) US9772868B2 (zh)
CN (1) CN105718309B (zh)
TW (1) TWI547876B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025621B2 (en) * 2015-02-24 2018-07-17 Wind River Systems, Inc Method and system for transition from direct interrupt state to virtual interrupt state of emulated computing environments
US10338822B2 (en) * 2016-06-15 2019-07-02 Vmware, Inc. Systems and methods for non-uniform memory access aligned I/O for virtual machines
CN109144679B (zh) * 2017-06-27 2022-03-29 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
US10771554B2 (en) * 2017-09-30 2020-09-08 Intel Corporation Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
JP2019114097A (ja) * 2017-12-25 2019-07-11 ルネサスエレクトロニクス株式会社 半導体装置
US11042494B1 (en) * 2018-06-21 2021-06-22 Amazon Technologies, Inc. Direct injection of a virtual interrupt
TWI727607B (zh) 2019-02-14 2021-05-11 美商萬國商業機器公司 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
JP7448550B2 (ja) * 2019-02-14 2024-03-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ブロッキング・インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
CN113412473A (zh) 2019-02-14 2021-09-17 国际商业机器公司 具有中断表的用于多级虚拟化的定向中断
EP3924818A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt for multilevel virtualization
WO2020164820A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization
TWI759677B (zh) 2019-02-14 2022-04-01 美商萬國商業機器公司 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
EP3924821A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt virtualization with running indicator
TWI764082B (zh) 2019-02-14 2022-05-11 美商萬國商業機器公司 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品
US11042495B2 (en) * 2019-09-20 2021-06-22 Advanced Micro Devices, Inc. Providing interrupts from an input-output memory management unit to guest operating systems
US11513983B2 (en) 2020-05-15 2022-11-29 International Business Machines Corporation Interrupt migration
US11768696B2 (en) * 2020-12-14 2023-09-26 Ati Technologies Ulc Security for microengine access
US20240111563A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Security for simultaneous multithreading processors

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201346589A (zh) * 2011-12-28 2013-11-16 Intel Corp 處理器加速器介面的虛擬化
CN103473135A (zh) * 2013-09-23 2013-12-25 中国科学技术大学苏州研究院 虚拟化环境下自旋锁lhp现象的处理方法
US20140082240A1 (en) * 2012-03-29 2014-03-20 James A. Coleman Architecture and method for managing interrupts in a virtualized environment

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117532A1 (en) 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US7237051B2 (en) 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US7802250B2 (en) * 2004-06-28 2010-09-21 Intel Corporation Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
CN100547571C (zh) * 2006-08-29 2009-10-07 联想(北京)有限公司 一种虚拟机系统及其硬件设备中断处理方法
US7533207B2 (en) 2006-12-06 2009-05-12 Microsoft Corporation Optimized interrupt delivery in a virtualized environment
US7853744B2 (en) 2007-05-23 2010-12-14 Vmware, Inc. Handling interrupts when virtual machines have direct access to a hardware device
US8151264B2 (en) 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
US8453143B2 (en) 2007-09-19 2013-05-28 Vmware, Inc. Reducing the latency of virtual interrupt delivery in virtual machines
JP5352848B2 (ja) 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
US8910158B2 (en) 2011-12-14 2014-12-09 Intel Corporation Virtualizing interrupt priority and delivery
US8892802B2 (en) 2012-01-01 2014-11-18 International Business Machines Corporation Enhancing interrupt handling in a virtual environment
US9164789B2 (en) * 2012-02-29 2015-10-20 Red Hat Israel, Ltd. Multiple queue management and adaptive CPU matching in a virtual computing system
US9489223B2 (en) * 2012-11-27 2016-11-08 Red Hat Israel, Ltd. Virtual machine wakeup using a memory monitoring instruction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201346589A (zh) * 2011-12-28 2013-11-16 Intel Corp 處理器加速器介面的虛擬化
US20140082240A1 (en) * 2012-03-29 2014-03-20 James A. Coleman Architecture and method for managing interrupts in a virtualized environment
CN103473135A (zh) * 2013-09-23 2013-12-25 中国科学技术大学苏州研究院 虚拟化环境下自旋锁lhp现象的处理方法

Also Published As

Publication number Publication date
US20160077848A1 (en) 2016-03-17
US9772868B2 (en) 2017-09-26
CN105718309B (zh) 2019-07-12
CN105718309A (zh) 2016-06-29
TW201612749A (en) 2016-04-01

Similar Documents

Publication Publication Date Title
TWI547876B (zh) 虛擬環境之中斷處理方法與系統
Tu et al. A comprehensive implementation and evaluation of direct interrupt delivery
US9715403B2 (en) Optimized extended context management for virtual machines
US10754991B2 (en) Method to isolate real-time or safety-critical software and operating system from non-critical software and operating system
US9697029B2 (en) Guest idle based VM request completion processing
US9697023B2 (en) Method and arrangement for using a resource of a hardware platform with at least two virtual machines
US8924501B2 (en) Application-driven shared device queue polling
KR20160033517A (ko) 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법
JP2013093045A (ja) システム管理モードにおけるプロセッサ間割り込みの再方向付け
US9858101B2 (en) Virtual machine input/output thread management
US10572246B2 (en) Live update of a kernel device module
US9740519B2 (en) Cross hypervisor migration of virtual machines with VM functions
US11099884B2 (en) Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
US9329880B2 (en) Counter for fast interrupt register access in hypervisors
US9600314B2 (en) Scheduler limited virtual device polling
US20170046187A1 (en) Guest driven surprise removal for pci devices
WO2018040845A1 (zh) 一种计算资源调度方法及装置
US9606825B2 (en) Memory monitor emulation for virtual machines
US20090241112A1 (en) Recording medium recording virtual machine control program and virtual machine system
US10387178B2 (en) Idle based latency reduction for coalesced interrupts
US9766917B2 (en) Limited virtual device polling based on virtual CPU pre-emption
US11249777B2 (en) Virtual machine context management
JPH0193830A (ja) 仮想計算機システムにおける割り込み制御方式
US10025621B2 (en) Method and system for transition from direct interrupt state to virtual interrupt state of emulated computing environments
US10152341B2 (en) Hyper-threading based host-guest communication