首次公開:騰訊雲虛擬化技術原理及可用性提升實踐

作爲雲的IaaS大底層,CVM的機型矩陣已經全面覆蓋電商、視頻、遊戲、金融、基因測序、智能語音、汽車、醫療、物聯網等多種業務場景,開啓了全行業的計算提速。Hypervisor作爲雲計算的基石,對虛擬機的性能優劣起着決定性的作用。騰訊雲虛擬化技術在過去十年的發展中經歷了多次更新換代、全面升級,在可用性方面提升效果明顯。

虛擬化技術架構與挑戰

虛擬化技術是雲計算最核心的技術之一,也是雲計算商業模式的底層支撐。海量服務器需要通過虛擬化的技術形成大的資源池,其重要性不言而喻。虛擬化技術整體架構圖如下所示:

其中VStation作爲雲計算操作系統,承擔了資源調度、請求排隊的工作,通過Compute與底層虛擬化模塊進行請求下發。虛擬化層負責資源的虛擬化,爲每臺CVM構造出完整的PC運行環境,包括CPU、內存、網絡、存儲各個部分資源。

主要包含Libvirt、QEMU、KVM三部分:

  • QEMU與KVM構成Hypervisor,負責CVM資源的虛擬化,在物理機上,虛擬出一個個完整的PC環境;
  • Libvirt負責提供統一對外的接口,用於管理Hypervisor。

伴隨着業務的高速增長和發展,宿主機的異構趨勢和虛擬機多樣化需求等等呈現指數增長,對底層虛擬化技術的要求更是越來越嚴苛。當前雲計算虛擬化面臨的問題包括:

  • 可用性:硬件上覆雜集成度的增加對降低故障率帶來了巨大的挑戰,在雲上如何規避物理服務器宕機對虛擬機的影響,讓業務層面減少感知甚至實現無感知;
  • 性能:業務追求虛擬化後的計算、網絡、存儲等各方面媲美物理機的性能,性能能否和過去IDC物理機相匹配?
  • 穩定性:穩定性方面能否保持像物理機一致的穩定性,滿足業務對響應時延的極致追求?
  • 交付效率:業務對交付效率要求逐步苛刻,雲上靈活的遷移調度如何提供秒級交付的體驗?

騰訊雲虛擬化技術巡禮

軟硬件協同可用性提升方案

近年來硬件集成度不斷增加,從CVM S2實例,整機宿主機56核256G內存,到S5實例96核384G,SA2實例192核512G內存;在未來的CPU廠商路標規劃中也將推出單機超過400核的機型。硬件集成度增加大大降低單核成本,但也爲降低故障率帶來的巨大的挑戰。分析現網故障數據,內存多比特錯誤導致的UCE錯誤是物理服務器宕機的主要原因。

服務器故障率統計

2019年騰訊雲聯合Intel定製CPU,支持高級RAS特性,來降低虛擬化場景下硬件故障對可用性的影響。這背後的代表性技術名爲MCA Recovery,支持對內存UCE錯誤進行隔離,避免整機宕機。據瞭解,騰訊雲是業界首家在大型數據中心中採用MCA Recovery技術降低內存故障率的廠商。

數據顯示,由於軟硬件協同的方式依賴Intel CPU架構、BIOS、BMC、Linux內核、上層資源調度管理,初期規避成功率不超過5%, 目前通過一系列的軟硬件結合優化,騰訊雲CVM雲服務器通過MCA Recovery已規避大量的內存UCE錯誤,大大降低了內存故障率。

熱遷移技術

CVM時運行於物理機硬件 + VMM(Virtual Machine Monitor)所構造的虛擬化環境中,一個雲服務器是一個完整的PC系統,內部可以運行各種OS,如Windows/linux,用戶的各類業務運行於OS內部。

熱遷移技術是指把一臺運行狀態的CVM從其所在的物理服務器遷移到另一臺物理服務器上,期間CVM的操作系統和操作系統內部的應用程序保持運行,業務對熱遷移操作無感知。

熱遷移示意圖

對熱遷移技術進行了專項優化迭代,熱遷移成功率由70%提升到了98%,停機時間從秒級減少到50ms。同時針對大規格子機熱遷移進行深度優化,解決大規格子機熱遷移過程中性能下降的問題。

自研內核調度器VMF

Linux內核作爲一個通用的OS,需要兼顧各種各樣類型的進程,包括實時進程、交互式進程、批處理進程等。而調度器(Scheduler)作爲OS的核心組件——CPU時間的管理器,主要負責選擇某些就緒的進程來執行。

不同於傳統的CFS調度器,(Completely Fair Scheduler簡稱,即完全公平調度器),騰訊雲自研了一款針對虛擬機環境的運行特徵定製的、專用的、能提升虛擬機latency和性能的、同時能滿足騰訊雲場景當前和未來可能的定製需求的,能持續演進優化的內核調度器——VMF。

VMF的基本原理爲:根據虛擬機場景中的任務特徵,將任務進行分類(分爲4類),其中VM類型對應於虛擬機進程,具有絕對的最高運行權和優先級。針對不同任務類型制定相應的調度策略,將CPU資源儘量向VM任務傾斜(而不是考慮“公平”),如此最大程度的保障虛擬機的CPU資源供應,結合虛擬化層面的其他優化手段,讓虛擬機擁有媲美物理機的極致性能。通過採用VMF調度算法,大大減少了母機進程對VCPU的干擾, 達到了和物理機接近的穩定性。

VM啓動優化

對於GPU機型,目前採用設備直通的方式,虛擬機啓動的時候,提前分配並鎖住全部的虛擬機內存,而虛擬機內存越大,啓動就越慢。以700G內存的虛擬機爲例,啓動時間高達270秒左右。

問題的本質在於內核爲虛擬機分配內存時、爲了防止信息泄露,在一個單線程的持所環境中,把分配到的內存全部清零,導致處理耗時較長。

騰訊雲引入了新的機制,並把清零的工作挪到用戶層,由所有vCPU線程併發執行。經測試,上述啓動時間需要4.5分鐘的虛擬機,優化後的啓動時間只需22秒。相關補丁已經貢獻給社區並被接納。

關注開源

騰訊雲是最早擁抱KVM技術的雲計算服務商,早在2013年,騰訊雲基於對虛擬化技術未來發展方向的判斷,便全面採用由開源社區支持的KVM技術,並投入核心團隊參與研發。近年來,騰訊雲還一直積極推進虛擬化開源建設。在去年的KVM Forum上,騰訊雲憑藉年度40個patch的貢獻,名列全球第七,連續三年KVM社區國內貢獻排名第一,連續三年成爲國內唯一登榜的雲計算服務商。其中,騰訊雲今年貢獻的 3 個技術特性,還被評爲KVM年度核心突破。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章