歡迎你們前往騰訊雲社區,獲取更多騰訊海量技術實踐乾貨哦~算法
做者:騰訊雲計算團隊 windows
嘉賓介紹:肖光榮,騰訊雲開源團隊負責人,操做系統專家。肖光榮在Linux內核、KVM社區工做近十年,是Ftrace, MM, Networking等子系統的活躍貢獻者。近幾年主要工做在虛擬化領域,是KVM的核心開發者,Virtual NVDIMM子系統的維護者。肖光榮向社區提交了大量Patch,在華人內核貢獻者中排名Top 15,在內核和KVM社區擁有巨大影響力。安全
前不久,KVM Forum 大會發布了 2017 年最新 KVM 開源貢獻榜,騰訊雲因其向 KVM 內核貢獻了 46 個 patch,成爲全球惟一一家上榜的公有云廠商。據瞭解,這些補丁大可能是騰訊雲在實戰過程當中的經驗總結,主要用於改善和解決 KVM 虛擬機在熱遷移,時鐘計時、嵌套虛擬化等方面的使用問題以及修復一些安全漏洞。網絡
在開源的全部 patch 裏,比較引人注目的是,騰訊雲率先採用快速寫保護、共享髒頁位圖、優化熱遷移塊大小等一系列方式,優化熱遷移效率以及提高熱遷移成功率。那麼,它的虛擬機熱遷移過程和具體方法是什麼?騰訊雲又如何看待 KVM 技術開源?KVM 如今面臨着哪些新的挑戰?帶着這些問題,InfoQ 採訪了騰訊雲高級工程師肖光榮,就騰訊雲的 KVM 開源技術與開源思路作了簡單交流。架構
Q:簡單闡述一下 KVM 虛擬化技術以及 KVM 和雲計算的關係?框架
肖光榮: KVM 是 Kernel-based Virtual Machine 的簡稱,KVM 要求 CPU 支持硬件虛擬化技術(如 intel VT 或 AMD-V),是 Linux 下的全虛擬化解決方案。KVM 由處於內核態的KVM模塊和用戶態的 QEMU 兩部分構成。內核模塊實現了 CPU 和內存虛擬化等決定關鍵性能和核心安全的功能並向用戶空間提供了使用這些功能的接口,QEMU利用KVM模塊提供的接口來實現設備模擬、 IO 虛擬化和網絡虛擬化等。單個虛擬機是宿主機上的一個普通 QEMU 進程,虛擬機中的 CPU 核(vCPU)是 QEMU 的一個線程,VM 的物理地址空間是 QEMU 的虛擬地址空間(圖 1)。異步
vCPU 線程通過KVM模塊提供的系統調用進入到宿主機內核態,在內核態切換到CPU的非根模式,即 guest 模式,此時虛擬機內的 CPU 得到宿主機 CPU 資源,得以執行。在 guest 模式中,遇到敏感指令沒法直接執行,或者有特定的內部異常和外部中斷產生,vCPU 會退出到根模式由 KVM 內核或 QEMU 來模擬執行(圖 2)。性能
KVM 虛擬化技術是當前雲計算中計算虛擬化的主流技術,是雲計算的核心底層能力,使用 KVM 把多臺物理機虛擬化後,組成一個大的虛擬資源池,方便用戶從資源池中按需分配計算能力,提高資源的使用效率,同時保證多用戶資源之間的隔離性、安全性。優化
Q: 騰訊雲這次向 KVM 社區貢獻的 46 個 patch 主要解決了哪些問題?雲計算
肖光榮:這 46 個 patch 是咱們在實戰過程當中的經驗總結,用於改善和解決 KVM 虛擬機在實際運營過程當中遇到的一些問題,這些Patch主要應用在如下三個方面:
Q:騰訊雲在虛擬機熱遷移技術上有比較明顯的突破,可否講解一下虛擬機的遷移過程以及騰訊雲如何提高熱遷移性能?
肖光榮:虛擬機熱遷移是一項很是重要的技術,熱遷移能夠在用戶幾乎無感知的狀況下將虛擬機從當前宿主機遷到另外的宿主機,熱遷移主要用於解決一些軟硬件不可逆場景下的虛擬機可用性問題,如:宿主機硬件批次性隱患、宿主機內核內存泄漏等。騰訊雲內部大量地使用熱遷移來提高虛擬機的可用性,從近一年的統計數據來看,已經作到虛擬機的可用性大於物理機。
虛擬機的熱遷移主要有下面幾步:
如上所述,源端須要去捕獲內存的更改,在當前的環境下是採用寫保護和髒頁位圖的方法,即先把內存所有變爲只讀,在虛擬機寫內存時就會產生異常被KVM內核模塊捕獲而且記錄到髒頁位圖,該髒頁位圖最後被複制到QEMU,據此QEMU能知道哪些內存被更改。
對於髒頁內存的捕獲,咱們主要經過兩大方式提高熱遷移效率:1)採用快速寫保護算法,該算法是無鎖的而且算法複雜度爲 O(1),這就意味着它的性能與虛擬機的內存大小和工做負載無關。2)採用KVM內核模塊和QEMU共享髒頁位圖的方法,實現零拷貝以及減小用戶態和內核態的上下文切換。
另外在遷移髒塊的時候,針對子機內部 IO 性能降低的問題,優化熱遷移塊大小,避免傳輸無用數據,提高熱遷移成功率。固然,騰訊雲還有不少其餘提高熱遷移性能和穩定性的優化方法,在此就不一一列舉了。
Q:騰訊雲如何看待雲廠商們對 KVM 開源的貢獻和支持問題?
肖光榮:騰訊雲一直秉承開放,共享的心態參與開源,憑藉龐大的用戶羣和 KVM 集羣規模,騰訊雲在 KVM 虛擬化上作了深刻的研究和豐富的實踐。騰訊雲自 2017 年 5 月加入 Linux 基金會以來,更加大了回饋社區的力度。在 KVM 內核領域,已是貢獻度最高的公有云廠商。
過去,大型開源項目一直鮮見中國大型企業的身影,因此開源界一直詬病中國企業只索取不貢獻,做爲公有云的一線廠商,咱們但願經過實際行動轉變開源界的見解。
當前 KVM 虛擬化技術是各家雲廠商使用的主流虛擬化技術,騰訊雲有一個專門負責作開源的團隊,該團隊一方面將持續創新以來解決騰訊雲線上遇到的各類挑戰而且將產出反饋給社區,另外一方面探索雲計算領域的新技術,作好前沿技術的預演和積累。同時咱們也但願各大雲廠商加大對 KVM 項目的投入,積極參與到社區,共同應對新硬件,新架構給 KVM 帶來的挑戰。
Q:KVM 技術如今面臨着哪些新的挑戰?
肖光榮:一方面,Intel 不斷推出新 CPU 架構:haswell、broadwell、skylake 到 cascadelake,網絡帶寬從 10G 到 25G 再到 100G,更新的硬件架構,更高的網絡帶寬須要更高效的虛擬化才能將硬件的性能充分發揮。另外一方面,GPU、FPGA 在 KVM 上的虛擬化、池化有待突破,不然 GPU、FPGA 的總體利用率沒法提高。虛擬機網絡性能一直是虛擬化的短板,利用智能網卡等技術能夠將網絡性能作到和物理機旗鼓至關,但同時也讓熱遷移變得困難。
此文已由做者受權騰訊雲技術社區發佈,轉載請註明文章出處
原文連接:https://cloud.tencent.com/community/article/385740