天天看點

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

雲栖社群2017線上技術峰會上,來自阿裡雲彈性計算團隊的子團分享了紅包背後虛拟化技術。他首先比較了容器技術和虛拟化技術,然後從cpu虛拟化、記憶體虛拟化、io虛拟化三個方面介紹了虛拟化關鍵技術。他還分享了虛拟化架構的優化探索,包括高性能網絡方案、高性能雲盤/本地盤方案、高效熱遷移技術、虛拟機cpu/記憶體熱插拔技術等。

以下内容根據直播視訊整理而成。

<b></b>

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

以前在阿裡、天貓等用的比較多的是容器技術,比如lxc/docker,從2015年開始将“雙十一”的流量部分遷移到了阿裡雲的虛拟機上。容器技術的特點是輕量,很容易達到本地實體機的性能,而虛拟化技術是跑在實體機上的虛拟機上的,開銷相對大一些,性能不如容器技術,但是安全性比較高。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

容器技術的大體架構如上圖所示,最下面是硬體平台,主流使用的是linux核心,核心上會有container引擎,最上方會跑一些container執行個體。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

虛拟化技術和容器技術最大的差别是在虛拟機和硬體平台之間會有一個虛拟機螢幕,主要用于将硬體抽象出來切分資源提供給虛拟機,提供隔離和虛拟化的功能,在螢幕上方則是一個個的虛拟機。

要在阿裡雲的公有雲上跑這些業務的話,需要比較強的隔離性、安全性,是以選擇虛拟化技術更加合适。虛拟化技術概念是ibm很早提出的,然後vmware公司将虛拟化技術推向民用市場。在intel釋出vt-x後,虛拟化技術走向成熟,公有雲的普及讓虛拟化技術規模擴大。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

cpu的虛拟化從實作上可以分為三種:二進制翻譯技術,其優勢在于跨平台虛拟化也可以實作(純軟體實作,對硬體沒有要求),其缺點是指令翻譯過程開銷會明顯增加(因為要用很多指令才能解釋一個其他平台的指令,和單詞翻譯類似),性能不好,很少用在商用工程上,主要用于研究機構做仿真;cpu半虛拟化技術,比如在x86機器上虛拟x86的虛拟機,大部分的指令是不需要翻譯的,但因為x86早期設計問題,有些敏感之類執行的異常沒辦法被hypervisor捕獲, 導緻無法進行适當模拟, 是以虛拟機的核心必須要通過修改來适配虛拟化環境;cpu硬體輔助虛拟化技術(vt-x),即每個虛拟機在non-root模式下,看到的資源(比如x86的ring結構)和本地的實體機是一緻的,理論上虛拟機的核心不需要經過任何的修改就能夠完全運作起來。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

目前的x86機器都是支援vt-x的。vt-x提供了兩種模式:root模式,權限最高,可以通路所有硬體,管理所有虛拟機;non-root模式,隻擁有部分特權。右下角的這張圖中,vmm跑在root模式下,其上是兩個虛拟機,從root模式進入non-root模式的過程叫vm entry,從虛拟機退出到vmm的過程是vm exit。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

當需要給虛拟機執行機會使它能夠運作裡面的作業系統、程序作業時,需要從root模式進入non-root模式,在non-root模式運作和在實體機上運作是沒有任何差別的。隻有當需要去通路一些硬體,做io操作, 或者收到中斷等情況的時候, 才需要從虛拟機退出到vmm。vm entry和vm exit決定了跑在機器上的虛拟機的性能,這兩個操作是非常耗時的,在目前主流的至強e5平台上大約需要1 ~ 2微秒的時間。vmcs則記錄了用來決定兩種模式間切換的控制資料。

記憶體虛拟化主要面臨兩方面的挑戰:虛拟機作業系統總是希望能夠看到實體記憶體是從0開始的;虛拟機總是希望看到在位址空間裡記憶體是連續的。但是硬體往往并不能保證上述兩點。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

如上圖所示,在虛拟機裡看到的記憶體實際上是pseudo僞實體記憶體,實際的實體記憶體配置設定是硬體管理的。

mmu是記憶體裡cpu通路記憶體的一個主要控制單元,它面臨的挑戰是guest tlb和guest頁表對硬體來講并不總是有效的,是以mmu一定要經過虛拟化。mmu虛拟化主要有四種方式:direct page table、virtual tlb、shadow page table(通過多層的page table來控制)和extended page table(目前最主流的)。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

extend page table的實作如上圖所示,guest cr3控制頁表的資訊,完成guest的線性位址到實體位址的轉換過程,再到實體機的實體位址映射則通過ept來完成。這種基于硬體的ept技術,使得虛拟機裡的一次記憶體通路不需要經過多次的頁表通路就可以完成,在記憶體通路方面可以達到和實體機相近的水準。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

常見的io虛拟化主要有三種方案:基于軟體模拟的方案,這種方案裡, 中斷、dma的通路都是通過軟體實作的,優點是可以模拟任何硬體的模型,缺點是性能不會太好;半虛拟化技術,主要是為了解決軟體模拟性能問題,比如序列槽對性能要求不高可以采用軟體模拟,但是磁盤裝置、網卡裝置對性能要求高,主流方案是采用半虛拟化技術,前後端互相感覺,通過shared memory控制請求的傳輸,兩個裝置之間的通知也是基于快速消息傳遞,性能很高;裝置直通模式,比如pcie的直通、網卡srov直通,對性能更高的可以采用此模式,可以達到和實體機上直接使用接近的性能,但是裝置和虛拟機的耦合會對管理造成影響。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

早期的阿裡雲背景采用xen的虛拟化方案,之後切換到了kvm裡面。kvm能夠給虛拟機提供更好的性能、穩定性, 更重要的是架構簡潔,可維護性高。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

虛拟化的整體架構如上圖所示,最上方是後羿管控系統,主要負責虛拟機生命周期的管理,下發虛拟機啟停、關閉、銷毀等操作到實體機,調用libvirt接入api,而libvirt通過調用qemu完成虛拟機的操作。系統使用virtio技術做磁盤和io裝置的虛拟化,核心中使用vhost-net/vhost-blk子產品來加速virtio的性能。

熱更新架構:所有元件熱更新,由于開源代碼有安全漏洞,熱更新技術為性能保駕護航;

高可用性架構:高效、穩定的熱遷移,cpu/記憶體的熱插拔,vmce支援,核心熱更新檔;

高性能網絡架構:支援vhost-net,支援多隊列虛拟網卡,sriov硬體網卡虛拟化;

高性能存儲架構:支援dataplane增強的高性能分布式存儲,支援spdk的超高性能使用者态架構。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

高性能網絡是基于sriov和萬兆網卡技術來做的。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

ssd雲盤的資料可靠性非常高,對資料可靠性要求不是非常高的業務可以使用高性能本地盤。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

不同叢集中的數組集的負載出現不均衡情況時,需要将負載特别高的實體機上的虛拟機遷移一部分到負載低的實體機上,如果沒有熱遷移技術則隻能采用停機遷移的方式,使用者可以感覺到,但是熱遷移技術使用者是感覺不到的。另外,當實體機硬體出現故障時,比如磁盤壞道變多、可校正ecc較多,此時就可以把此實體機上的所有虛拟機熱遷移到其它實體機上,然後對故障機器進行維護。當機器上軟體版本出現很大問題沒辦法進行熱更新的時候,也可以使用熱遷移技術進行遷移更新。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

當更新裝置時,不想停機更新,則可使用熱插拔技術進行擴容。

在軟體層面進行了大量的優化:pvtimer、pvipi、posted interrupt、power。

CPU、記憶體、IO虛拟化關鍵技術及其優化探索面臨的挑戰虛拟化關鍵技術虛拟化架構優化

上圖反映的是一台虛拟機在跑紅包其中某一個業務的時候,虛拟機每秒vmexit次數的統計。藍色代表優化前,紅色代表優化後。從圖上看出,優化後退出次數明顯減少,虛拟機性能越來越接近實體機表現。

繼續閱讀