一、背景
公司設計部需要使用大型的CAD/CAM軟體進行設計。 比如執行 Siemens NX 的工作站配置了 i9 13900KF 和 NVIDIA RTX A5000顯示卡。略微差一些的工作站,配置了 A2000的顯示卡。 還有一些相對老舊的工作站配置 Q2000/Q2200 的顯示卡。 實際工作中,設計師的工作是分階段的。 有些設計任務需要高階的工作站,另一些任務,使用中低端的工作站也能勝任。
這些圖形工作站的使用存在如下一些問題:
1、資源利用率低。 比如將最高配置的工作站分配給某些員工,並不能充分發揮裝置的作用。裝置的實際利用率很低。
2、資訊保安問題。 設計圖紙是企業的關鍵核心資產。圖紙的丟失和洩密,會給企業造成巨大的損失。直接讓員工使用圖形工作站,面臨洩密和資料丟失的風險。
3、遠端設計需求。公司希望員工離開辦公室,也能進行遠端設計。比如回家、出差時,也能進行設計。另外,設計圖紙可能需要提供給供應商,或者提供給客戶進行評審或者聯合設計。 如果在本地工作站執行CAD/CAM 無法滿足遠端設計的業務需求。
二、工作站虛擬化介紹
ShareStation工作站虛擬化是利用最新的GPU虛擬化技術,讓使用者透過客戶端連線工作站,實現多個使用者共享使用圖形工作站。滿足遠端設計需求和資訊保安需求。
我們選擇一臺高配的工作站進行虛擬化改造。工作站配置如下:
CPU:intel i9:13900KF
記憶體:64G
顯示卡:nvidia RTXA5000-24G
顯示卡:A2000
硬碟:1TB NVME
工作站虛擬化的軟體系統採用 企業級 開源虛擬化平臺 Proxmox VE 和 多平臺、分散式、一體化的雲桌面軟體系統 DoraCloud 。
三、硬體安裝和BIOS配置
為了正常啟用顯示卡的虛擬化功能,硬體安裝有如下要點:
1、A5000顯示卡不能接顯示器。 A5000用作虛擬化顯示卡,不能用於輸出,因此不能接顯示器。這時需要有另一個顯示卡接顯示器。
2、BIOS 開啟 SR-IOV(也叫 VT-D),開啟 Above 4G MMIO BIOS Assignment
四、工作站虛擬化的軟體安裝
1、安裝Proxmox VE 7.x
安裝Proxmox VE 7.x 參考 我之前的文章。《https://www.cnblogs.com/doracloud/p/17203221.html》
2、安裝和配置NVIDIA GRID vGPU
RTX A5000 GPU有多種工作模式。預設情況下是支援顯示輸出的。為了啟用vGPU,需要關閉顯示輸出功能。 使用 displaymodeselector 工具,可以對顯示卡進行配置。displaymodeselector的使用方法,也參見上面的文章。
如果 A5000 已經接了顯示器,並且作為工作站的預設顯示輸出,此時再修改顯示A5000的工作模式,就會工作站無法點亮顯示器,無法正常進入本地操作。因此前面提到的硬體準備時,必須要有另外的顯示卡(獨立顯示卡或者整合顯示卡)作為工作站的預設顯示輸出。
安裝 NVIDIA的vGPU驅動,可以使用這個指令碼。 https://gitee.com/deskpool/proxmox-vgpu
該命令的使用方法如下:
登陸 Proxmox VE的命令。 gpu01.sh 更新Proxmox VE的源。 gpu02.sh 啟用 IOMMU。
apt install git-core -y git clone https://gitee.com/deskpool/proxmox-vgpu ./proxmox-vgpu/nvidia/gpu01.sh ./proxmox-vgpu/nvidia/gpu02.sh
root@pve08:~# dmesg |grep IOMMU [ 0.046588] DMAR: IOMMU enabled
./proxmox-vgpu/nvidia/gpu03.sh
root@pvehost:~# nvidia-smi Fri May 24 16:20:22 2024 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.161.05 Driver Version: 535.161.05 CUDA Version: N/A | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA RTX A5000 On | 00000000:01:00.0 Off | 0 | | 30% 46C P8 29W / 230W | 22272MiB / 23028MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ | 1 NVIDIA RTX A2000 12GB On | 00000000:04:00.0 Off | 0 | | 30% 42C P8 12W / 70W | 0MiB / 11514MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | 0 N/A N/A 657157 C+G vgpu 7424MiB | | 0 N/A N/A 657163 C+G vgpu 7424MiB | | 0 N/A N/A 657623 C+G vgpu 7424MiB | +---------------------------------------------------------------------------------------+
/usr/lib/nvidia/sriov-manage -e 0000:01:00.0
執行該命令之後,mdevctl types 命令可以輸出 vGPU的型別,即表明vGPU 驅動已經配置成功。
啟用 SR-IOV 的命令在系統重啟後,將失效。 因此需要建立一個 後臺服務,在系統每次啟動時,自動啟用顯示卡的 SR-IOV。 指令碼如下:
cat >/etc/systemd/system/sriov.service <<EOF [Unit] Description=Script to enable SR-IOV on boot [Service] Type=simple #start SR-IOV ExecStart=/usr/lib/nvidia/sriov-manage -e 0000:01:00.0 Restart=on-failure [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable sriov.service systemctl start sriov.service
然後重啟伺服器,如果可以透過 mdevctl types 檢視到 vGPU的型別,即表明伺服器配置好了vGPU。
root@pvehost:~# mdevctl types |more 0000:01:00.4 nvidia-657 Available instances: 0 Device API: vfio-pci Name: NVIDIA RTXA5000-1B Description: num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=24 nvidia-658 Available instances: 0 Device API: vfio-pci Name: NVIDIA RTXA5000-2B Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=12 nvidia-659 Available instances: 0 Device API: vfio-pci Name: NVIDIA RTXA5000-1Q Description: num_heads=4, frl_config=60, framebuffer=1024M, max_resolution=5120x2880, max_instance=24 nvidia-660 Available instances: 0 Device API: vfio-pci Name: NVIDIA RTXA5000-2Q Description: num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=7680x4320, max_instance=12 nvidia-661 Available instances: 0 Device API: vfio-pci Name: NVIDIA RTXA5000-3Q Description: num_heads=4, frl_config=60, framebuffer=3072M, max_resolution=7680x4320, max_instance=8 nvidia-662 Available instances: 0 Device API: vfio-pci Name: NVIDIA RTXA5000-4Q Description: num_heads=4, frl_config=60, framebuffer=4096M, max_resolution=7680x4320, max_instance=6 nvidia-663 Available instances: 0 Device API: vfio-pci Name: NVIDIA RTXA5000-6Q Description: num_heads=4, frl_config=60, framebuffer=6144M, max_resolution=7680x4320, max_instance=4
....................................
....................................
3、安裝和配置 DoraCloud
DoraCloud for Proxmox VE的安裝配置教程很多。可以參考官網的文件。
https://docs.doracloud.cn/installation-upgrade/sharestation/
4、安裝 CAD 軟體
透過編輯DoraCloud桌面模板,安裝 NX 軟體,以及常用的辦公軟體。
為了達到更好的視覺效果,在模板中安裝朵拉雲桌面協議 DDP Server。
模板製作完畢後,建立桌面池,把桌面池的vGPU型別設定成 8Q,這樣工作站可以虛擬出三臺 視訊記憶體配置為8G的虛擬桌面。 桌面池協議可以選擇 RDP 或者 DDP。
根據桌面池,發放了3個桌面,每個桌面具有 8G 的視訊記憶體。
五、應用測試 和 效果
可以透過多種客戶端訪問虛擬工作站。
1、DoraClient 應用程式。 包括 Windows 版本 和 Linux 版本。
2、朵拉雲科技的雲終端產品,比如 JC36雲終端 、DC20 雲終端。
3、x86 機器,安裝 DoraOS 瘦客戶機軟體,改造成雲終端。
為了達到最佳效果,推薦採用支援 DDP 協議的雲終端訪問 DoraCloud。 目前只有 DoraOS 或者 x86 的雲終端支援DDP 協議。
下圖為雲終端連線虛擬工作在的效果,桌面上執行了 Siemens PLM Software NX,以及中望CAD 2021 。
採用基於DoraCloud的工作站虛擬化方案 ,可以將圖形工作站的專業顯示卡進行靈活的切分。 比如進行復雜專案時,一臺工作站可以劃分為3份,人均配置8G視訊記憶體,滿足大型應用的需求。進行一些簡單的專案時,工作站可以切分為8份,人均配置3G視訊記憶體,滿足團隊多個成員的設計需求。 既避免了資源的浪費,也解決了低端工作站效能不足的問題。