天天看點

【技術系列】淺談GPU虛拟化技術(第一章)

<b>第一章  GPU虛拟化發展史</b>

GPU的虛拟化發展曆程事實上與公有雲市場和雲計算應用場景的普及息息相關。如果在10年前談起雲計算,大部分人的反應是“不知所雲“。但是随着雲計算場景的普及,概念的深入人心,慢慢地大家都對雲計算有一個較清晰的概念和執行個體化的了解。自然,随着應用場景從單一依賴CPU的計算單元的應用擴充到多種體系架構,異構計算場景的應用上來後,對GPU,FPGA,TPU等專業計算晶片也提出了虛拟化和上雲的強烈要求。尤其是最近幾年機器學習、深度學習等領域的快速發展,催生了異構計算場景搬遷上雲的高潮。

【技術系列】淺談GPU虛拟化技術(第一章)

圖一:2015-2018年全球人工智能市場規模及預測(機關:億元,%)

【技術系列】淺談GPU虛拟化技術(第一章)

圖二: 2014-2018年中國人工智能産業市場規模及增速(機關:億元,%)

是以我們不難了解,為什麼各大雲計算廠商無論大小,都會極力研發異構計算産品,争搶市場的主導地位。

由于GPU是異構計算的主力軍,讓我們來回顧一下GPU虛拟化的發展曆史,并對各個GPU廠商做一個橫向比較,大家就不難看出來,哪些廠商處于上司地位,哪些是醬油黨 :)

VMware的GPU全虛拟化VSGA技術是第一次對GPU共享虛拟化的嘗試,于2008年底在VMware商業化的Workstation 6.5和Fusion 2.0版本中首度問世,後續又在面向資料中心的産品vSphere中有內建。但這是一個VMware專有的閉源解決方案,在開源社群和VMware之外的産品中沒有見到大規模應用,不是本篇關注的重點。

随着kernel VFIO子產品的引入和直通裝置的慢慢普及,GPU的虛拟化之路得以開啟。而開始大規模運用,則大體是伴随着VFIO子產品的成功落地。事實上,在2012年左右,GPU直通技術一直是VFIO子產品的一個重要應用場景。

Nvidia 在2013 釋出了GRID K1的産品,則标志着GPU虛拟化的成熟并逐漸開啟了異構計算虛拟化的快速發展曆程。

而事實上在2013同年,Intel OTC 針對HSW的GVT-d 和GVT-g的GPU虛拟化方案的也已經開發了一年有餘。當初硬體基于SNB/HSW,而原型代碼是基于Xen Hypervisor。(題外話:回頭來看,會發現當初如日中天的Xen,竟然在幾年後被後起之秀KVM逐漸取代。而當今公有雲市場已鮮有Xen的身影了,替Citrix心疼幾秒)。

Intel對GPU行業發展保持着敏銳的技術洞察力,早在2011年便已經開始了GPU虛拟化的提案,然而由于沒有引起足夠的重視,直到三年後的2014年,才有基于GVT-g的XenClient産品問世。

同年: VFIO 子產品的社群維護者在KVM Forum上也正式釋出了VGA的assignment。(詳見:https://www.linux-kvm.org/images/e/ed/Kvm-forum-2013-VFIO-VGA.pdf)

同年初: AMD 也已經開始基于SRIOV的GPU虛拟化方案(Tonga架構),并開始研發SRIOV PF的GIM驅動和vGPU排程系統。由此推測SRIOV的硬體實作應該提前半年左右已經完成。直到兩年後,AMD終于迎來了首款GPU SRIOV的産品:FirePro S7150 (2016年初釋出)。

Nvidia作為GPU行業的龍頭老大,基本上在GPU虛拟化的研發和産品化是領先了各位對手1-2年以上。而作為競争對手的AMD在之後奮起直追。而Intel 基本上在那個時期還屬于陪跑者。

一年後,也就是2014年,随着一篇Usenix ATC的論文的發表:”A Full GPU Virtualization Solution with Mediated Pass-Through“

默默無聞的GPU虛拟化的一個新技術正式進入了大家的視眼:GPU分片虛拟化(中文暫且這麼叫吧,因為mediated passh-through的叫法根本就不能讓人明白這個到底是什麼)。

該論文由Intel OTC的兩位Principal Engineer發表,也代表了Intel在GPU虛拟化領域的技術積累(産品化一直不見起色,說起來都是淚)。

應該說Nvidia作為行業龍頭對分片虛拟化在社群的推動起到至關重要的角色,事實上VFIO的mdev架構是由Nvidia為了GRID vGPU 産品線而引入。mdev的概念由Nvidia率先提出的,并合并到了Linux 核心4.10。人家玩閉源生态系統也開始擁抱開源。

而AMD 2014 則沒有消息,應該是繼續研發全球首款基于SRIOV的GPU方案。

Intel 與Citrix的合作,先後釋出了基于GVT-d和分片虛拟化的GVT-g的XenClient 和

XenServer的産品。這些産品代表着當時Xen社群GPU虛拟化業界的标杆。為什麼是Xen社群呢? 因為GVT-g當時還沒有釋出KVM 版本。

Intel 也開始在各大内外會議推送GVT-g的技術,當然是希望自己技術可以産品化并有一個好的市場前景。比如在當年“英特爾開發者大會”(IDF)上率先釋出了基于GVT-g的多媒體視訊處理雲端方案。聽的人很多一百多号人,并且感興趣的也不少。作為一個利用免費GPU來做音視訊處理,比單獨用E5 Server要劃算的多。但是遺憾的是最終沒有任何産品落地。究其原因還是内在Intel GPU的定位問題。後續會講到Intel GVT-g 方案的緻命傷和痛點。

而AMD繼續研發全球首款SRIOV GPU。

當其他人都在玩技術的時候,Nvidia已經開始了産業布局。同年釋出了AWS上和VMware合作的基于GRID的各種方案,比如非常炫酷的Game Streaming。

其實GRID 是大概念。代表了Nvidia的GPU虛拟化的一大摞産品。而其中的GRID vGPU便是基于mdev的分片虛拟化方案。

2016年AMD帶來了全球首款GPU的SRIOV顯示卡FirePro S7150x2。而這款針對圖形渲染應用的産品也成為了之後各大公有雲廠商的必推業務。圖形渲染虛拟化高成本效益隻此一款。

Intel繼續在各大論壇極力宣傳Intel GVT-g技術。并在技術上第一次領先行業龍頭Nvidia率先實作了vGPU的熱遷移技術,可以說Intel OTC的虛拟化部門在自己力所能及的情況下把GVT-g做到了極緻,然而在産品化的道路上卻越走越艱難。

Nvidia此時憑借着AI的風口一路狂奔,日益完善GRID技術和分片虛拟化,把對手遠遠的抛在了後面。此時Nvidia也開始在開源社群抛頭露面。并在2016年的KVM Forum的第二天,Nvidia架構師Neo隆重介紹了GRID vGPU技術。而恰巧本人作為GVT-g技術的代表在同一會場做GPU Live Migration的主題介紹。

大家感受一下當時的場景:GRID vGPU聽衆與GVT-g的聽衆對比:

【技術系列】淺談GPU虛拟化技術(第一章)
【技術系列】淺談GPU虛拟化技術(第一章)

不得不說,早年Intel作為核顯GPU的代表與Nvidia作為獨立顯示卡的代表在GPU研發上有深度合作。而随後與AMD的合作開發CPU+GPU的晶片。以及最近的Intel與AMD合作對抗Nvidia在GPU領域的擠壓。

以上三位既是對手又是朋友。

<b>2018</b><b>年:新領域</b>

Nvidia繼續保持着行業第一的身份把持了絕大部分市場佔有率。誰讓人家有遠見早早布局早早收割。

AMD 也有後續産品的釋出。比如針對老對手Nvidia的對标Deep Learning的MI25的釋出等。

随着GPU虛拟化應用的普及,GPU虛拟化的應用場景不再限于雲計算市場。各種新興行業也開始應用GPU虛拟化技術。最直接的便是車載娛樂系統,簡稱IVI(In-vehicle Information system )。于是三位老朋友又是老對手,都開始在IVI和自動駕駛領域開始競争。而這也為Intel GVT-g的技術落地帶來了轉機。于是Intel率先釋出了基于物聯網的虛拟化方案(ACRN),并夾帶着GVT-g的分片虛拟化技術浩浩蕩蕩地再次出發。

<b></b>

<b>關于作者:</b>

本文作者鄭曉,阿裡雲虛拟化平台進階技術專家,2006年浙江大學畢業後入職Intel亞太研發有限公司從事虛拟化與GPU相關研發工作。2017年底加入阿裡雲。曾發表多篇論文及國際專利。

繼續閱讀