中斷處理方法和系統的製作方法
2023-06-19 21:22:21 2
專利名稱:中斷處理方法和系統的製作方法
技術領域:
本發明涉及計算才幾領J或,尤其涉及中斷處理方法和系統。
技術背景目前,虛擬才幾前後端驅動是虛擬才幾共享i殳備常用的架構。以網 卡為例,在絕大部分應用場景,多個虛擬才幾都需要共享網絡。和顯 卡情況不同,即使是在後端,虛擬機也要使用網絡,因此,通用的 ^L法是通過前後端驅動的方式來共享網卡。與Native系統(運4亍在本地才幾器上的本;也系統)馬區動相比,虛 擬機前端或後端(FE/BE )主要不同增加調用VMCall通過虛擬機管 理器(VMM)的共享數據區交換數據的過程,而VMCall因為涉及 CPU運行級別,上下文(Context)的切換,寄存器和內存的切換等 過程,非常消耗CPU的運行時間(一個VMCall需要消耗兩千多個 時鐘周期,而普通指令只需要一個或幾個時鐘周期),對系統的整體 性能影響較大。因此,除了傳統的設備驅動優化手段之外(例如,中斷改輪詢, 鍊表改數組/空間換時間,代碼邏輯優化等),優化虛擬機前端或後 端的主要手^:應該在減少VMCall的調用。如圖1所示,現有的解決方案1是當前虛擬機系統中,Native 設備在接到數據後產生中斷,虛擬機截獲該中斷後設置虛擬CPU中的標誌位,隨後等待GOS (Guest OS ,指的是運行在虛擬機上的客 戶系統)陷入虛擬機中檢查該中斷標誌位的狀態,向虛擬CPU的中 斷相關寄存器寫入相應的值。讓虛擬CPU模擬產生硬體中斷,GOS 得到這個中斷後4艮據IDT表查詢調用中斷處理函悽丈。前端驅動和後l殳驅動和後端驅動的通訊流程基本上如圖2所 示,包括步驟S202,虛擬機接收來自應用程式的數據,同時可以進行必 要的數據檢查或提取(非必要);步驟S204,調用VMCall指令,切換到VMM,把數據拷貝到 共享區中;步-驟S206, VMM通過中斷注入或4妾口調用方式通殺口後端乂人共 享區中讀取數據;步驟S208,後端驅動器從共享H據區獲取並通過真實設備驅動 發送數據。該方案的缺點是每個中斷到來都要經歷這個過程,大量中斷 產生時,GOS性能明顯降低。現有的解決方案2:有少悽t一些i殳備,具有關閉自身中斷的功 能,這些i殳備的驅動,可以通過關閉中斷不斷讀取4t據,當沒有可 用^t據後打開中斷。該方案的缺點是設備需要具備關閉自身中斷的功能,目前僅 少部分^殳備具有此功能。發明內容針對以上一個或多個問題,本發明才是供了中斷處理方法和中斷處理系統,通過動態緩沖區4支術,在減少VMCall調用的同時,兼 顧實時性,減少由於緩沖造成的附加延時,達到吞吐量和延時的平衡。才艮據本發明的中斷處理方法包括以下步驟步驟S402,在虛擬 機中設置緩沖區和定時器,緩衝區用於緩衝虛擬機的前端或後端接 收到的數據包,定時器用於對婆:據緩衝時間進行計時;步驟S404, 緩沖區在接收到來自前端或後端的數據包後,確定所接收到的數據交互數據包的情況下,緩衝區緩存所接收到的數據包並啟動定時器; 以及步驟S406,在緩沖區達到最大容限或定時器達到預定時間的情 況下,通過虛擬機管理器將緩存的數據包發送至虛擬機的後端或前 端以進4於處J裡。在數據包為交互數據包的情況下,緩沖區不對數據包進行緩沖, 直才妄通過虛擬衝幾管理器將H據包發送至前端或後端。根據本發明的中斷處理系統包括至少一個虛擬才幾,包括前端 和後端,用於分別與前端用戶和後端l乘作系統進4亍交互;悽t據緩沖 控制器,用於在來自前端或後端的數據包不是交互數據包的情況下 將數據包緩存到單獨申請的緩沖區中,並且在緩衝區達到預定容限 或用於對數據包緩存時間進行計時的定時器達到預定時間的情況 下,通過虛擬機管理器將緩沖區緩存的數據包發送至前端或後端; 以及虛擬機管理器,用於管理至少一個虛擬機,並轉發所緩存的數 據包。數據緩沖控制器包括數據包判定單元,用於確定來自前端或 後端的數據包是否為交互數據包;緩沖控制單元,用於在數據包為 交互數據包的情況下,指示虛擬機管理器將緩沖區中的數據包發送 至前端或後端;在數據包不為交互數據包的情況下,將數據包緩存 至緩沖區,並在緩衝區中的數據達到預定容限或定時器達到預定時 間的情況下,通過虛擬機管理器將緩衝區中緩存的數據包發送至前 端或後端;以及定時器,用於對數據包緩存的時間進行計時,並且 在達到預定時間後,通知緩衝控制單元。其中,緩衝區可以包括接收緩衝區和發送緩衝區。緩沖區可以 為靜態緩沖區,也可以為動態緩衝區。在本發明中,虛擬才幾的特性決定其可以才艮據力見則控制物理設備 的硬體特性,通過屏蔽設備的中斷改為輪詢來達到高效數據傳輸的 目的。對於目前的虛擬機架構,此種方案帶來的性能提升比較顯著。
此處所說明的附圖用來提供對本發明的進一步理解,構成本申 請的一部分,本發明的示意性實施例及其說明用於解釋本發明,並 不構成對本發明的不當限定。在附圖中圖1是根據現有技術的虛擬機前端後端的驅動架構的示意圖;圖2是根據現有技術的前端和後端的通信過程的示意圖;圖3A和3B是根據本發明的中斷處理系統的框圖;圖4是根據本發明的中斷處理方法的流程圖;以及圖5是根據本發明的數據發送過程的流程圖。
具體實施方式
下面參考附圖,詳細說明本發明的具體實施方式
。本發明的核心思想是通過動態糹爰衝區4支術,在減少VMCall 調用的同時,兼顧實時性,減少由於l^沖造成的附加延時,達到吞 吐量和延時的平tf。圖3A和3B是根據本發明的中斷處理系統的框圖。如圖3A所 示,在虛擬機中增加一個或多個數據緩沖區和一個或多個定時器 (timer), i爰沖來自前端(FE)或後端(BE)的翁:才居。鄉爰沖區4文到 來自前端或是後斷的數據之後,判斷是否是交互數據包決定是否打 開定時器控制開關,如果不是交互數據包,並不立刻調用VMCall, 而是糹爰存本次處理,並通知可以進4於下一步處理;同時,啟動一個 定時器或是順延定時器時間。當收發數據是交互數據包時,採用默 認方式而不使用緩衝區。直到緩沖區到達最大限制或是定時器到時, 調用VMCall,發送悽t4居到後端或前端。本發明的中斷處理系統包括至少一個虛擬機302,包括前端 (302-2和302-4 )和後端(302-6和302-8 ),用於分別與前端用戶 和後端作業系統進行交互;數據緩衝控制器304,用於在來自前端 或後端的數據包不是交互數據包的情況下將數據包緩存到單獨申請 的緩沖區(308-2、 308-4、 308-6、 308-8)中,並且在H沖區達到預 定容限或用於對數據包緩存時間進行計時的定時器達到預定時間的 情況下,通過虛擬機管理器將緩衝區緩存的數據包發送至前端或後 端;以及虛擬才幾管理器306,用於管理至少一個虛擬4幾,並轉發所 緩存的數據包。如圖3B所示,數據緩沖控制器304包括數據包判定單元 304-2,用於確定來自前端或後端的數據包是否為交互數據包;緩沖控制單元304-4,用於在^:據包為交互^t據包的情況下,指示虛擬 機管理器將緩沖區中的數據包發送至前端或後端;在數據包不為交 互數據包的情況下,將數據包緩存至緩沖區,並在緩衝區中的數據 達到預定容限或定時器達到預定時間的情況下,通過虛擬機管理器 將緩衝區中緩存的數據包發送至前端或後端;以及定時器304-6, 用於對^t據包緩存的時間進^f亍計時,並且在達到預定時間後,通知 緩衝控制單元。其中,緩沖區可以包括接收緩衝區和發送緩沖區。緩沖區可以 為l爭態緩沖區,也可以為動態緩沖區。緩沖區的實現方式應該有多種1、 大量數據進行傳輸的時候,數據包隊列最多以IO個數據包 (packet) —個單位,通常的握手信號都是一個數據包進行傳輸。通常數據包發送或接收後會立刻發出中斷信號,本專利的實現方式 是對數據報進行計數,當達到特定的值後在發送中斷,從而減少中 斷提高速度。對於單個數據包的握手信號需要立刻發生中斷,這種 情況可以通過一個定時器來進行控制,收到數據保護到定時器超時 如果還沒有收到第二個悽t據包則立刻產生中斷,保證這種單個交互 數據包的事實性。2、 通過手動申請一段內存作為緩衝區(收發可以分別申請兩個 緩沖區,也可以共用一個緩沖區(buffer )),收發的數據包通過拷貝 或DMA的方式緩沖到這個緩衝區中,因為網絡數據包的特性_ -大量數據傳遞時, 一個數據包中將包含多個數據包(<=10個)。積 攢數據報到一定的數量後發送或接收,或者收到或發送的數據中包 含一個數據包時(說明數據流量小或是交互悽t據包)立刻產生中斷。圖4是根據本發明的中斷處理方法的流程圖。如圖4所示,本 發明的中斷處理方法包括以下步驟步驟S402,在虛擬機中設置緩 衝區和定時器,緩衝區用於緩衝虛擬機的前端或後端接收到的數據 包,定時器用於對數據緩衝時間進行計時;步驟S404,緩沖區在接 收到來自前端或後端的數據包後,確定所接收到的數據包是否是交 互數據包並確定是否啟動或順延定時器,在悽t據包不為交互悽t據包 的情況下,緩衝區緩存所接收到的數據包並啟動定時器;以及步驟 S406,在緩衝區達到最大容限或定時器達到預定時間的情況下,通 過虛擬機管理器將緩存的數據包發送至虛擬4幾的後端或前端以進行 處理。在數據包為交互數據包的情況下,緩衝區不對數據包進行緩沖, 直接通過虛擬機管理器將數據包發送至前端或後端。通過上述方法,可實現數據量大的時候,緩沖區能夠達到其 上限,因為定時器能夠不斷順延,有效減少VMCall的調用次數。 數據量小的時候,緩衝區裡緩沖的數據很少,但是定時器超時,不 會造成太大延時。圖5是根據本發明的數據發送過程的流程圖。如圖5所示,包 4舌以下步艱《步驟S502,緩沖區接收來自前端或後端的數據;步驟S504,確定緩衝區是否已滿,在緩沖區滿的情況下,調用 VMCall並發送悽t^居到前端或後端;;步驟S506,在緩衝區未滿的情況下,繼續緩存數據並通知繼續 發送數據;步-驟S508,啟動或順延定時器;步驟S510,確定定時器是否超時,在未超時的情況下結束;步驟S520,在定時器超時的情況下,調用VMCall並發送ft據。本發明的要點是收發過程中通過緩衝區來對數據包的收發進 行緩衝。主要的目的是通過積攢數據包到一定數目後再去發送或接 收從而減少中斷的發生次數正常的收發過程中 一組數據包的發送和 -接收就會產生一次中斷,而且網卡的中斷是非常頻繁的。通過1£衝 區來減少中斷的次數是關鍵點。本發明的優勢在於虛擬機的特性決定其可以根據規則控制物 理設備的硬體特性,通過屏蔽設備的中斷改為輪詢來達到高效數據 傳輸的目的。顯示的實-驗結果表明,對於目前的虛擬才幾架構,此種 方案帶來的性能提升比較顯著。以上所述僅為本發明的優選實施例而已,並不用於限制本發明, 對於本領域的衝支術人員來說,本發明可以有各種更改和變化。凡在 本發明的精神和原則之內,所作的任何修改、等同替換、改進等, 均應包含在本發明的保護範圍之內。
權利要求
1.一種中斷處理方法,其特徵在於,包括以下步驟步驟S402,在虛擬機中設置緩衝區和定時器,所述緩衝區用於緩衝所述虛擬機的前端或後端接收到的數據包,所述定時器用於對數據緩衝時間進行計時;步驟S404,所述緩衝區在接收到來自所述前端或後端的數據包後,確定所接收到的數據包是否是交互數據包並確定是否啟動或順延所述定時器,在所述數據包不為交互數據包的情況下,所述緩衝區緩存所接收到的數據包並啟動所述定時器;以及步驟S406,在所述緩衝區達到最大容限或所述定時器達到預定時間的情況下,通過虛擬機管理器將緩存的數據包發送至所述虛擬機的後端或前端以進行處理。
2. 根據權利要求1所述的中斷處理方法,其特徵在於,在所述數 據包為交互數據包的情況下,所述緩衝區不對所述數據包進行端或後端。
3. #^居^1利要求2所述的中斷處理方法,其特4正在於,所述^1衝 區包括接收緩沖區和發送緩衝區。
4. 根據權利要求2所述的中斷處理方法,其特徵在於,所述緩衝 區為靜態緩衝區。
5. 根據權利要求1所述的中斷處理方法,其特徵在於,所述緩沖 區為動態緩衝區。
6. —種中斷處理系統,其特4正在於包4舌至少一個虛擬才幾,包4舌前端和後端,用於分別與前端用戶 和後端才喿作系統進行交互;數據緩沖控制器,用於在來自所述前端或所述後端的lt據 包不是交互數據包的情況下將所述數據包緩存到單獨申請的 緩沖區中,並且在所述緩沖區達到預定容限或用於對數據包緩 存時間進行計時的定時器達到預定時間的情況下,通過虛擬枳i 管理器將所述緩衝區緩存的數據包發送至所述前端或所述後 端;以及所述虛擬^L管理器,用於管理所述至少一個虛擬^L,並轉 發所緩存的數據包。
7. 根據權利要求6所述的中斷處理系統,其特徵在於,所述數據 緩衝控制器包括數據包判定單元,用於確定來自所述前端或所述後端的數 據包是否為交互數據包;緩沖控制單元,用於在所述數據包為交互數據包的情況 下,指示所述虛擬機管理器將所述緩沖區中的數據包發送至所 述前端或後端;在所述數據包不為交互數據包的情況下,將所 述數據包緩存至所述緩衝區,並在所述緩沖區中的數據達到預 定容限或所述定時器達到預定時間的情況下,通過所述虛擬機 管理器將所述緩沖區中緩存的數據包發送至所述前端或所述 後端;以及所述定時器,用於對數據包緩存的時間進行計時,並且在 達到所述預定時間後,通知所述緩衝控制單元。
8. 根據權利要求7所述的中斷處理系統,其特徵在於,所述緩衝 區包括接收緩衝區和發送緩沖區。
9. 根據權利要求6至8中任一項所述的中斷處理系統,其特徵在 於,所述緩沖區為靜態緩沖區。
10. 根據權利要求6至8中任一項所述的中斷處理系統,其特徵在於,所述緩沖區為動態緩沖區。
全文摘要
本發明提供了一種中斷處理方法和系統,其中,該方法包括以下步驟步驟S402,在虛擬機中設置緩衝區和定時器,緩衝區用於緩衝虛擬機的前端或後端接收到的數據包,定時器用於對數據緩衝時間進行計時;步驟S404,緩衝區在接收到來自前端或後端的數據包後,確定所接收到的數據包是否是交互數據包並確定是否啟動或順延定時器,在數據包不為交互數據包的情況下,緩衝區緩存所接收到的數據包並啟動定時器;以及步驟S406,在緩衝區達到最大容限或定時器達到預定時間的情況下,通過虛擬機管理器將緩存的數據包發送至虛擬機的後端或前端以進行處理。
文檔編號H04L12/56GK101335694SQ20071011819
公開日2008年12月31日 申請日期2007年6月29日 優先權日2007年6月29日
發明者張冬冬 申請人:聯想(北京)有限公司