亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于硬件輔助技術(shù)和虛擬cpu運(yùn)行狀態(tài)的直接中斷遞交方法

文檔序號(hào):10724711閱讀:489來源:國(guó)知局
基于硬件輔助技術(shù)和虛擬cpu運(yùn)行狀態(tài)的直接中斷遞交方法
【專利摘要】本發(fā)明公開了一種基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,其特征在于:當(dāng)SRIOV直接分配設(shè)備利用MSI/MSI?X機(jī)制向虛擬機(jī)產(chǎn)生一個(gè)物理中斷后,通過分析該虛擬機(jī)當(dāng)前所有虛擬CPU的運(yùn)行狀態(tài)和歷史運(yùn)行數(shù)據(jù),利用APICv硬件技術(shù)和Posted Interrupt硬件技術(shù)在不引起VM exit的情況下將該物理中斷直接遞交至目前正在運(yùn)行的或者即將最先被調(diào)度的虛擬CPU上,從而避免VM exit帶來的上下文交換負(fù)載和虛擬CPU調(diào)度不均引起的中斷延時(shí),有效提高虛擬環(huán)境下的中斷處理效率,獲得整體性能的提升。
【專利說明】
基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及虛擬機(jī)中斷控制領(lǐng)域,尤其涉及一種基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法。
【背景技術(shù)】
[0002]虛擬化技術(shù)是當(dāng)前云計(jì)算基礎(chǔ)設(shè)施架構(gòu)的重要支撐技術(shù)之一,通過在原有的硬件層和操作系統(tǒng)層之間增加一層虛擬機(jī)管理層,虛擬化技術(shù)將下層硬件資源進(jìn)行整合抽象并以虛擬資源的形式提供給上層虛擬機(jī)使用并確保各個(gè)虛擬機(jī)之間的隔離性和安全性,允許物理機(jī)上的物理資源(CPU,內(nèi)存,磁盤等)在各個(gè)虛擬機(jī)上的復(fù)用,進(jìn)而降低運(yùn)作成本,提高物理資源利用率。現(xiàn)有的云計(jì)算數(shù)據(jù)中心使用虛擬機(jī)管理軟件,比如VMware,Virtual PC,Virtual Server,Xen,KVM以及Hyper-V,來確保服務(wù)器的穩(wěn)定性、資源管理的靈活性、良好的虛擬機(jī)熱迀移屬性和雙機(jī)容錯(cuò)性。
[0003]基于x86指令集本身的局限,現(xiàn)有的虛擬化技術(shù)根據(jù)對(duì)虛擬機(jī)操作系統(tǒng)的修改程度可分為三種:全虛擬化,半虛擬化和硬件輔助虛擬化。全虛擬化技術(shù)無需修改虛擬機(jī)操作系統(tǒng),當(dāng)虛擬機(jī)涉及敏感指令操作時(shí)將其“陷入”到虛擬機(jī)管理層,由虛擬機(jī)管理軟件進(jìn)行模擬操作;半虛擬化技術(shù)采用更為主動(dòng)地方法,通過修改虛擬機(jī)操作系統(tǒng)代碼,將敏感指令操作修改為對(duì)虛擬機(jī)管理軟件的超級(jí)調(diào)用,由虛擬機(jī)管理軟件來控制這些操作;硬件輔助虛擬化采用全新的理念,通過為處理器引入新的運(yùn)行模式和指令,使虛擬機(jī)管理軟件和虛擬機(jī)操作系統(tǒng)處于特權(quán)不同的兩種操作模式下,虛擬機(jī)操作系統(tǒng)處于特權(quán)較低的受控模式,涉及到敏感指令的操作在受控模式下會(huì)陷入到虛擬機(jī)管理軟件,極大的提高的虛擬機(jī)運(yùn)行效率。目前最為流行的硬件輔助技術(shù)是Intel VT-x技術(shù),增加了虛擬機(jī)管理軟件所處的根(Root)模式和虛擬機(jī)操作系統(tǒng)所處的非根(Non-root)模式。硬件輔助虛擬化技術(shù)既能不修改虛擬機(jī)操作系統(tǒng)又能實(shí)現(xiàn)高效地操作系統(tǒng)轉(zhuǎn)換問題,已經(jīng)成為了未來的發(fā)展趨勢(shì)。
[0004]虛擬化環(huán)境下的中斷架構(gòu)與物理環(huán)境下的相同,虛擬機(jī)管理軟件為每個(gè)虛擬CPU維護(hù)了一個(gè)本地虛擬中斷控制器(Advanced Programmable Interrupt Controller)用來遞交和處理中斷。目前最新的中斷產(chǎn)生機(jī)制是MSI(Message Signaled Interrupt)和它的擴(kuò)展MS1-X機(jī)制,1/0設(shè)備使用MSI地址和MSI數(shù)據(jù)通過一個(gè)特定的寫操作向虛擬機(jī)發(fā)出IRQ請(qǐng)求,虛擬機(jī)收到以后再將該寫操作轉(zhuǎn)化成中斷并遞交給目的虛擬CPU的中斷控制器(LAPIC) ο
[0005]基于x86現(xiàn)有架構(gòu)的限制,SR10V(Single_Root1/0 Virtualizat1n)直接分配設(shè)備通過MSI/MS1-X機(jī)制產(chǎn)生的物理中斷會(huì)被虛擬機(jī)管理軟件(以下簡(jiǎn)稱VMM)截獲并導(dǎo)致運(yùn)行該虛擬機(jī)的虛擬CPU產(chǎn)生VM-exit操作。VMM通過修改為該虛擬機(jī)維護(hù)的虛擬中斷控制寄存器的值在下次VM entry時(shí)將虛擬中斷注入到該虛擬機(jī)中。當(dāng)虛擬機(jī)處理完中斷后又要通知虛擬中斷控制器End Of Interrupt信息,該特權(quán)操作會(huì)引起第二次VM exit。值得注意的是,每次VM exit涉及的控制流的轉(zhuǎn)移都會(huì)帶來巨大的上下文切換開銷,從而造成中斷處理效率的下降和延遲的增加。另外,在目前被廣泛使用的對(duì)稱多處理架構(gòu)中,每個(gè)虛擬機(jī)持有多個(gè)虛擬CPU,VMM調(diào)度器需要全局動(dòng)態(tài)的調(diào)度各個(gè)虛擬CPU運(yùn)行在物理CPU上,如果一個(gè)處于等待調(diào)度狀態(tài)的虛擬CPU接收到中斷請(qǐng)求,那必然會(huì)增加該中斷的處理延時(shí)。綜上所述,從I/O設(shè)備產(chǎn)生中斷到最終的中斷處理函數(shù)被觸發(fā)需要經(jīng)過很長(zhǎng)一段時(shí)間,VM-exit和虛擬(PU調(diào)度延時(shí)是造成I/O虛擬化瓶頸的重要原因。
[0006]現(xiàn)有的一些硬件技術(shù)可以通過消除VM exit數(shù)量在一定程度上降低I/O處理延遲,最新的Intel APICv技術(shù)和Posted-1nterrupt機(jī)制將原有的由VMM為各個(gè)虛擬機(jī)維護(hù)的虛擬中斷控制單元實(shí)現(xiàn)在硬件層面并將其直接映射到為虛擬機(jī)維護(hù)的虛擬APIC頁內(nèi),由硬件直接遞交中斷。APICv技術(shù)雖然可以消除VM exit,但在硬件層面進(jìn)行中斷遞交時(shí)沒有考慮當(dāng)前目的虛擬CPU的運(yùn)行狀態(tài),所以由于虛擬CPU調(diào)度不及時(shí)引起的中斷延時(shí)仍然存在。因此在實(shí)際的系統(tǒng)中仍然存在相當(dāng)?shù)木窒扌浴?br>[0007]因此,本領(lǐng)域的技術(shù)人員致力于開發(fā)一種基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,用來解決現(xiàn)有的虛擬機(jī)中斷遞交和處理機(jī)制缺陷造成的I/o響應(yīng)延遲以及虛擬CPU負(fù)載過高的問題。

【發(fā)明內(nèi)容】

[0008]有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是虛擬機(jī)中斷遞交和處理機(jī)制缺陷造成的I/o響應(yīng)延遲以及虛擬CPU負(fù)載過高。
[0009]為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,包括如下步驟:
[0010]步驟I:當(dāng)SR1V直接分配設(shè)備通過MSI/MS1-X機(jī)制產(chǎn)生一個(gè)物理中斷后,所述物理中斷首先經(jīng)由1MMU進(jìn)行中斷重映射,然后由硬件通過直接修改虛擬中斷目的虛擬CPU的PID對(duì)應(yīng)位;
[0011]步驟2:VMM使用特定的中斷向量向目的虛擬CPU所在的物理CPU發(fā)送通知事件告知所述物理中斷的到來;
[0012]步驟3:物理CPU收到所述通知事件并從所述PID里取出所述物理中斷的信息進(jìn)行處理;
[0013]步驟4:中斷遞交器在所述物理中斷被遞交到目的虛擬CPU之前將所述物理中斷攔截;
[0014]步驟5:所述中斷遞交器根據(jù)VMM調(diào)度器中該虛擬機(jī)的所有虛擬CPU的調(diào)度信息,動(dòng)態(tài)確定出該虛擬機(jī)當(dāng)前正在運(yùn)行的虛擬CPU,如果沒有,則選擇即將最先被調(diào)度的虛擬CPU;
[0015]步驟6:所述中斷遞交器通知硬件根據(jù)步驟I將所述物理中斷直接遞交至步驟5中選擇的虛擬CPU,并依次執(zhí)行步驟2和步驟3。
[0016]進(jìn)一步地,所述步驟2前插入
[0017]步驟2-1:將所述物理中斷信息直接寫入硬件為各個(gè)虛擬CHJ維護(hù)的虛擬APIC頁內(nèi)。
[0018]進(jìn)一步地,所述步驟5中所述動(dòng)態(tài)確定采用基于KVM的CFS調(diào)度算法。
[0019]進(jìn)一步地,所述步驟5只記錄中斷遞交時(shí)正在運(yùn)行的虛擬CPU,并不改動(dòng)VMM或虛擬機(jī)操作系統(tǒng),對(duì)虛擬機(jī)完全透明。
[0020]本發(fā)明提供一種基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,利用最新的APICv硬件技術(shù)和Posted Interrupt機(jī)制,結(jié)合對(duì)虛擬CPU的運(yùn)行狀態(tài)的全局把握與分析,將中斷直接遞交到正在運(yùn)行的或離物理CPU最近的虛擬CPU上,同時(shí)考慮各個(gè)虛擬CPU的中斷處理負(fù)載均衡,有效的降低了從中斷產(chǎn)生到中斷處理函數(shù)被觸發(fā)之間的延時(shí),提高虛擬化環(huán)境下的中斷處理效率。
[0021]與現(xiàn)有技術(shù)相比,本發(fā)明提供的基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法具有以下有益的技術(shù)效果:
[0022](I)利用最新的硬件輔助技術(shù),將中斷信息直接寫入硬件為各個(gè)虛擬CPU維護(hù)的虛擬APIC頁內(nèi),再由VMM所在的物理CPU向中斷目的虛擬CPU所在的物理CPU發(fā)送通知事件,減少了傳統(tǒng)中斷處理過程帶來的多次VM exit操作,極大地降低了中斷延時(shí),獲得了整體性能的提升。
[0023](2)基于KVM的CFS(Completely Fair Schedule)調(diào)度算法將每個(gè)虛擬CPU視為普通進(jìn)程進(jìn)行完全公平的調(diào)度,引入“虛擬運(yùn)行時(shí)間”概念,采用紅黑樹來構(gòu)建一個(gè)未來的進(jìn)程執(zhí)行的“時(shí)間軸”并且根據(jù)進(jìn)程已經(jīng)占用的CPU時(shí)間來動(dòng)態(tài)更新紅黑樹的鍵值,每次挑選樹中處于最左邊的虛擬CPU進(jìn)程執(zhí)行的特點(diǎn),將物理中斷信息直接遞交至該虛擬機(jī)當(dāng)前正在運(yùn)行的虛擬CPU,從而進(jìn)一步中斷目的CPU調(diào)度不當(dāng)引起的中斷處理延時(shí)。
[0024](3)由于本發(fā)明的方案只需要記錄中斷遞交時(shí)正在運(yùn)行的虛擬CPU,并不要求VMM或虛擬機(jī)操作系統(tǒng)的其他改動(dòng),對(duì)虛擬機(jī)完全透明。
[0025](4)虛擬化環(huán)境下的中斷處理時(shí)造成I/O虛擬化瓶頸的重要原因,本發(fā)明有效消除了從中斷產(chǎn)生到具體中斷處理函數(shù)被調(diào)用之間的所有延時(shí),使得虛擬機(jī)的I/O響應(yīng)速率得到很大提尚。
[0026]以下將結(jié)合附圖對(duì)本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進(jìn)一步說明,以充分地了解本發(fā)明的目的、特征和效果。
【附圖說明】
[0027]圖1是傳統(tǒng)的虛擬化環(huán)境下的中斷處理流程示意圖;
[0028]圖2是虛擬化環(huán)境下基于硬件輔助技術(shù)的中斷處理流程示意圖;
[0029]圖3是本發(fā)明的一個(gè)較佳實(shí)施例的虛擬化環(huán)境下中斷處理流程示意圖。
【具體實(shí)施方式】
[0030]以下將結(jié)合附圖對(duì)本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進(jìn)一步說明,以充分地了解本發(fā)明的目的、特征和效果。
[0031]圖1是傳統(tǒng)的虛擬化環(huán)境下的中斷處理流程示意圖。在虛擬化環(huán)境下,SR1V直接分配設(shè)備通過MSI/MS1-X機(jī)制產(chǎn)生的物理中斷會(huì)被VMM截獲并導(dǎo)致運(yùn)行該虛擬機(jī)的虛擬CPU產(chǎn)生VM-exit操作。VMM通過修改為該虛擬機(jī)維護(hù)的虛擬中斷控制寄存器和VMCS( VirtualMachine Control Structure)的值在下次VM entry時(shí)將虛擬中斷注入到該虛擬機(jī)中。當(dāng)虛擬機(jī)處理完中斷后又要通知虛擬中斷控制器End Of Interrupt信息,該特權(quán)操作會(huì)引起第二次VM exit。最后VMM完成EOI寫操作并重啟虛擬機(jī)。
[0032]圖2是虛擬化環(huán)境下基于硬件輔助技術(shù)的中斷處理流程示意圖;APICv技術(shù)為在每個(gè)虛擬機(jī)的VMCS數(shù)據(jù)結(jié)果中維護(hù)了一個(gè)虛擬APIC頁和Posted Interrupt Descriptor描述符,將原有的由VMM為每個(gè)虛擬機(jī)維護(hù)的虛擬中斷控制器實(shí)現(xiàn)在了硬件層面,當(dāng)SR1V直接分配設(shè)備通過MSI/MS1-X機(jī)制產(chǎn)生一個(gè)物理中斷后,該中斷直接由硬件遞交至目的虛擬CPU并修改該虛擬機(jī)的的PID(Posted Interrupt Descriptor)對(duì)應(yīng)位,同時(shí)由VMM向該虛擬CPU所在的物理CPU發(fā)出一個(gè)特殊的事件通知中斷的到來,最后虛擬機(jī)從該頁中取出中斷信息直接進(jìn)行處理。
[0033]圖3是本發(fā)明的一個(gè)實(shí)施例的虛擬化環(huán)境下中斷處理流程示意圖。與現(xiàn)有的虛擬化環(huán)境下中斷處理流程相比,本實(shí)施例的中斷處理流程中采用了最新的APICv硬件輔助技術(shù),并在硬件層面與虛擬機(jī)之間增加了中斷遞交器。
[0034]中斷遞交器從VMM的調(diào)度器中(本發(fā)明采用KVM的CFS調(diào)度器)獲得當(dāng)前中斷目的虛擬機(jī)的所有虛擬CHJ的運(yùn)行狀態(tài)和調(diào)度信息。當(dāng)SR1V直接分配設(shè)備通過MSI/MS1-X機(jī)制產(chǎn)生一個(gè)物理中斷后,中斷遞交器截獲此中斷,通過從調(diào)度器里獲得的虛擬CPU的運(yùn)行信息,直接將中斷遞交至當(dāng)前正在運(yùn)行的虛擬CPU上,即修改該虛擬CPU的PID(Posted InterruptDescriptor)對(duì)應(yīng)位,同時(shí)由VMM向該虛擬CPU所在的物理CPU發(fā)出一個(gè)特殊的事件通知中斷的到來,最后虛擬機(jī)從該頁中取出中斷信息直接進(jìn)行處理。
[0035]本發(fā)明基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法具體步驟如下:
[0036]步驟1:當(dāng)SR1V直接分配設(shè)備通過MSI/MS1-X機(jī)制產(chǎn)生一個(gè)物理中斷后(如果是SR1V直接分配設(shè)備產(chǎn)生的中斷,需要經(jīng)由1MMU進(jìn)行中斷重映射),由硬件直接修改虛擬中斷目的虛擬CPU的PID(Posted Interrupt Descriptor)對(duì)應(yīng)位從而將該中斷遞交至目的虛擬 CPU;
[0037]步驟2:VMM使用特定的中斷向量(Notificat1n Event Vector)向目的虛擬CPU所在的物理CPU發(fā)送通知事件告知中斷到來;
[0038]步驟3:物理CPU收到通知并從PID(Posted Interrupt Descriptor)里取出中斷信息進(jìn)行處理;
[0039]步驟4:中斷遞交器在物理中斷被遞交到目的虛擬CPU之前將物理中斷攔截;
[0040]步驟5:中斷遞交器根據(jù)VMM調(diào)度器中該虛擬機(jī)的所有虛擬CPU的調(diào)度信息,動(dòng)態(tài)確定出該虛擬機(jī)當(dāng)前正在運(yùn)行的虛擬CPU,如果當(dāng)前沒有虛擬CPU在運(yùn)行,選擇即將最先被調(diào)度的虛擬CPU;
[0041]步驟6:中斷遞交器通知硬件根據(jù)步驟I將中斷直接遞交至步驟5中選擇的虛擬CPU,并依次執(zhí)行步驟2、3;
[0042]本發(fā)明提供的基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,利用最新的APICv硬件技術(shù),將中斷信息直接寫入硬件為各個(gè)虛擬CPU維護(hù)的虛擬APIC頁內(nèi),再由VMM所在的物理CPU向中斷目的虛擬CPU所在的物理CPU發(fā)送通知事件,減少了傳統(tǒng)中斷處理過程帶來的多次VM exit操作?;贙VM的CFS(Completely Fair Schedule)調(diào)度算法將物理中斷信息直接遞交至該虛擬機(jī)當(dāng)前正在運(yùn)行的虛擬CPU,本發(fā)明有效消除了從中斷產(chǎn)生到具體中斷處理函數(shù)被調(diào)用之間的所有延時(shí),使得虛擬機(jī)的I/o響應(yīng)速率得到很大提高,獲得了整體性能的提升。
[0043]以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)無需創(chuàng)造性勞動(dòng)就可以根據(jù)本發(fā)明的構(gòu)思作出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實(shí)驗(yàn)可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,其特征在于,包括如下步驟: 步驟I:當(dāng)SR1V直接分配設(shè)備通過MSI/MS1-X機(jī)制產(chǎn)生一個(gè)物理中斷后,所述物理中斷首先經(jīng)由1MMU進(jìn)行中斷重映射,然后由硬件直接修改中斷目的虛擬CPU的PID對(duì)應(yīng)位; 步驟2:VMM使用特定的中斷向量向目的虛擬CPU所在的物理CPU發(fā)送通知事件告知所述物理中斷的到來; 步驟3:物理CPU收到所述通知事件并從所述PID里取出所述物理中斷的信息進(jìn)行處理; 步驟4:中斷遞交器在所述物理中斷被遞交到目的虛擬CPU之前將所述物理中斷攔截; 步驟5:所述中斷遞交器根據(jù)VMM調(diào)度器中該虛擬機(jī)的所有虛擬CPU的調(diào)度信息,動(dòng)態(tài)確定出該虛擬機(jī)當(dāng)前正在運(yùn)行的虛擬CPU,如果沒有,則選擇即將最先被調(diào)度的虛擬CPU; 步驟6:所述中斷遞交器通知硬件根據(jù)步驟I將所述物理中斷直接遞交至步驟5中選擇的虛擬CPU,并依次執(zhí)行步驟2和步驟3。2.如權(quán)利要求1所述的基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,其特征在于,所述步驟2前插入 步驟2-1:將所述物理中斷信息直接寫入硬件為各個(gè)虛擬CRJ維護(hù)的虛擬APIC頁內(nèi)。3.如權(quán)利要求1所述的基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,其特征在于,所述步驟5中所述動(dòng)態(tài)確定采用基于KVM的CFS調(diào)度算法。4.如權(quán)利要求1所述的基于硬件輔助技術(shù)和虛擬CPU運(yùn)行狀態(tài)的直接中斷遞交方法,其特征在于,所述步驟5只記錄中斷遞交時(shí)正在運(yùn)行的虛擬CPU,并不改動(dòng)VMM或虛擬機(jī)操作系統(tǒng),對(duì)虛擬機(jī)完全透明。
【文檔編號(hào)】G06F9/48GK106095578SQ201610415947
【公開日】2016年11月9日
【申請(qǐng)日】2016年6月14日 公開號(hào)201610415947.8, CN 106095578 A, CN 106095578A, CN 201610415947, CN-A-106095578, CN106095578 A, CN106095578A, CN201610415947, CN201610415947.8
【發(fā)明人】管海兵, 張望, 馬汝輝, 李健, 胡小康
【申請(qǐng)人】上海交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1