一、背景
公司设计部需要使用大型的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显存,满足团队多个成员的设计需求。 既避免了资源的浪费,也解决了低端工作站性能不足的问题。