《KVM實戰:原理、進階與性能調優》 —2 KVM原理簡介

      網友投稿 844 2025-03-31

      第2章

      KVM原理簡介

      2.1 硬件虛擬化技術

      通過第1章的介紹,大家已經知道KVM虛擬化必須依賴于硬件輔助的虛擬化技術,本節就來介紹一下硬件虛擬化技術。

      最早的硬件虛擬化技術出現在1972年的大型機IBM System/370 系統上,而真正讓硬件虛擬化技術“走入尋常百姓家”的是2005年年末Intel發布的VT-x硬件虛擬化技術,以及AMD于2006年發布的AMD-V。本書中除了特別說明,默認以Intel的硬件虛擬化技術作為代表來介紹。

      2.1.1 CPU虛擬化

      CPU是計算機系統最核心的模塊,我們的程序執行到最后都是翻譯為機器語言在CPU上執行的。在沒有CPU硬件虛擬化技術之前,通常使用指令的二進制翻譯(binary translation)來實現虛擬客戶機中CPU指令的執行,很早期的VMware就使用這樣的方案,其指令執行的翻譯比較復雜,效率比較低。所以Intel最早發布的虛擬化技術就是CPU虛擬化方面的,這才為本書的主角—KVM的出現創造了必要的硬件條件。

      Intel在處理器級別提供了對虛擬化技術的支持,被稱為VMX(virtual-machine extensions)。有兩種VMX操作模式:VMX 根操作(root operation) 與VMX 非根操作(non-root operation)。作為虛擬機監控器中的KVM就是運行在根操作模式下,而虛擬機客戶機的整個軟件棧(包括操作系統和應用程序)則運行在非根操作模式下。進入VMX非根操作模式被稱為“VM Entry”;從非根操作模式退出,被稱為“VM Exit”。

      VMX的根操作模式與非VMX模式下最初的處理器執行模式基本一樣,只是它現在支持了新的VMX相關的指令集以及一些對相關控制寄存器的操作。VMX的非根操作模式是一個相對受限的執行環境,為了適應虛擬化而專門做了一定的修改;在客戶機中執行的一些特殊的敏感指令或者一些異常會觸發“VM Exit”退到虛擬機監控器中,從而運行在VMX根模式。正是這樣的限制,讓虛擬機監控器保持了對處理器資源的控制。

      一個虛擬機監控器軟件的最基礎的運行生命周期及其與客戶機的交互如圖2-1所示。

      圖2-1 VMM與Guest之間的交互

      軟件通過執行VMXON指令進入VMX操作模式下;在VMX模式下通過VMLAUNCH 和VMRESUME指令進入客戶機執行模式,即VMX非根模式;當在非根模式下觸發VM Exit時,處理器執行控制權再次回到宿主機的虛擬機監控器上;最后虛擬機監控可以執行VMXOFF指令退出VMX執行模式。

      邏輯處理器在根模式和非根模式之間的切換通過一個叫作VMCS(virtual-machine control data structure)的數據結構來控制;而VMCS的訪問是通過VMCS指針來操作的。VMCS指針是一個指向VMCS結構的64位的地址,使用VMPTRST和VMPTRLD指令對VMCS指針進行讀寫,使用MREAD、VMWRITE和VMCLEAR等指令對VMCS實現配置。

      對于一個邏輯處理器,它可以維護多個VMCS數據結構,但是在任何時刻只有一個VMCS在當前真正生效。多個VMCS之間也是可以相互切換的,VMPTRLD指令就讓某個VMCS在當前生效,而其他VMCS就自然成為不是當前生效的。一個虛擬機監控器會為一個虛擬客戶機上的每一個邏輯處理器維護一個VMCS數據結構。

      《KVM實戰:原理、進階與性能調優》 —2 KVM原理簡介

      根據Intel的官方文檔,我們這里列舉部分在非根模式下會導致“VM Exit”的敏感指令和一些異常供讀者朋友參考,這對于理解KVM的執行機制是必要的,因為KVM也必須按照CPU的硬件規范來實現虛擬化軟件邏輯。

      1)一定會導致VM Exit的指令:CPUID、GETSEC、INVD、XSETBV等,以及VMX 模式引入的INVEPT、INVVPID、VMCALL、VMCLEAR、VMLAUNCH、VMPTRLD、VMPTRST、VMRESUME、VMXOFF、VMXON等。

      2)在一定的設置條件下會導致VM Exit的指令:CLTS、HLT、IN、OUT、INVLPG、INVPCID、LGDT、LMSW、MONITOR、MOV from CR3、MOV to CR3、MWAIT、MWAIT、RDMSR、RWMSR、VMREAD、VMWRITE、RDRAND、RDTSC、XSAVES、XRSTORS等。如在處理器的虛擬機執行控制寄存器中的“HLT exiting”比特位被置為1時,HLT的執行就會導致VM Exit。

      3)可能會導致VM Exit的事件:一些異常、三次故障(Triple fault)、外部中斷、不可屏蔽中斷(NMI)、INIT信號、系統管理中斷(SMI)等。如在虛擬機執行控制寄存器中的“NMI exiting”比特位被置為1時,不可屏蔽中斷就會導致VM Exit。

      最后提一下,由于發生一次VM Exit的代價是比較高的(可能會消耗成百上千個CPU執行周期,而平時很多指令是幾個CPU執行周期就能完成),所以對于VM Exit的分析是虛擬化中性能分析和調優的一個關鍵點。

      KVM

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:生產制造企業招聘(生產制造管理招聘)
      下一篇:銷售月度統計報表模板圖片(銷售情況統計表模板)
      相關文章
      精品日韩99亚洲的在线发布| 怡红院亚洲怡红院首页| 亚洲色精品vr一区二区三区| 久久综合亚洲色hezyo| 亚洲日韩AV无码一区二区三区人| 亚洲高清无在码在线电影不卡 | 亚洲国产精品VA在线看黑人| 在线A亚洲老鸭窝天堂| 亚洲午夜爱爱香蕉片| 亚洲成a人片在线观看天堂无码 | 亚洲精品无码久久久| 亚洲一区二区三区在线网站 | 亚洲成a人片在线观看老师| 国产成人人综合亚洲欧美丁香花 | 国产成人A人亚洲精品无码| 亚洲人成人无码网www国产| 亚洲国产人成精品| 亚洲AV日韩AV高潮无码专区| 亚洲第一福利网站| 亚洲视频日韩视频| 亚洲最大视频网站| 国产精品亚洲精品青青青| 亚洲欧洲国产综合AV无码久久| 亚洲欧美成人一区二区三区| www亚洲精品久久久乳| 亚洲国产午夜福利在线播放| 激情综合色五月丁香六月亚洲| 亚洲女同成av人片在线观看 | 亚洲AV无码一区二区一二区| 亚洲国产精品自产在线播放| 国产亚洲精品资在线| 亚洲成AV人片在线观看| 久久亚洲精品成人综合| 人人狠狠综合久久亚洲婷婷| 久久精品国产亚洲精品| 亚洲熟妇无码八AV在线播放| 亚洲伦另类中文字幕| 亚洲综合一区无码精品| 亚洲精品永久在线观看| 亚洲a∨无码男人的天堂| 亚洲专区中文字幕|