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