GPU的算力超分和視訊記憶體擴容探索

GPU的算力超分和視訊記憶體擴容探索

01

雲計算的資源超分超配

計算、儲存、網路是雲計算的基石,也是最寶貴的資源,如何進一步提高這些虛擬化之後資源的利用率就成為了控制成本的關鍵。物理資源的超分能帶來一些資源充分利用方面的好處,比如在一臺效能強大的硬體伺服器正作為虛擬客戶機執行著不同業務型別的服務,但是它們並非在同一時刻都會負載很高,有的業務伺服器在白天工作時間負載較重,而有的業務伺服器則主要在晚上工作,所以如果對物理資源進行合理的超分超配,給這幾個業務伺服器分配的系統資源總數大於實際擁有的物理資源,就可能在白天和夜晚都充分利用物理硬體資源。而且由於幾個業務不會同時對物理資源造成很大的壓力,它們各自的服務質量(QoS)也能得到保障,所以我們可以透過對資源的超分超配進一步提升它們的價值。

02

CPU的超分

在說CPU超分之前,我們先搞清楚物理CPU和vCPU的關係。一般一臺2U物理伺服器上通常配置2個物理CPU(Socket),每個CPU有多個核(core);在開啟超執行緒Hyper-Threading技術之後,每個core有2個執行緒(Thread);在虛擬化環境中一個Thread對應一個vCPU。

目前主流的雲計算系統底層虛擬化都是基於KVM來實現的,在開源虛擬化KVM中每一個VM就是一個使用者空間的QEMU程序,分配給虛擬機器的vCPU就是該程序派生的一個執行緒Thread,由Linux核心動態排程到基於時分複用的物理CPU上執行,KVM本身可以支援vCPU超分(over-commit),使得分配給虛擬機器的vCPU數量可以超過物理CPU執行緒總量。所以在當前雲計算中,我們可以根據業務的負載,將CPU按照1:1、1:2、1:4等不同的超配比進行超分——比如之前物理CPU核心是20核,開啟超執行緒為40核;如果按照1:2進行超分之後,可分配的資源就變成80核,這樣就可以建立更多的虛機資源出來。

03

記憶體的超分

在開源虛擬化KVM中,記憶體也是允許過載使用(over-commit)的,KVM能夠使分配給虛擬機器的記憶體總數大於實際可用的物理記憶體總數。由於虛擬機器作業系統及其執行的應用程式並非一直100%地使用其分配到的記憶體,而且宿主機上的多個虛擬機器一般也不會同時達到100%的記憶體使用率,所以記憶體也可以進行超分。記憶體的超分配比跟CPU類似,可以根據1:1、1:2等不同的配比超配,比如物理記憶體是8G,超分1:2則可以給虛機分配的資源為16G。一般為了保障業務效能,記憶體超配比較低。

04

儲存的超配

目前很多分散式儲存可以支援儲存的超配,主要實現方式是在雲計算平臺建立虛擬機器雲盤時並不佔用物理儲存的空間,只有當虛擬機器寫入資料時,再根據寫入資料量動態分配物理儲存空間。因此理論上虛擬機器分配的磁碟大小總和不受物理儲存總容量的限制,即虛擬機器磁碟容量可以超配。因為虛擬機器執行過程中會持續寫入資料,當虛擬機器動態分配的儲存空間接近物理儲存的實際容量時,虛擬機器無法繼續分配到儲存空間從而導致執行異常。所以配置虛擬機器的磁碟大小總和不建議超配太多,比如超配比為1:1。2。為了保障整個儲存叢集的穩定性可靠性,原則上要求實際儲存量一般不能超過叢集總容量的80%-90%,如果超過這個閾值就要進行儲存叢集的擴容了。

05

GPU資源的超分超配探索

上面我們分析了雲計算中CPU、記憶體以及儲存的超分超配,其實都藉助了底層技術的支援,比如CPU、記憶體是藉助KVM虛擬化來實現,儲存是藉助分散式儲存的能力來實現,那麼在GPU領域是否也可以透過軟體定義的方式來實現類似的超分超配的能力呢?

06

算力的超分

在已經擁有GPU虛擬化的基礎上,我們是否可以將單個GPU算力超分給多個應用,比如每個應用分配100%算力資源,當兩個業務峰值不疊加時可以充分使用GPU算力,同時也能滿足對於效能的需求。當兩個業務峰值疊加時,可以根據業務重要程度設定不同的優先順序,優先順序高的業務可以享有更多的算力,保障業務執行。

GPU的算力超分和視訊記憶體擴容探索

支援多個應用共享算力

一個應用不計算時可以把算力提供給另外一個應用使用

GPU的算力超分和視訊記憶體擴容探索

支援設定多個應用執行時優先順序,保證突發高優先順序任務的服務質量

07

視訊記憶體的擴容

同樣在GPU虛擬化的基礎上是否可以進行視訊記憶體的擴容,其實早在CUDA 6的時候,NVIDIA引入了CUDA歷史上一個非常重要的程式設計模型改進-Unified memory,Unified memory在程式設計師的視角中,維護了一個統一的記憶體池,在CPU與GPU中共享,使用了單一指標進行託管記憶體,由系統來自動地進行記憶體遷移。所以我們是否可以利用CPU端的記憶體,透過執行時的熱切換,向同時執行的多個應用提供超出物理視訊記憶體大小的虛擬視訊記憶體,類似於記憶體和swap分割槽的方式進行視訊記憶體的擴容?

GPU的算力超分和視訊記憶體擴容探索

可以支援併發多個任務執行在同一個GPU上,視訊記憶體超分比 200%充分利用多個應用存在的計算間隙

可以支援單個任務超出單個GPU視訊記憶體資源

目前GPU虛擬化池化的技術越來越成熟,GPU虛擬化本身已經能夠做到算力切分、遠端呼叫、多卡聚合、資源動態釋放動態掛載的能力。在此基礎上,探索並實現GPU算力超分和視訊記憶體擴容勢必會成為未來的趨勢。