一、什么是GPU
GPU:Graphics Processing Unit,即圖像處理單元,是一種專門處理圖像運算工作的微處理器。
CPU是由若干核(core)和許多的緩存(cache memory)組成,因此CPU可以并行處理若干線程。相對地,GPU是由幾百個核組成,因此可以并發(fā)處理數(shù)千個線程。盡管GPU的內(nèi)核數(shù)目遠遠超過CPU,但是它的每個核的處理能力遠小于CPU的核,而且不具有現(xiàn)代操作系統(tǒng)的所需要的一些特性,GPU并不合適用于處理普通的計算。它們更多地用于計算消耗性操作,比如視頻處理和物理仿真等。
二、虛擬化環(huán)境GPU使用方式
在虛擬化環(huán)境中,GPU使用目前可以分為以下幾類:GPU直通模式,即GPU透傳;GPU SR-IOV,目前主要是AMD在采用此種方案;GPU分片虛擬化,包括Intel GVT-g和NVIDIA GRID vGPU。
以下是對這些方案的簡單介紹:
1.GPU透傳:物理GPU直接透傳給虛機。第一種方案,在我們的產(chǎn)品里已經(jīng)實現(xiàn),且支持大部分GPU設(shè)備。對于Windows鏡像,我們建議云主機從UEFI啟動。
2.GPU SR-IOV:使用SR-IOV技術(shù),將物理GPU劃分成多個VF,每個VF提供給云主機使用。AMD采用的就是這種方案,目前市場上2款產(chǎn)品S7150和MI25。
3.GPU分片虛擬化。Intel提供GVT-g方案:針對不同的hypervisor,應(yīng)用于KVM上,叫KVMGT;應(yīng)用于Xen上,稱為XenGT。
NVIDIA GRID vGPU產(chǎn)品系列
以上2個廠家均采用GPU分片虛擬化方案,即基于Linux內(nèi)核VFIO mediated框架。此方案的kernel部分代碼稱為mdev模塊,由Intel和NVIDIA共同提交到4.10內(nèi)核,但是CentOS已經(jīng)backport到3.10.x內(nèi)核。分片虛擬化與透傳的區(qū)別是,分片虛擬化把會影響性能的訪問直接透傳給虛擬機,把性能無關(guān)和功能性的MMIO訪問做攔截并在mdev模塊內(nèi)做模擬。
當然,也可以簡單的理解為對物理GPU資源的分片劃分,如物理GPU的顯存大小為16G,如果劃分出4個vGPU,那么每個vGPU的顯存大小就是4G。實現(xiàn)GPU分片虛擬化需要滿足以下條件:
1.硬件支持:Intel需要特定的CPU支持,Intel(r) Xeon(r) E3_v4, E3_v5 and E3_v6 with Intel Graphics processor。NVIDIA也需要特定的GPU卡,可參考NVIDIA官方網(wǎng)站。
2.內(nèi)核版本、QEMU版本(v2.0及以上)
3.GPU mdev驅(qū)動支持,這部分Intel已經(jīng)開源,但是NVIDIA不開源,需要通過License來獲取。從AWStack 2.6版本,我們產(chǎn)品支持GPU透傳,即將一個物理的GPU設(shè)備透傳給某一個云主機,獨享物理GPU資源。實現(xiàn)GPU虛擬化,每個云主機擁有一個vGPU設(shè)備,在滿足客戶圖像視頻處理、機器學習、深度學習等應(yīng)用場景的同時,做到物理GPU資源共享。
如何在產(chǎn)品中使用NVIDIA vGPU
一、前期準備
1.采購到NVIDIA支持GPU虛擬化的物理GPU卡后,需要在NVIDIA官方網(wǎng)站上注冊賬號, 并購買License或申請90天的試用版。針對Hypervisor類型可下載不同版本的軟件包:
2.安裝物理GPU卡,GPU卡對散熱要求比較高,如果溫度過高會出現(xiàn)掉卡問題。
3.安裝NVIDIA vGPU manager之前先禁用操作系統(tǒng)上的Nouveau驅(qū)動
1)在安裝GPU卡的物理節(jié)點上,新建文件
/etc/modprobe.d/nvidia-installer-disable-nouveau.conf
blacklist nouveau
options nouveau modeset=0
2)重新生成ramdisk,并重啟物理節(jié)點:
# dracut –force
# reboot
3)在安裝有物理GPU卡的物理節(jié)點上安裝vGPU manager軟件
#?chmod 777 NVIDIA-Linux-x86_64-440.43-vgpu-kvm.run
# ./NVIDIA-Linux-x86_64-440.43-vgpu-kvm.run
4)確認nvidia_vgpu_vfio內(nèi)核模塊已被加載
# lsmod |grep nvidia_vgpu_vfio
5)啟動并加載nvidia-vgpu-mgr服務(wù)
# systemctl enable nvidia-vgpu-mgr.service
# systemctl start nvidia-vgpu-mgr.service
6)重啟物理機器
# reboot
7)確認內(nèi)核mdev目錄是否生成
# ls /sys/class/mdev_bus/
0000:18:00.0?0000:82:00.0
4.搭建NVIDIA License Server
云平臺云主機使用vGPU,需要獲取License,一般需要在客戶環(huán)境里搭建License server,可以是單節(jié)點,也可以部署兩臺做HA。License server安裝時,需要將從官網(wǎng)上獲取到的License文件,上傳到License server上。云主機需要能訪問License server的7070端口,來獲取License。
二、用戶使用流程:
1.前期準備工作完成后,登錄云管平臺,同步物理節(jié)點GPU信息到云管平臺。
2.云管界面,選擇物理節(jié)點、物理GPU來創(chuàng)建vGPU規(guī)格。
3.新建vGPU規(guī)格完成后,可以在云主機頁面創(chuàng)建云主機,支持2種場景:創(chuàng)建云主機時同時選擇vGPU規(guī)格或者vGPU設(shè)備;或者創(chuàng)建云主機完成后,再綁定vGPU設(shè)備。創(chuàng)建帶vGPU的云主機或者云主機綁定vGPU后,可以在物理節(jié)點上看到vGPU設(shè)備保存在sysfs中,云主機XML文件會生成一個設(shè)備和這個關(guān)聯(lián):
云主機XML:
云主機啟動之后,用戶需要在云主機內(nèi)安裝從官方網(wǎng)站下載的軟件包里的驅(qū)動,并配置連接License server。當然也可以自定義鏡像模板,預(yù)安裝好云主機vGPU驅(qū)動以及配置好License server連接。至此,用戶可以在云主機里運行自己的應(yīng)用了。
fqj
評論