?

處理器隔離中的KVM虛擬化技術應用探討

2017-11-15 09:57李慧穎
電腦知識與技術 2017年28期
關鍵詞:隔離處理器

李慧穎

摘要:在計算機硬件不斷發展的過程中,人們對于硬件資源需求的最大化使用也越來越迫切。KVM是一種具有Inter VT技術和QEMU技術的虛擬機,其能夠為設備提供虛擬化技術。該文的主要目的是對KVM虛擬機的創建和運行進行研究,從控制進程方面對KVM虛擬化技術在處理器隔離中的使用進行研究,從而實現處理器資源的最大化使用。

關鍵詞:處理器;隔離;KVM虛擬化技術

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)28-0256-02

虛擬化指的是在物理機中同時運行多個操作系統的技術,現在被廣泛應用到大型主機等平臺中。在社會經濟不斷進步及科學技術不斷發展的過程中,PC的價格在不斷下降,人們也逐漸忘記虛擬化的重要性。在進入到當代世紀中,數據中心技術在不斷發展,虛擬化也逐漸應用到PC領域中,目前在PC平臺中廣泛使用虛擬化技術已經成為了一種趨勢。在大型主機中,虛擬化技術的主要目的為使多個操作系統能夠實現同個主機資源的共享,提高資源的使用率。在此背景下,本文就探討處理器隔離中,KVM虛擬化技術的應用。

1 KVM虛擬機結構及工作原理

KVM虛擬機結構主要包括兩部分內容,第一部分為通過模塊形式集成的Driver,其主要目的就是實現虛擬硬化資源的管理,并且創建字符設備通過相應的結構,實現用戶空間設備的相互通信,還能夠實現虛擬機內存分配及寄存器讀寫、CPU運行等功能。其次就是KQEMU,也就是對于虛擬化的處理器進行修改的QEMU,其主要目的就是實現硬件模擬[1],圖1為KVM虛擬機的結構。

首先實現虛擬機的初始化,之后KVM線程通過ioctl的方式對KVM內核模式進行VCPU指示,之后內核模塊執行虛擬機的進入操作,使處理器的Kernel模式轉變為Guest模式,之后實現客戶機的運行。但是這個時候的虛擬機還是為KVM線程上下文中,并且執行ioctl系統的調用模式處理程序。如果客戶機在運行過程中出現異?;蛘咄獠恐袛嗟臅r候,或者執行I/O操作的時候,就會使虛擬機出現退出操作,從而處理器的狀態也會轉變為Kernrl模式。虛擬機在進行內核檢查過程中出現VM原因,如果是因為I/O操作影響,那么執行系統就會實現返回操作的調用,將其操作交到User模式進行處理,這個時候的KQEMU就會創建全新的線程實現I/O處理,之后實現ioctl的執行,使KVM能夠將處理器切換為Guest模式,并且客戶機也能夠恢復正常的運行。如果VM 是因為其他因素導致,那么就要通過虛擬機內核模塊進行處理,并且在處理之后使處理器切換到Guest模式,從而使客戶機能夠恢復運行。

通過以上分析表示,KVM虛擬機中的物理 CPU能夠實現隔離,和線程、應用程序及異步I/O事件具有密切的關系[2]。

2 處理器隔離中KVM 虛擬化技術的實現

2.1 設計隔離方案

KVM虛擬機運行時候和處理器具有密切聯系的數據結構在內存中保存,主要包括虛擬CPU中的寄存器內容及控制信息,不同數據結構具有相互對應的虛擬CPU,但是因為數據結構具有一定的遷移性,在使用過程中要和物理CPU相互綁定。比如,數據結構和CPU1進行綁定,并且在某一個時刻將這個綁定關系進行解除,在另外一個時刻對CPU2進行重新的綁定。在不同時刻中,數據結構和物理CPU的綁定關系是一對一的,也就是每個數據結構都只能夠綁定一個物理CPU。那么在多核條件中要想能夠在同個虛擬單核平臺中運行,就要重新考慮KQEMS的線程、應用程序、CPU及異步事件的處理關系。通過CPU的親和性及設置屬性,能夠將Guest進程在指定核中進行綁定,以此創建單核虛擬平臺。比如在創建虛擬機過程中將Guest進程綁定到CPU核中,使其能夠在運行過程中不出現遷移現象,圖2為客戶操作系統和CPU核綁定的情況。

分析KVM虛擬機的原理及機制,能夠通過以下方面進行綁定操作:

其一,通過內核函數直接對Guest進程屬性進行設置,以此實現Guest在指定核中的運行。通過腳本文件的編寫,從而自動實現虛擬機的創建及綁定操作;

其二,對KQEMN源代碼進行修改和優化,從而實現特定KVM虛擬機的生成。在客戶機進行創建的過程中綁定,從而使客戶機只能夠運行到制定的核中,不能夠進行遷移。

通過以上方案能夠看出來,第一種方案是通過KQEMU應用程序出發,要想實現此方案就要使用文件讀寫及綁定腳本,并且還要修改虛擬機管理器的腳本。第二種方案是通過Qemu源代碼進行修改,在綁定的時間方面明顯比第一種方案要早,并且實現的過程也較為簡單。并且通過第一種方案可以看出來,其在理論中對異步IO時候產生的aio線程綁定過程中會出現一定的問題,所以就要選擇第二種方案[3]。

2.2 實現處理器隔離

Liunx線程是在核內通過輕進程形式存在,其是在核外實現。其還具有獨立進程表項,但是其的創建和刪除等其他操作也是在核外中實現。和fork()調用創建進程的方式并不相同,pthread創建線程沒有和主線程相同的執行序列,而是使其中的函數能夠運行。所以使用fork 創建父子進程具有一定的繼承性,實現pthread創建父子進程并沒有繼承性。所以只是通過KQEMU中的屬性并不能夠實現KVM虛擬機處理器隔離,要想實現處理器隔離,要分為兩個步驟。首先,通過QEMU命令中獲得cpuid參數,這就要求能夠修改KQEMU源代碼,增加-cpuid命令選項,實現參數解析和相應的綁定操作。其次,根據得到的參數實現應用進程、線程及異步I/O事件處理線程的綁定,從而能夠實現處理器隔離。圖3為KVM虛擬機進程綁定實現的過程。

3 實驗的結果

通過以上的實現設計思路可以看出來,對于第二種方案的實現要通過創建客戶機和運行進行驗證,并且還要實現客戶機的異步I/O 事件處理。本文在實驗過程中使用的測試平臺為處理器內存DDR-800,在計算一次之后進行15毫秒的休眠。通過長時間的實驗觀察表示,雖然在Guest運行過程中的CPU核2的使用率為94.7%,KVM虛擬機還會在制定核中運行,在核1空閑的情況下也不會出現遷移。能夠通過taskset命令對進程值進行查詢,從而對其進行進一步的有效驗證。通過驗證表示,進程的值為1,那么就說明進程和線程在核2中運行[4]。

4 結束語

本文實現綁定KVM虛擬機,從而能夠進行KVM虛擬機處理器的隔離,從而使KVM虛擬機能夠在指定物理CPU核中進行運行,不會出現核轉移的現象,以此能夠實現CPU資源使用的最大化目的。在Guest多個共同運行過程中,只要在運行過程中對CPU參數的數量進行制定,那么就能夠使不同Guest在指定核中進行運行,以此有效實現計算機硬件資源的充分使用。

參考文獻:

[1] 于磊. 基于KVM的虛擬機完整性監控技術研究[D]. 中國科學院大學, 2015.

[2] 黃煜, 羅省賢. KVM虛擬化技術中處理器隔離的實現[J]. 計算機系統應用, 2012, 21(1):179-182.

[3] 王則陸, 孫超, 于麗,等. KVM虛擬化技術在申威平臺的應用[J]. 信息技術與信息化, 2014(6):174-176.

[4] 倪平波, 張捷, 楊帆,等. 基于KVM與Infiniband的SR-IOV的應用研究[C]// 2016智能電網發展研討會論文集, 2016.endprint

猜你喜歡
隔離處理器
Dirac Live加持!讓好效果來得更容易 ROTEL Rotel RAP-1580MKⅡ AV功放/RSP-1576MKⅡ環繞聲處理器/RMB-1585五聲道功放
幼兒隔離中的安全問題
Imagination的ClearCallTM VoIP應用現可支持Cavium的OCTEON? Ⅲ多核處理器
ADI推出新一代SigmaDSP處理器
電子設計應用(2004年7期)2004-09-02
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合