linux串口中断_5年匠心之作,深度探索Linux虚拟化
大約在2014年底,我參與了一個項目,使用Android模擬器在x86架構的機器上運行各種Android游戲。當時項目遇到的核心問題是游戲運行卡頓嚴重,印象中普通的小游戲每秒大約只能渲染十幾幀,大型游戲則完全無法成功加載。運行模擬器的機器都有頂配的顯卡,因此硬件性能并不存在問題。那么問題就出在軟件架構上了。當時采用的軟件架構是:使用虛擬機運行Android程序,Android中有一個模塊會將數據通過網絡傳送給另外一個本地應用進行渲染。對于游戲這種數據量很大的應用,采用網絡包傳輸顯然不是一個最優的方案。除了網絡包在協議棧中的各種復雜處理外,大量的網絡包傳輸會導致虛擬機和主機之間的頻繁切換,這將耗費大量的計算資源。基于此,我們設計的新方案是在VMM層實現一個虛擬設備,在Guest內部通過這個虛擬設備向渲染程序發送數據。虛擬設備通過IPC方式與負責渲染的程序進行通信。方案實現后,原來無法加載的大型游戲每秒都可以達到Android的渲染上限60幀。
2015年我參與了另外一個項目,將虛擬機的塊設備數據存儲到塊存儲集群。原有的方案是在宿主機上采用SCSI創建一個塊設備,然后將這個塊設備傳給Qemu,SCSI設備再通過iSCSI協議將塊數據傳遞給遠端塊存儲集群。這個方案有很多弊端,塊數據經歷了兩次I/O棧,一次是Guest內核中的,另外一次是Host內核中的,因此效率很低。另外,這個方案還有個致命的問題:那時偶爾會遇到內核中iSCSI協議的Bug,此時除了重啟宿主機外別無他法,而且那時熱遷移還不是很成熟,可以想象一下重啟宿主機的后果。為了解決這些問題,我們設計了另外一種方案,在Qemu中實現一個虛擬塊設備,繞過內核的I/O棧,在該虛擬塊設備中直接將塊數據通過TCP/IP發給塊存儲集群,從而不再依賴iSCSI協議。方案實現后,IOPS獲得了極大的提升,系統的穩定性也增強了。
經歷了很多類似上述的情況,因此我打算寫一本Linux系統虛擬化方面的書,希望能讓讀者更深刻地認識和理解系統虛擬化,于是我和本書的第二作者謝廣軍博士相約,一起撰寫本書。從2015年開始,歷時近6年,中間歷經多次易稿,從最開始過多地聚焦于煩瑣的技術細節,到嘗試從系統結構、操作系統和硬件等多角度去解釋原委。書中全部采用可以說明問題的早期代碼版本,而不是采用因各種特性迭代而變得紛繁復雜的最新代碼。
在這5年多的時間里,每每不想堅持時,就會想起自己年輕氣盛時經常質疑前輩們為我們留下了什么,而如今我捫心自問,從事了這么多年計算機工作,我又為這個行業做了什么?最后,希望本書能讓大家有所收獲。
02內容簡介本書探討了軟件如何虛擬計算機系統,包括CPU、內存、中斷和外設等。此外,在云計算中,網絡虛擬化也至關重要,因此,本書最后一章探討了網絡虛擬化。
第1章討論CPU虛擬化。
這一章介紹了x86架構下的VMX擴展,討論了在VMX下虛擬CPU的完整生命周期。以Guest通過內存映射(MMIO)方式訪問外設為例,展示了KVM如何完整地模擬一個CPU指令。然后,我們探討了KVM是如何模擬多處理器系統的。最后,通過一個具體的KVM用戶空間部分的實例,帶領讀者直觀地體會CPU虛擬化的概念。
第2章討論內存虛擬化。
這一章首先簡略地介紹了內存尋址的基本原理,然后分別探討了實模式Guest以及保護模式Guest的內存尋址,包括大家比較熟悉的影子頁表等。最后,我們討論了在硬件虛擬化支持下,即EPT模式下從Guest的虛擬地址到Host的物理地址的翻譯過程。
第3章討論中斷虛擬化。
這一章我們從最初IBM PC為單核系統設計的PIC(8259A)開始,討論到為多核系統設計的APIC,再到繞開I/O APIC、從設備直接向LAPIC發送基于消息的MSI。最后,我們討論了Intel為了提高效率是如何從硬件層面對虛擬化中斷進行支持的,以及KVM是如何使用它們的。
第4章和第5章討論外設虛擬化。
我們從完全虛擬化開始,討論到半虛擬化,最后討論到Intel的VT-d支持下的硬件輔助虛擬化。其間,我們通過實現一個模擬串口,帶領讀者直觀地體會設備虛擬化的基本原理,然后帶領讀者深入了解Virito標準。最后,我們還探討了支持SR-IOV的DMA重映射和中斷重映射。
第6章討論網絡虛擬化。
以一個典型的Overlay網絡為例,從虛擬機訪問外部主機、外部主機訪問虛擬機兩個方面,分別探討了計算節點、網絡節點上的網絡虛擬化技術。
03本書讀者收獲云計算從業人員
虛擬化是云計算的基礎,運行各種服務的云主機都是通過虛擬化方式虛擬出來的,需要深入地掌握虛擬化技術。
云計算平臺的研發人員
只有更好地掌握虛擬化技術,才能更好地管理云主機等計算資源。
云計算解決方案架構師
只有更好地了解虛擬化技術,才能為客戶設計更合理的解決方案。
虛擬化相關底層技術的研發人員
只要參透虛擬化技術,才能為用戶提供更高性能的云主機。
IT技術從業者
虛擬化技術是一門跨領域的技術,涉及操作系統、系統結構、硬件等多個領域。虛擬化提供了一個全方位窺探計算機技術的途徑,通過虛擬化技術,我們可以更好地研究在物理環境下無法觀察到的各種行為,虛擬化為研究計算機核心基礎技術提供了一個無與倫比的環境。
04
? ? 作者介紹? ??
王柏生
資深技術專家,先后就職于中科院軟件所、紅旗Linux和百度,現任百度主任架構師。在操作系統、虛擬化技術、分布式系統、云計算、自動駕駛等相關領域耕耘多年,有著豐富的實踐經驗。
著有暢銷書《深度探索Linux操作系統》(2013年出版)。
謝廣軍
計算機專業博士,畢業于南開大學計算機系。
資深技術專家,有多年的IT行業工作經驗。現擔任百度智能云副總經理,負責云計算相關產品的研發。多年來一直從事操作系統、虛擬化技術、分布式系統、大數據、云計算等相關領域的研發工作,實踐經驗豐富。
更多精彩回顧書訊 |11月書訊(下)| 這些好書必須“買買買”!書訊 |11月書訊(上)| 這些好書必須“買買買”!資訊 |DB-Engines 10月數據庫排名:“三大王”無人能敵,PostgreSQL緊隨其后上新 |?百度官方出品 | 全面解讀PaddlePaddle,零基礎快速入門深度學習書單 |?開學季——計算機專業學生必讀的10本暢銷經典干貨 |?數據分析必讀干貨:簡單而實用的3大分析方法收藏 |?(萬字長文)Spring的核心知識盡攬其中視頻 |?大佬出鏡推薦不可不讀系列——程序員陳彼得點擊閱讀全文購買
總結
以上是生活随笔為你收集整理的linux串口中断_5年匠心之作,深度探索Linux虚拟化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis原理及拓展
- 下一篇: python中del语句