ShareStation工作站虛擬化實現圖形工作站的一機多用,滿足大型設計軟體需求

朵拉云發表於2024-05-24

一、背景

公司設計部需要使用大型的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

Proxmox VE 系統會重啟,重啟後,先檢查 IOMMU是否啟用。
root@pve08:~# dmesg |grep IOMMU
[    0.046588] DMAR: IOMMU enabled

然後執行gpu03.sh,安裝 grid 16.4的驅動。
./proxmox-vgpu/nvidia/gpu03.sh

Proxmox VE 系統再次重啟後,進入 Proxmox VE,透過 nvidia-smi 命令驗證,可以看到顯示卡驅動已經安裝。
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 |
+---------------------------------------------------------------------------------------+

接下來,你輸入 mdevctl ,檢視 vGPU 型別(vGPU Profile),如果是 Ampere架構之前的顯示卡,此時已經能夠工作。 但是對Ampere架構的A5000顯示卡,還需要一步,透過命令開啟SR-IOV。透過命令 sriov-manage -e 啟用SR-IOV。比如筆者的顯示卡地址為 01:00.0,命令如下:

/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視訊記憶體,滿足團隊多個成員的設計需求。 既避免了資源的浪費,也解決了低端工作站效能不足的問題。

相關文章