TWI454933B - 管理一虛擬機器監視器中超級呼叫的裝置與方法以及虛擬機器監視器 - Google Patents

管理一虛擬機器監視器中超級呼叫的裝置與方法以及虛擬機器監視器 Download PDF

Info

Publication number
TWI454933B
TWI454933B TW100137159A TW100137159A TWI454933B TW I454933 B TWI454933 B TW I454933B TW 100137159 A TW100137159 A TW 100137159A TW 100137159 A TW100137159 A TW 100137159A TW I454933 B TWI454933 B TW I454933B
Authority
TW
Taiwan
Prior art keywords
virtual machine
super
virtual
call
delay
Prior art date
Application number
TW100137159A
Other languages
English (en)
Other versions
TW201245975A (en
Inventor
Jui Hao Chiang
Ying Shiuan Pan
Han Lin Li
Po Jui Tsao
Original Assignee
Ind Tech Res Inst
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 Ind Tech Res Inst filed Critical Ind Tech Res Inst
Publication of TW201245975A publication Critical patent/TW201245975A/zh
Application granted granted Critical
Publication of TWI454933B publication Critical patent/TWI454933B/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
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Description

管理一虛擬機器監視器中超級呼叫的裝置與方法以及虛擬機器監視器
本揭露係關於一種管理一虛擬機器監視器(hypervisor)中超級呼叫的裝置與方法以及虛擬機器監視器。
在傳統的作業系統如Linux作業系統(OS)中,用戶級程式藉由使用系統呼叫來請求系統服務。類似地,在一般稱為虛擬機管理器或監視器(virtual machine manager or monitor,VMM)如Xen的虛擬機器監視器中,一虛擬電腦OS(guest OS)是使用超級呼叫來請求虛擬機器監視器提供的服務。為了簡化虛擬機器監視器的設計,Xen把所有的設備驅動程式和所指定的重要系統幕後程式(daemon)放入一個特殊的特權域(privileged domain),稱為域0。因為在Xen虛擬機器監視器的空間裡沒有執行緒(thread)的支援,對系統幕後程式的運行來說,域0是唯一的選擇。
Xen不同於傳統的Linux,後者可以使用核心執行緒的方式來運行系統幕後程式,例如,網絡檔案系統(network file system,NFS)幕後程式在一Linux核心中處理網路封包和檔案系統結構。對開發人員和系統的性能來說,有兩個顯著的特點。一個特點是核心執行緒可以很容易地接取核心資料結構。另一個特點是核心執行緒都有它自己的程序地址空間(process address space),並且可以如同正常程序地進行排程或內文切換(context switched)。
與Linux的核心執行緒不同,域0沒辦法直接存取或修改虛擬機器監視器裡的資訊結構,而是需要向虛擬機器監視器請求提供服務來完成工作。Xen裡的一個超級呼叫應用程式介面(application program interface,API)提供了與典型OS核心的系統呼叫類似的功能,可供域0或是虛擬機器(virtual machine,VM)裡的OS(被稱為虛擬電腦OS)來請求Xen虛擬機器監視器提供服務。其中的一些服務包括獲取重要虛擬機器監視器的資料結構、為非特權的虛擬機器分配資源、執行輸入輸出請求等。當系統幕後程式要求大量的服務時,即眾多的超級呼叫時,此介面沒有調整與分配得很好。因為每一超級呼叫在虛擬電腦OS和虛擬機器監視器之間的切換會產生額外的負擔(extra overhead),如果幕後程式逐一發送超級呼叫的話,可能會影響到幕後程式或系統的性能。
現今,虛擬電腦OS可以選擇逐一發送超級呼叫,或是以批次(batch)方式來傳送一批超級呼叫但會遭到阻擋直到所有的超級呼叫完成為止。系統幕後程式想請求虛擬機器監視器提供服務,必須使用由一虛擬機器監視器提供的一超級呼叫API。此多呼叫(multicall)API是設計來使得一虛擬電腦OS一次發送一序列的超級呼叫,從而減少虛擬電腦OS和虛擬機器監視器之間進行內文切換的次數。此多呼叫API能降低整體超級呼叫的負擔。
然而,每一次的多呼叫是同步的,這意味著呼叫者(caller)和相關的虛擬中央處理單元(virtual central processing unit,VCPU),稱之為VCPUh ,會受阻直到所有多呼叫內的超級呼叫被完成為止。如第一圖所示,虛擬機器VM-X裡大量的超級呼叫將阻斷其他虛擬機器,如VM-Y的運作,因為虛擬機器監視器沒有切換超級呼叫的內文,例如,在一時間片段(time slice)的期間中,VM-X發出超級呼叫H2-H8。並且,此介面被設計為序列地(serially)執行所有呼叫,而一次的多呼叫也只能利用一實體中央處理單元(physical central processing unit,PCPU)的資源,而且此PCPU上的VCPUh 是已被排程的,即使虛擬電腦域(guest domain)已被給予可在多個PCPUs上執行的多個VCPU。
有些技術可以發送一延遲功能呼叫(deferrable function call)來延遲由超級呼叫程式組成的工作。延遲工作可採取多種方式來實現,例如,採用Linux的中斷處理器和設備驅動程式、或是非同步、或是在Xen閒置時執行等。
一些公開的參考文獻提出了問題或是提供了解決的方法,來提高虛擬環境的系統性能。例如,一篇參考文獻揭露了一種在虛擬機器環境中,衰減(attenuating)虛擬處理器的自旋等待(spin waiting)的方法,使得當虛擬處理器正在存取一同步區段(synchronization section)時,可以獲得額外的時間片段。此方法解決了虛擬化環境中的排程問題。另一篇參考文獻揭露了一種在一虛擬機器超額分配(over-allocation)環境中,信息傳遞介面(message passing interface,MPI)的信息接收方法。信息接收方法與虛擬機器層派遣機制(VM layer dispatching mechanism)是互相獨立的。藉由修改MPI庫的信息接收機制,此方法以協調此虛擬環境中的兩個分配機制來提高系統性能,也就是,由用戶端OS將程序分配給虛擬處理器,以及由虛擬機器分配管理器將虛擬處理器分配給實體處理器。
本揭露實施例可提供一種管理一虛擬機器監視器中超級呼叫的裝置與方法以及虛擬機器監視器。
所揭露的一實施例是關於一種管理一虛擬機器監視器中超級呼叫的裝置。此裝置應用於備有一中斷處理器和一排程器的此虛擬機器監視器。此裝置可包含一可延遲低負擔超級呼叫(DLH)模組,當多個虛擬機器的每一虛擬機器初始化時,此DLH模組被配置來指派一個別的DLH佇列給此虛擬機器,其中在一個別的DLH佇列中的每一元素代表一超級呼叫常式(routine)。當此多個虛擬機器中有一虛擬機器通知此中斷處理器有至少一可延遲型超級呼叫要執行時,此排程器選擇至少一VCPU並將此至少一VCPU指派給此虛擬機器,以在至少一PCPU中執行。在回存VCPU內文至具有至少一VCPU的虛擬機器之前,此DLH模組執行至少一個可延遲型超級呼叫,此處的可延遲型超級呼叫係指被插入在此虛擬機器相對應DLH佇列中的一或多個可延遲型超級呼叫。
所揭露的另一實施例是關於一種管理一虛擬機器監視器中超級呼叫的方法。此方法是實現於一電腦系統,並且可包含以下電腦可執行的行為:當多個虛擬機器的每一虛擬機器初始化時,指派一個別的DLH佇列給此虛擬機器,其中在一個別的DLH佇列中的每一元素代表一個超級呼叫常式;當此多個虛擬機器中有一虛擬機器通知此虛擬機器監視器有至少一可延遲型超級呼叫要執行時,選擇至少一VCPU並將此至少一VCPU指派給此虛擬機器,以在至少一PCPU中執行;以及在回存此VCPU內文至具有至少一VCPU的虛擬機器之前,執行被插入在具有至少一VCPU的此虛擬機器的一相對應的DLH佇列中的此一或多個可延遲型超級呼叫。
所揭露的又一實施例是關於一種虛擬機器監視器,用來管理一虛擬環境中的超級呼叫。此虛擬機器監視器可包含一中斷處理器、一排程器、以及一DLH模組,當多個虛擬機器的每一虛擬機器初始化時,此DLH模組被配置來指派一個別的DLH佇列給此虛擬機器,其中此個別的DLH佇列被維護在此虛擬機器監視器裡,此個別的DLH佇列中的每一元素代表一超級呼叫常式。當此多個虛擬機器中有一虛擬機器通知此中斷處理器有至少一可延遲型超級呼叫要執行時,此排程器選擇至少一VCPU並將此至少一VCPU指派給此虛擬機器,以在至少一PCPU中執行。在回存此VCPU內文至具有至少一VCPU的此虛擬機器之前,此DLH模組執行被插入在具有至少一VCPU的此虛擬機器的一相對應的DLH佇列中的此一或多個可延遲型超級呼叫。
茲配合下列圖示、實施例之詳細說明及申請專利範圍,將上述及本發明之其他優點詳述於後。
本揭露實施範例可提供一種可延遲低負擔型超級呼叫(DLH)機制,以非同步的方式來執行超級呼叫。每一虛擬電腦域使用一DLH佇列,其中DLH佇列中的每一元素代表一超級呼叫常式。當此虛擬機器監視器選擇一指派給此虛擬電腦域的VCPU,以在至少一PCPU中執行時,它首先執行此虛擬電腦域的DLH佇列中的元素。每一次存取此DLH佇列時,此DLH佇列中被處理元素的數量是有限制的,以避免發生鎖死(starvation)現象,並且此數量可由系統設計者明確規定。
第二圖是根據一實施範例的示意圖,說明一DLH機制,其中每一虛擬機器可將超級呼叫要求插入於指派給此虛擬機器的DLH佇列,此DLH佇列被維護在此虛擬機器監視器中。參考第二圖,一虛擬機器VM-X可插入超級呼叫要求(hypercall request)到一DLH佇列210,例如經由超級呼叫常式;一虛擬機器VM-Y可插入超級呼叫要求到另一個DLH佇列220,例如經由超級呼叫常式。DLH佇列210和DLH佇列220可由一虛擬機器監視器230來維護,其中H表示一超級呼叫常式。
在實施範例的DLH機制中,一個別的DLH佇列被指派給每一虛擬電腦域。一DLH佇列的每一元素可以包含一函式指標(function pointer),以指向一超級呼叫常式,此超級呼叫常式是此虛擬電腦域希望在虛擬機器監視器上執行的程式。每一虛擬機器被初始化時,皆被指派給予一DLH佇列,此DLH佇列是用來緩衝一或多個可延遲型超級呼叫。當此虛擬機器正在運行時,它可以藉由一正常超級呼叫(normal hypercall)來插入一或多個可延遲型超級呼叫。一虛擬電腦域產生一DLH呼叫來插入元素到它的DLH佇列,一旦插入完成,此呼叫隨即返回。
第三圖是根據一實施範例的示意圖,說明一種管理一虛擬機器監視器中超級呼叫的裝置。此裝置可適應於備有一中斷處理器312和一排程器314的一虛擬機器監視器(未顯示),如第三圖所示。參考第三圖,此裝置可包含一DLH模組320。當多個虛擬機器的每一虛擬機器初始化時,DLH模組320被配置來指派一個別的DLH佇列給此虛擬機器,其中在一個別的DLH佇列中的每一元素代表一超級呼叫常式。當一個虛擬機器正在運行時,虛擬機器可以將一或多個超級呼叫常式插入於自己的DLH佇列中。如一參考號355所示,虛擬機器將一超級呼叫常式插入於自己的DLH佇列中,其中H表示被插入DLH佇列的一超級呼叫常式。
當此多個虛擬機器中有一虛擬機器通知中斷處理器312有至少一可延遲型超級呼叫要執行時,例如,藉由產生一個中斷,其中一中斷發生後,正在虛擬機器上執行的VCPU內文324會被儲存在此虛擬機器監視器中。然後,排程器314選擇至少一VCPU並將此至少一VCPU指派給此虛擬機器,以在至少一PCPU中執行。此DLH模組320執行一或多個可延遲型超級呼叫如H1-H6,此一或多個可延遲型超級呼叫是被插入在指派給具有此至少一指派之VCPU的此虛擬機器的一相對應的DLH佇列322中。然後此虛擬機器監視器將VCPU內文回存到具有此至少一指派之VCPU的此虛擬機器。
DLH模組320和虛擬機器監視器可利用一或多個硬體電路搭配硬體描述語言如Verilog或VHDL,來設計。經過整合和佈局後,硬體電路可被燒錄在現場可編程閘門陣列(Field Programmable Gate Array,FPGA)。由硬體描述語言所完成的電路設計可以由一或多個積體電路來實現,例如特定應用積體電路(Application-Specific Integrated Circuits,ASIC)。換句話說,DLH模組320和虛擬機器監視器可以由一或多個積體電路來實現。另一個範例是,此裝置可包含一或多個處理器來執行DLH模組的各項功能。
所以,根據本揭露的一實施範例,用來管理一虛擬環境中的超級呼叫的虛擬機器監視器400可包含中斷處理器312、排程器314、以及DLH模組320,如第四圖所示。在一虛擬環境中,虛擬機器監視器400的上方可以是多個虛擬機器,此處以兩個虛擬機器為例來說明,如第四圖所示,但不依此限定本揭露實施之範圍。在第四圖中,在兩虛擬機器,VM-1和VM-2,內的是虛擬機器的VCPU內文。如前所述,指派給多個虛擬機器的DLH佇列是被維護在虛擬機器監視器中。在第四圖中,被維護在虛擬機器監視器400中的DLH佇列410和DLH佇列420是分別用來緩衝由虛擬機器VM-1和VM-2插入的可延遲型超級呼叫。
並且,當一虛擬機器如VM-1正在運行時,它可以藉由一正常超級呼叫,將一或多個可延遲型超級呼叫插入到自己的DLH佇列。當一中斷發生時,虛擬機器監視器400的中斷處理器312會保存虛擬機器VM-1的VCPU內文。當中斷處理器312處理中斷後,排程器314會選擇至少一VCPU來運行。在回存VCPU內文以前,DLH模組320檢查在VCPU的擁有者VM的DLH佇列中,是否有可延遲型超級呼叫。當條件為真時,DLH模組320選取此可延遲型超級呼叫來執行。執行一或多個可延遲型超級呼叫完成之後,虛擬機器監視器回存此VCPU內文到此虛擬機器。此VCPU內文是在至少一VCPU上執行的資訊內容,例如是程式、資料、堆疊的內容、或是暫存器內容等。
如上所述,虛擬機器監視器可用一或多個積體電路來實現。換句話說,中斷處理器312、排程器314、DLH模組320、以及一或多個DLH佇列可以由一或多個硬體組件,如積體電路來實現。類似地,在另一範例中,虛擬機器監視器400可包含一或多個處理器來執行中斷處理器312、排程器314、DLH模組320、以及一或多個DLH佇列的功能。
藉由DLH模組320和虛擬機器監視器400,第五圖是根據一實施範例的流程圖,說明管理一虛擬機器監視器中超級呼叫的方法。此方法是實現於一電腦系統中,包含電腦可執行的行為,如第五圖所示。此方法可適應於此虛擬機器監視器,此虛擬機器監視器可包含一或多個處理器來處理此電腦可執行的行為。參考第五圖,當多個虛擬機器的每一虛擬機器初始化時,可指派一個別的DLH佇列給此虛擬機器(步驟510),其中在一個別的DLH佇列中的每一元素代表一個超級呼叫常式。當此多個虛擬機器中有一虛擬機器通知此虛擬機器監視器有至少一可延遲型超級呼叫要執行時,可選擇至少一VCPU並將此至少一VCPU指派給此虛擬機器,以在至少一PCPU中執行(步驟520)。然後,在回存此VCPU內文至具有至少一VCPU的此虛擬機器之前,可執行至少一個可延遲型超級呼叫,此處的可延遲型超級呼叫係指被插入在此虛擬機器DLH佇列中的可延遲型超級呼叫(步驟530)。執行此一或多個可延遲型超級呼叫完成後,此VCPU內文被回存至此虛擬機器。
步驟510可以藉由DLH模組320來完成,並且指派給多個虛擬機器的DLH佇列可被維護在虛擬機器監視器中,來緩衝插入在一個別DLH佇列的至少一可延遲型超級呼叫。在虛擬機器監視器的中斷處理器312處理中斷後,步驟520可由虛擬機器監視器的排程器314來完成。於步驟530中,在虛擬機器監視器回存VCPU內文到此虛擬機器之前,DLH模組320可在一單核心系統或一多核心系統執行一或多個可延遲型超級呼叫。此虛擬機器監視器可以使用一或多個處理器來達成DLH模組、中斷處理器、以及排程器的前述功能。
第六圖是根據一實施範例的示意圖,說明DLH模組在一單核心系統中執行可延遲型超級呼叫。在第六圖中,假設一虛擬機器VM-1將使用超級呼叫來請求虛擬機器監視器提供服務,此虛擬機器可以藉由一正常超級呼叫來插入多個可延遲型超級呼叫到自己的DLH佇列。此DLH模組可採用一非同步的方式來執行此多個可延遲型超級呼叫,從而使此多個可延遲型超級呼叫不會阻斷其他虛擬機器如VM-2的運行。在第六圖中,當虛擬機器VM-1被初始化時,一中斷發生時,以參考號610表示。當虛擬機器VM-1正在運行時,可藉由發出一正常的超級呼叫605到虛擬機器監視器,可插入多個可延遲型超級呼叫如H1~H6到自己的DLH佇列。另一個中斷發生時,以參考號620表示,根據此虛擬機器監視器之目前的排程策略來通知此虛擬機器監視器選取一新的VCPU內文,即VM-2的VCPU內文。
經過處理和完成兩次中斷之後,在轉交控制權給虛擬機器VM-1之前,DLH模組將檢查指派給虛擬機器VM-1的DLH佇列。所以,此多個可延遲型超級呼叫都被挑選出來,並由DLH模組來執行。當此執行完成後,DLH模組可轉移控制權給虛擬機器VM-1。又一中斷發生時,以參考號630表示,DLH模組根據虛擬機器監視器目前的排程策略,通知此虛擬機器監視器選取下一個VCPU內文,即VM-2的VCPU內文。
當大量的可延遲型超級呼叫執行於一多核心系統時,DLH模組可以將這些可延遲型超級呼叫分散到所有的VCPU,來平衡在所有平行執行緒(parallel thread)上此DLH呼叫的影響,從而將這些背景DLH呼叫所衍生的整體延遲最小化。換句話說,此DLH模組更適合於將多個VCPU分配到兩個或多個PCPUs上來運行的虛擬機器。此可從第七圖的範例看出,第七圖是多個VCPU運行在兩個PCPUs的範例。
在第七圖中,假設虛擬機器VM-1使用超級呼叫來請求虛擬機器監視器提供服務,並且由虛擬機器VM-1插入的多個可延遲型超級呼叫如H1~H9,是在兩個PCPUs,即PCPU1和PCPU2的一多核心系統上執行。在內文切換之前,超級呼叫常式被多個處理器置入DLH佇列並處理。從第七圖可以看出,DLH模組將這些可延遲型超級呼叫分散到所有的VCPU,以在PCPU1和PCPU2上執行。此DLH模組有機會以平行方式來執行這些可延遲型超級呼叫,以平衡在所有平行執行緒上的此DLH呼叫,並且減少由這些背景(background)DLH呼叫所產生的整體延遲。
所以,從第六圖和第七圖可以看出,所揭露的DLH模組可執行插入於DLH佇列的一或多個可延遲型超級呼叫,其中這些可延遲型超級呼叫可在一單核心系統或是一多核心系統中執行。當這些可延遲型超級呼叫在一多核心系統中平行地在多個可用的PCPUs中被執行完成時,對這些虛擬機器而言,此DLH模組可將執行於此多核心系統的可延遲型超級呼叫作出更好的排程。
當虛擬機器監視器在轉移控制到虛擬電腦域之前,會探詢(visit)該虛擬電腦域的DLH佇列,並先處理DLH佇列裡的元素。在資源花費計算方面,處理這些DLH元素所耗費的計算資源是算在將它們插入的虛擬電腦域上,這樣的計算方式是公平的,因為超級呼叫常式是設計給虛擬電腦域使用,而不是只由虛擬機器監視器使用。例如,假設排程器給予一VCPU有30毫秒的執行時間,而其超級呼叫常式耗費5毫秒,那麼此VCPU應該只給予25毫秒作為自己的執行時間。並且,每一次探詢DLH佇列而被處理元素的數量是有限制的,以避免發生鎖死現象,並且此數量可明確規定。
為了在一DLH呼叫工作完成後可以收到通知,發送一DLH呼叫的程式例如,可以向虛擬機器監視器註冊一事件通道,來表示有意接收像這樣的通知。
DLH呼叫的一範例API可包含至少四個參數,此API範例可用dlh_call(call_list,nr_calls,callback_fn,nr_entries)來表示。前兩參數與在一多呼叫時是一樣的,其中call_list是一陣列,此陣列的每一元素儲存一超級呼叫的操作碼和此超級呼叫的參數。nr_calls表示在call_list中元素的個數。第三參數,callback_fn,是一回呼函式指標(callback function pointer),當call_list的所有超級呼叫完成後,會被虛擬機器監視器呼叫。最後一個參數,nr_entries,是用來調整每一DLH呼叫的處理粒度(processing granularity),此參數讓開發者在每次探詢DLH佇列時,在限制工作量上給予彈性,所以可防止目前在Xen虛擬機器監視器中觀察到的任何與工作進入-相關的(tasklet-related)鎖死現象發生。
此處以一Xen虛擬機器監視器作為範例來說明此Xen虛擬機器監視器如何排程tasklet、softirqs、以及排程功能,但所揭露的實施範例的應用並不僅限Xen虛擬機器監視器系統。第八圖是根據一實施範例的示意圖,說明一Xen虛擬機器監視器的排程邏輯。其中,每一PCPU於初始化時,被設定具有一閒置的(idle)VCPU內文,此閒置的VCPU內文在一idle_loop函式內循環。如第八圖所示,idle_loop函式由兩部分組成,即do_tasklet和do_softirq。兩方塊內的do_softirq皆代表同一碼段(code snippet),其內部細節都描述於do_softirq的碼段810中。
第八圖之Xen虛擬機器監視器的排程邏輯的範例執行下列任務。(1)如果因為一硬體定時器中斷而觸發TIMER_SOFTIRQ,則檢查所有已註冊的軟體定時器的回呼函式,以決定這些軟體定時器的回呼函式是否需要執行,並觸發SCHED_SOFTIRQ,以及重新編程(re-programmed)硬體定時器(hardware timer),例如,本地APIC定時器,以設定下一次的計時器觸發(timer firing)。(2)在SCHED_SOFTIRQ被觸發的情況時,do_softirq呼叫此排程器820,以根據下列規則來挑選一新的VCPU內文。首先,如果tasklet佇列不是空的,則排程器820選擇此閒置的VCPU內文,以在目前的PCPU上執行;否則,排程器820根據虛擬機器監視器目前的排程策略,挑選下一個VCPU內文,例如,SEDF或是Credit。如果此閒置的VCPU被挑選,則此PCPU進入idle_loop,否則,回存一非閒置的(non-idle)VCPU內文,並且自上一次離開之處繼續此對應域。
在第八圖的範例中,參考號805表示處理前面提及的DLH佇列的超級呼叫。參考號815表示處理TIMER_SOFTIRQ和重新編程硬體定時器中斷(hardware timer interrupt)。TIMER_SOFTIRQ是當硬體定時器中斷來臨時被觸發的。
一個實驗是完成50000個超級呼叫,第九圖是分別使用兩個指派的VCPU、四個指派的VCPU、以及八個指派的VCPU,完成50000個超級呼叫的執行時間的實驗結果。其中,於一虛擬環境中,此實驗使用多呼叫方法以及本揭露的DLH機制。從第九圖可以看出,相較於多呼叫方法,本揭露的DLH機制對指派多個VCPU的虛擬電腦域而言,會作出更好的排程,更能縮短超級呼叫的執行時間。並且使用越多指派的VCPU,本揭露的DLH機制更彰顯其效率。
第十圖是另一個實驗,對虛擬電腦域,在一多核心系統中執行具多執行緒的程式並量測多呼叫方法、以及本揭露的DLH機制對執行中的多執行緒程式的影響。此處做為多執行緒的範例程式是用8核心平行編譯Linux核心。從第十圖可以看出,相較於多呼叫方法,本揭露的DLH機制對於執行中的多執行緒程式影響較小,因為編譯工作在本揭露的DLH機制影響下花費較短的時間完成。
所以,本揭露管理一虛擬機器監視器中超級呼叫的實施範例有低負擔、非同步、平行、以及可調性(tunable)的特點。換句話說,本揭露之DLH機制的呼叫負擔(calling overhead)是最小的。虛擬電腦OS於正在處理超級呼叫序列的期間中應該不會阻斷。超級呼叫的處理是在一多核心系統(multi-core system)中所有可用的PCPU上平行完成的。使用者可以調整正在處理中的超級呼叫的粒度。本揭露實施範例可應用於如需要請求大量超級呼叫的程式、或是那些試圖分享多個虛擬機器間內容重複的記憶體(duplicate memory)的記憶體去複製(memory deduplication),例如它需要超級呼叫來取得記憶體頁面的內容和完成記憶體共享。
以上所述者僅為本揭露實施例,當不能依此限定本揭露實施之範圍。即大凡本發明申請專利範圍所作之均等變化與修飾,皆應仍屬本發明專利涵蓋之範圍。
210...DLH佇列
220...DLH佇列
230...虛擬機器監視器
312...中斷處理器
314...排程器
DLH...可延遲低負擔超級呼叫
VCPU...虛擬中央處理單元
320...DLH模組
322...可延遲型超級呼叫H1-H6
324...VCPU內文
H...一超級呼叫常式
355...虛擬機器將一超級呼叫常式插入於自己的DLH佇列中
400...虛擬機器監視器
410...DLH佇列
420...DLH佇列
510...當多個虛擬機器的每一虛擬機器初始化時,指派一個別的DLH佇列給此虛擬機器
520...當此多個虛擬機器中有一虛擬機器通知此虛擬機器監視器有至少一可延遲型超級呼叫要執行時,選擇至少一VCPU並將此至少一VCPU指派給此虛擬機器,以在至少一PCPU中執行
530...在回存此VCPU內文至具有至少一VCPU的此虛擬機器之前,執行至少一個可延遲型超級呼叫,此處的可延遲型超級呼叫係指被插入在此虛擬機器DLH佇列中的可延遲型超級呼叫
605...正常的超級呼叫
610、620、630...一中斷發生
H1~H9...可延遲型超級呼叫
820...排程器
810...do_softirq的碼段
805...處理前面提及的DLH佇列的超級呼叫
815...處理TIMER_SOFTIRQ和重新編程硬體定時器中斷
第一圖是一範例示意圖,說明一虛擬機器裡大量的超級呼叫將阻斷其他虛擬機器。
第二圖是根據一實施範例的示意圖,說明一DLH機制,其中每一虛擬機器可將超級呼叫要求插入於指派給此虛擬機器的DLH佇列。
第三圖是根據一實施範例的示意圖,說明一種管理一虛擬機器監視器中超級呼叫的裝置。
第四圖根據一實施範例的示意圖,說明一種管理超級呼叫的虛擬機器監視器。
第五圖是根據一實施範例的流程圖,說明管理一虛擬機器監視器中超級呼叫的方法。
第六圖是根據一實施範例的示意圖,說明DLH模組在一單核心系統中執行可延遲型超級呼叫。
第七圖是根據一實施範例的示意圖,說明多個VCPU運行在兩個PCPUs的範例。
第八圖是根據一實施範例的示意圖,說明一Xen虛擬機器監視器的排程邏輯。
第九圖是分別使用多呼叫方法、以及本揭露的DLH機制在兩個VCPU、四個VCPU、以及八個VCPU的環境下,完成50000個超級呼叫的執行時間的實驗結果。
第十圖是對虛擬電腦域,量測一多核心系統中多呼叫方法、以及本揭露的DLH機制對於多執行緒程式的影響。
312...中斷處理器
314...排程器
DLH...可延遲低負擔超級呼叫
VCPU...虛擬中央處理單元
320...DLH模組
322...可延遲型超級呼叫H1-H6
324...VCPU內文
H...一超級呼叫常式
355...虛擬機器將一超級呼叫常式插入於自己的DLH佇列中

Claims (24)

  1. 一種管理一虛擬機器監視器中超級呼叫的裝置,該裝置適應於備有一中斷處理器和一排程器的該虛擬機器監視器,該裝置包含:一可延遲低負擔超級呼叫模組,當多個虛擬機器的每一虛擬機器初始化時,該可延遲低負擔超級呼叫模組被配置來指派一個別的可延遲低負擔超級呼叫佇列給該虛擬機器,其中在一個別的可延遲低負擔超級呼叫佇列中的每一元素代表一超級呼叫常式;其中,當該多個虛擬機器中有一正在運行的虛擬機器通知該中斷處理器有一或多個可延遲型超級呼叫要執行時,該中斷處理器保存該正在運行的虛擬機器的虛擬中央處理單元內文,並且該排程器選擇至少一虛擬中央處理單元並將該至少一虛擬中央處理單元指派給該虛擬機器,以在至少一實體中央處理單元中執行,並且在回存該虛擬中央處理單元內文至具有該至少一虛擬中央處理單元的該虛擬機器之前,該可延遲低負擔超級呼叫模組執行被插入在具有該至少一虛擬中央處理單元的該虛擬機器的一相對應的可延遲低負擔超級呼叫佇列中的該一或多個可延遲型超級呼叫。
  2. 如申請專利範圍第1項所述之裝置,其中該虛擬中央處理單元內文是在該至少一虛擬中央處理單元上運行的資訊內容。
  3. 如申請專利範圍第1項所述之裝置,其中該可延遲低負擔超級呼叫模組以及該虛擬機器監視器是以一或多個 積體電路來實現。
  4. 如申請專利範圍第1項所述之裝置,該裝置包含一個或多個處理器以執行一或多個該可延遲低負擔超級呼叫模組的功能。
  5. 如申請專利範圍第1項所述之裝置,其中被指派給該多個虛擬機器的所有個別的可延遲低負擔超級呼叫佇列被維護在該虛擬機器監視器中。
  6. 如申請專利範圍第1項所述之裝置,其中該一或多個可延遲型超級呼叫係執行於一單核心系統或一多核心系統。
  7. 如申請專利範圍第1項所述之裝置,其中當該虛擬機器正在運行時,它藉由一正常超級呼叫將該一或多個可延遲型超級呼叫插入於該相對應的可延遲低負擔超級呼叫佇列。
  8. 一種虛擬機器監視器,用來管理在一虛擬環境中超級呼叫,該虛擬機器監視器包含:一可延遲低負擔超級呼叫模組,當多個虛擬機器的每一虛擬機器初始化時,該可延遲低負擔超級呼叫模組被配置來指派一個別的可延遲低負擔超級呼叫佇列給該虛擬機器,其中該個別的可延遲低負擔超級呼叫佇列被維護在該虛擬機器監視器裡,該個別的可延遲低負擔超級呼叫佇列中的每一元素代表一超級呼叫常式;一排程器;以及一中斷處理器;其中,當該多個虛擬機器中有一正在運行的虛擬機器通 知該中斷處理器有一或多個可延遲型超級呼叫要執行時,該中斷處理器保存該正在運行的虛擬機器的虛擬中央處理單元內文,並且該排程器選擇至少一虛擬中央處理單元並將該至少一虛擬中央處理單元指派給該虛擬機器,以在至少一實體中央處理單元中執行,並且在回存虛擬中央處理單元內文至具有至少一虛擬中央處理單元的虛擬機器之前,該可延遲低負擔超級呼叫模組執行被插入在具有該至少一虛擬中央處理單元的該虛擬機器的一相對應的可延遲低負擔超級呼叫佇列中的該一或多個可延遲型超級呼叫。
  9. 如申請專利範圍第8項所述之虛擬機器監視器,其中該可延遲低負擔超級呼叫模組、該中斷處理器、以及該排程器是以一或多個硬體組件來實現。
  10. 如申請專利範圍第8項所述之虛擬機器監視器,該虛擬機器監視器包含一或多個處理器來執行該可延遲低負擔超級呼叫模組、該中斷處理器、以及該排程器的一或多個功能。
  11. 如申請專利範圍第8項所述之虛擬機器監視器,其中該一或多個可延遲型超級呼叫係執行於一單核心系統或一多核心系統。
  12. 如申請專利範圍第11項所述之虛擬機器監視器,其中該一或多個可延遲型超級呼叫是在該多核心系統中的多個可用的實體中央處理單元上,以平行方式被執行。
  13. 如申請專利範圍第8項所述之虛擬機器監視器,其中當該多個虛擬機器的每一虛擬機器正在運行時,該虛擬機 器將一或多個可延遲型超級呼叫插入到自己的可延遲低負擔超級呼叫佇列。
  14. 如申請專利範圍第8項所述之虛擬機器監視器,其中一中斷發生以通知該中斷處理器有該一或多個可延遲型超級呼叫要被執行。
  15. 一種管理一虛擬機器監視器中超級呼叫的方法,該虛擬機器監視器至少包括一中斷處理器以及一排程器,該方法是實現於一電腦系統,並且包含以下電腦可執行的行為:當多個虛擬機器的每一虛擬機器初始化時,指派一個別的可延遲低負擔超級呼叫佇列給該虛擬機器,其中在一個別的可延遲低負擔超級呼叫佇列中的每一元素代表一個超級呼叫常式;當該多個虛擬機器中有一正在運行的虛擬機器通知該中斷處理器有一或多個可延遲型超級呼叫要執行時,該中斷處理器保存該正在運行的虛擬機器的虛擬中央處理單元內文,並且該排程器選擇至少一虛擬中央處理單元並將該至少一虛擬中央處理單元指派給該虛擬機器,以在至少一實體中央處理單元中執行;以及在回存該虛擬中央處理單元內文至具有該至少一指派之虛擬中央處理單元的虛擬機器之前,執行被插入在指派給具有該至少一指派之虛擬中央處理單元的該虛擬機器的一相對應的可延遲低負擔超級呼叫佇列中的該一或多個可延遲型超級呼叫。
  16. 如申請專利範圍第15項所述之方法,該方法適應於具 有一可延遲低負擔超級呼叫模組、該中斷處理器、以及該排程器的該虛擬機器監視器,以處理電腦可執行的行為,並且該虛擬機器監視器使用一或多個處理器來實現該可延遲低負擔超級呼叫模組、該中斷處理器、以及該排程器的一或多個功能。
  17. 如申請專利範圍第15項所述之方法,其中該相對應的可延遲低負擔超級呼叫佇列用來緩衝要被執行的該一或多個可延遲型超級呼叫。
  18. 如申請專利範圍第16項所述之方法,其中當該虛擬機器正在運行時,對該多個虛擬機器的每一虛擬機器,該個別的可延遲低負擔超級呼叫佇列被維護於該虛擬機器監視器,以緩衝由該虛擬機器藉由一正常超級呼叫插入的該一或多個可延遲型超級呼叫。
  19. 如申請專利範圍第16項所述之方法,其中該可延遲低負擔超級呼叫模組被配置以一非同步的方式來執行該一或多個可延遲型超級呼叫。
  20. 如申請專利範圍第16項所述之方法,其中當一中斷發生時,該虛擬機器監視器的該中斷處理器儲存該虛擬機器的虛擬中央處理單元內文,該虛擬中央處理單元內文是至少一虛擬中央處理單元上運行的資訊內容。
  21. 如申請專利範圍第20項所述之方法,其中該中斷發生時,根據該虛擬機器監視器的一目前的排程策略來通知該虛擬機器監視器選取一新的虛擬中央處理單元內文。
  22. 如申請專利範圍第21項所述之方法,其中該中斷處理器處理該中斷後,該排程器將該至少一虛擬中央處理單 元指派到該虛擬機器,以在該至少一實體中央處理單元上執行該一或多個可延遲型超級呼叫。
  23. 如申請專利範圍第22項所述之方法,其中回存該虛擬中央處理單元內文到該虛擬機器之前,該可延遲低負擔超級呼叫模組檢查該相對應的可延遲低負擔超級呼叫佇列中是否有任何可延遲型超級呼叫,而當有任何可延遲型超級呼叫時,該可延遲低負擔超級呼叫模組在該至少一實體中央處理單元上執行該一或多個可延遲型超級呼叫。
  24. 如申請專利範圍第23項所述之方法,其中執行該一或多個可延遲型超級呼叫完成後,該虛擬機器監視器將該虛擬中央處理單元內文回存至該虛擬機器。
TW100137159A 2011-05-14 2011-10-13 管理一虛擬機器監視器中超級呼叫的裝置與方法以及虛擬機器監視器 TWI454933B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161486255P 2011-05-14 2011-05-14
US13/226,900 US8635615B2 (en) 2011-05-14 2011-09-07 Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof

Publications (2)

Publication Number Publication Date
TW201245975A TW201245975A (en) 2012-11-16
TWI454933B true TWI454933B (zh) 2014-10-01

Family

ID=47142772

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100137159A TWI454933B (zh) 2011-05-14 2011-10-13 管理一虛擬機器監視器中超級呼叫的裝置與方法以及虛擬機器監視器

Country Status (3)

Country Link
US (1) US8635615B2 (zh)
CN (1) CN102789395B (zh)
TW (1) TWI454933B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120198431A1 (en) * 2011-01-30 2012-08-02 Lin Qiangmin Method for upgrading hypervisor component and computer system
CN103064746B (zh) * 2013-01-23 2015-08-12 上海交通大学 基于当前credit进行预测调度的处理器资源精确分配方法
WO2014120157A1 (en) * 2013-01-30 2014-08-07 Empire Technology Development Llc Dynamic reconfiguration of programmable hardware
US9697027B1 (en) * 2013-07-02 2017-07-04 Ca, Inc. Hypercall-based security for hypervisors
TWI573024B (zh) * 2013-07-23 2017-03-01 中華電信股份有限公司 雲端自動同步系統與雲端自動同步方法
CN104516773B (zh) * 2013-09-29 2018-04-20 国际商业机器公司 用于物理机的数据分配方法和数据分配装置
US9727357B2 (en) * 2013-10-01 2017-08-08 International Business Machines Corporation Failover detection and treatment in checkpoint systems
US9823842B2 (en) 2014-05-12 2017-11-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
US9697029B2 (en) 2014-10-30 2017-07-04 Red Hat Israel, Ltd. Guest idle based VM request completion processing
CN105518746B (zh) 2014-12-24 2018-12-04 英特尔公司 混合请求式图形转换表影子化
CN108009007B (zh) * 2016-10-27 2021-01-15 华为技术有限公司 轻量级线程的调度方法及协同管理器、vCPU调度器
US10810032B2 (en) * 2017-02-22 2020-10-20 Red Hat, Inc. System and method for dynamic guest-controlled halt polling using a CPU governor
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
CN108874534B (zh) * 2018-04-18 2022-09-16 华为技术有限公司 一种pcpu资源的调度方法和装置
CN111459620B (zh) * 2020-04-08 2023-07-25 孙宇霖 安全容器操作系统到虚拟机监控器的信息调度方法
JP7451438B2 (ja) * 2021-01-22 2024-03-18 株式会社東芝 通信装置、通信システム、通知方法及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354663A (zh) * 2007-07-25 2009-01-28 联想(北京)有限公司 应用于虚拟机系统的真实cpu资源的调度方法及调度装置
US20100077394A1 (en) * 2008-09-19 2010-03-25 Microsoft Corporation Coalescing periodic timer expiration in guest operating systems in a virtualized environment
US20110078361A1 (en) * 2009-09-30 2011-03-31 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment
CN102016800A (zh) * 2008-04-28 2011-04-13 国际商业机器公司 将多个逻辑分区对接到自虚拟输入/输出设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7434003B2 (en) 2005-11-15 2008-10-07 Microsoft Corporation Efficient operating system operation on a hypervisor
US7975908B1 (en) 2005-12-20 2011-07-12 Diebold Self-Service Systems Division Of Diebold, Incorporated Cash dispensing automated banking machine system and method
CN100547571C (zh) * 2006-08-29 2009-10-07 联想(北京)有限公司 一种虚拟机系统及其硬件设备中断处理方法
US7765374B2 (en) 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
US8453143B2 (en) * 2007-09-19 2013-05-28 Vmware, Inc. Reducing the latency of virtual interrupt delivery in virtual machines
JP4468426B2 (ja) * 2007-09-26 2010-05-26 株式会社東芝 高可用システム及び実行状態制御方法
US8539499B1 (en) * 2008-02-18 2013-09-17 Parallels IP Holdings GmbH Symmetric multiprocessing with virtual CPU and VSMP technology
KR20090108868A (ko) 2008-04-14 2009-10-19 삼성전자주식회사 가상 머신 관리 시스템 및 그의 프로세서 자원 관리방법
US9201673B2 (en) 2008-07-30 2015-12-01 Microsoft Technology Licensing, Llc Efficient detection and response to spin waits in multi-processor virtual machines
CN101968749B (zh) 2010-09-26 2013-01-02 华中科技大学 虚拟机过度分配环境下的mpi消息接收方法
US8417862B2 (en) * 2010-10-13 2013-04-09 Lsi Corporation Inter-virtual machine interrupt coalescing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354663A (zh) * 2007-07-25 2009-01-28 联想(北京)有限公司 应用于虚拟机系统的真实cpu资源的调度方法及调度装置
CN102016800A (zh) * 2008-04-28 2011-04-13 国际商业机器公司 将多个逻辑分区对接到自虚拟输入/输出设备
US20100077394A1 (en) * 2008-09-19 2010-03-25 Microsoft Corporation Coalescing periodic timer expiration in guest operating systems in a virtualized environment
US20110078361A1 (en) * 2009-09-30 2011-03-31 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment

Also Published As

Publication number Publication date
CN102789395B (zh) 2014-11-05
US8635615B2 (en) 2014-01-21
TW201245975A (en) 2012-11-16
CN102789395A (zh) 2012-11-21
US20120291027A1 (en) 2012-11-15

Similar Documents

Publication Publication Date Title
TWI454933B (zh) 管理一虛擬機器監視器中超級呼叫的裝置與方法以及虛擬機器監視器
Tanasic et al. Enabling preemptive multiprogramming on GPUs
US7870553B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7836450B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7676664B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
EP2191369B1 (en) Reducing the latency of virtual interrupt delivery in virtual machines
EP3039540B1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
Lackorzyński et al. Flattening hierarchical scheduling
Song et al. Schedule processes, not VCPUs
Cheng et al. vScale: Automatic and efficient processor scaling for SMP virtual machines
Pan et al. Hypervisor support for efficient memory de-duplication
Li et al. A light-weighted virtualization layer for multicore processor-based rich functional embedded systems
Lackorzynski et al. Predictable low-latency interrupt response with general-purpose systems
US8424013B1 (en) Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt
Lee et al. Minimizing scheduling delay for multimedia in xen hypervisor
Saranya et al. An implementation of partitioned scheduling scheme for hard real-time tasks in multicore linux with fair share for linux tasks
Lackorzynski et al. Combining predictable execution with full-featured commodity systems
US8533696B1 (en) Methods and systems for allocating hardware resources to instances of software images
Rothberg Interrupt handling in Linux
Tsai et al. A Hardwired Priority-Queue Scheduler for a Four-Core Java SoC
Mitake et al. Light-weighted virtualization layer for multicore processor-based embedded systems
Silambarasan Handling of Priority Inversion Problem in RT-Linux using Priority Ceiling Protocol
Shinde et al. Concurrency Aware Dynamic Scheduler for Virtualized Environment
Selcuk Lock Holder Preemption Problem in Multiprocessor Virtualization
PAPADIMITRIOU et al. A COMPARATIVE THEORETICAL AND BENCHMARKING EVALUATION OF MODERN OPERATING SYSTEM KERNELS