阿里雲鄭曉:淺談GPU虛擬化技術
第一章 GPU虛擬化發展史
GPU的虛擬化發展歷程事實上與公有雲市場和雲計算應用場景的普及息息相關。如果在10年前談起雲計算,大部分人的反應是「不知所云「。但是隨著雲計算場景的普及,概念的深入人心,慢慢地大家都對雲計算有一個較清晰的概念和實例化的理解。自然,隨著應用場景從單一依賴CPU的計算單元的應用擴展到多種體系架構,異構計算場景的應用上來後,對GPU,FPGA,TPU等專業計算晶元也提出了虛擬化和上雲的強烈要求。尤其是最近幾年機器學習、深度學習等領域的快速發展,催生了異構計算場景搬遷上雲的高潮。
那麼這個異構計算應用場景的市場規模有多大呢?異構計算作為機器學習人工智慧的計算載體,先來看看人工智慧前景如何?(引用出處:https://bg.qianzhan.com/report/detail/459/180116-3c060b52.html)
圖一:2015-2018年全球人工智慧市場規模及預測(單位:億元,%)
圖二: 2014-2018年中國人工智慧產業市場規模及增速(單位:億元,%)
所以我們不難理解,為什麼各大雲計算廠商無論大小,都會極力研發異構計算產品,爭搶市場的主導地位。
由於GPU是異構計算的主力軍,讓我們來回顧一下GPU虛擬化的發展歷史,並對各個GPU廠商做一個橫向比較,大家就不難看出來,哪些廠商處於領導地位,哪些是醬油黨
2008年:序言
VMware的GPU全虛擬化VSGA技術是第一次對GPU共享虛擬化的嘗試,於2008年底在VMware商業化的Workstation 6.5和Fusion 2.0版本中首度問世,後續又在面向數據中心的產品vSphere中有集成。但這是一個VMware專有的閉源解決方案,在開源社區和VMware之外的產品中沒有見到大規模應用,不是本篇關注的重點。
2012年:開始
隨著kernel VFIO模塊的引入和直通設備的慢慢普及,GPU的虛擬化之路得以開啟。而開始大規模運用,則大體是伴隨著VFIO模塊的成功落地。事實上,在2012年左右,GPU直通技術一直是VFIO模塊的一個重要應用場景。
2013年:第一個產品與群雄逐鹿
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年:vGPU 分片虛擬化誕生
一年後,也就是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方案。
2015年:分化
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,2017年:回報
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的聽眾對比:
不得不說,早年Intel作為核顯GPU的代表與Nvidia作為獨立顯卡的代表在GPU研發上有深度合作。而隨後與AMD的合作開發CPU+GPU的晶元。以及最近的Intel與AMD合作對抗Nvidia在GPU領域的擠壓。
以上三位既是對手又是朋友。
2018年:新領域
Nvidia繼續保持著行業第一的身份把持了絕大部分市場份額。誰讓人家有遠見早早布局早早收割。
AMD 也有後續產品的發布。比如針對老對手Nvidia的對標Deep Learning的MI25的發布等。
隨著GPU虛擬化應用的普及,GPU虛擬化的應用場景不再限於雲計算市場。各種新興行業也開始應用GPU虛擬化技術。最直接的便是車載娛樂系統,簡稱IVI(In-vehicle Information system )。於是三位老朋友又是老對手,都開始在IVI和自動駕駛領域開始競爭。而這也為Intel GVT-g的技術落地帶來了轉機。於是Intel率先發布了基於物聯網的虛擬化方案(ACRN),並夾帶著GVT-g的分片虛擬化技術浩浩蕩蕩地再次出發。
關於作者:
本文作者鄭曉,阿里雲虛擬化平台高級技術專家,2006年浙江大學畢業後入職Intel亞太研發有限公司從事虛擬化與GPU相關研發工作。2017年底加入阿里雲。曾發表多篇論文及國際專利。
本文授權來源:
- 責任編輯:鞠東穎-
- END -
TAG:Linux寶庫 |