1. 程式人生 > 其它 >Openstacak 實現GPU虛擬機器

Openstacak 實現GPU虛擬機器

在宿主機中做虛擬化

開啟CPU虛擬化支援 VT-D 和IOMMU 在系統bios中檢視VT-D是否開啟

dmesg | grep -e DMAR -e IOMMU 

確認IOMMU已經開啟

VFIO 虛擬化驅動

預設開機狀態下 ,通過指令

Lspci | grep VGA 檢視當前安裝NVIDIA 顯示卡

[root@compute ~]# lspci | grep NVIDIA

05:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)

06:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)

顯示更詳細的資訊

[root@compute ~]# lspci -nn | grep NVIDIA

05:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204GL [Tesla M60] [10de:13f2] (rev a1)

06:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204GL [Tesla M60] [10de:13f2] (rev a1)

其中 05:00.0 表示顯示卡安裝的物理位置, 以及裝置相關配置放在linux 的檔案目錄 /sys/bus/pci/devices/

VGA compatible controller [0300] 表示 M60 工作在圖形模式。

10de:13f2 為裝置型號 10de vendor ID 為廠商ID 即NVIDIA 13f2 為 product ID 即M60顯示卡上 一個 GM204GL 核

要想讓GPU可以在虛擬機器上執行 ,實現虛擬機器到物理機的中斷對映,實體地址對映 bar空間對映 等

需要在物理機上 使GPU載入VFIO 驅動 在未安裝NVIDIA的情況下,系統自帶的驅動是nouveau,在安裝了NVIDIA 驅動使用的 nvidia

[root@compute ~]# lspci -k -d 10de:13f2

05:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)

Subsystem: NVIDIA Corporation Device 115e

Kernel driver in use: vfio-pci

Kernel modules: nouveau, nvidia_drm, nvidia

06:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)

Subsystem: NVIDIA Corporation Device 115e

Kernel driver in use: vfio-pci

Kernel modules: nouveau, nvidia_drm, nvidia

在openstack中新增GPU

配置 openstack nova服務

​ nova-cpu.conf,nova.conf

注意 :

​ 配置檔案目錄 為 /etc/nova/

​ 管理 節點 nova 服務 使用的 配置檔案 為 nova.conf,計算節點 nova-compute 服務 使用 配置檔案 為 nova-cpu.conf ,兩個服務均為 systemd 服務 ,因此 可以在 /etc/system/systemd 資料夾找到對應的配置

在管理節點filter_scheduler 新增 PciPassthroughFilter

enabled_filters =PciPassthroughFilter

新增白名單

[pci]

alias = { "vendor_id":"10de", "product_id":"13f2", "device_type":"type-PCI", "name":"GPU-M60" }

passthrough_whitelist = { "vendor_id": "10de", "product_id": "13f2" }

新增完成後在計算節點檢視檢視實時日誌:

journalctl -f --unit devstack@* 

Final resource view: name=compute phys_ram=32672MB used_ram=512MB phys_disk=149GB used_disk=0GB total_vcpus=24 used_vcpus=0 pci_stats=[PciDevicePool(count=2,numa_node=0,product_id='13f2',tags={dev_type='type-PCI'},vendor_id='10de')]

在例項型別,元資料上新增 要透傳的pci裝置

pci_passthrough:alias =GPU-M60:1

其中:GPU-M60 為pci裝置名 1 表示數量

生成例項後檢視是否GPU成功載入

在客戶機上安裝NVIDIA驅動

通過阿里的 apt 源 直接下載

curl -fsSL https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_64/7fa2af80.pub/
|sudo apt-key add -

echo "deb https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_64/ ./" > /etc/apt/sources.list.d/cuda.list

sudo apt update 

sudo apt install -y nvidia-driver-450-server

#nvswitch 機器 需要下載 fabricmanager 工具

sudo apt install -y nvidia-fabricmanager-450

sudo systemctl enable nvidia-fabricmanager

sudo systemctl start nvidia-fabricmanager

安裝CUDA

在 sample 資料夾下有 GPU 的效能 測試樣例

deviceQuery 查詢 GPU 狀態

bandwidthTest pcie 通訊測試