现如今虚拟GPU(也称为GPU虚拟化)已经被应用到不同领域。在虚拟GPU这一概念提出以前,应用程序和桌面虚拟化技术已经存在很长时间,这些技术虽然有用,但是并非如宣传中所说得那般天花乱坠,其中糟糕的用户体验是其最大的缺陷之一。虚拟GPU之路的开启,解决了之前技术存在的一系列性能和体验问题。
虚拟GPU简单来说是通过对数据中心GPU进行虚拟化,实现用户在多个虚拟机中对该GPU的共享。
而虚拟GPU是如何运行的呢?驱动虚拟GPU运行的是软件。虚拟GPU软件使每台虚拟机都能像物理桌面一样利用GPU,将通常由CPU完成的工作转移到了GPU。虚拟GPU软件还可以转换服务器上安装的物理GPU,以创建可在多个虚拟机中共享的虚拟GPU。GPU与用户之间的关系不再是一对一,而是一对多。
通过技术人员的不懈努力,现在虚拟化平台的强大功能已经可以将GPU扩展至公司中的知识工作者、移动业务专员、设计师和工程师等成员,为他们的工作带来便利。
其中,基本办公应用程序对计算机图形性能的要求比以往更高,导致企业用户对显卡的要求越来越高, 虚拟GPU能够满足虚拟化数字工作环境和企业的基本要求。
而对于每天需要通过各种设备访问要求极高的应用程序、需要随时随地开展工作并处理大型数据集的创意和技术专业人士来说,基于虚拟GPU的虚拟工作站可以帮助这些人完成工作任务。
带有监控功能的虚拟GPU可为IT部门提供各种工具和见解,从而帮助他们节省错误排查的时间,并将更多时间用于战略性项目。除此之外,IT人员还能够更好地理解用户的需求并调整资源分配。这样可以节省运营成本,同时实现更好的用户体验。
了解更多关于虚拟GPU的信息可点击NVIDIA英伟达芝士回答官方账号文章: 什么是虚拟GPU?
在前面的一篇文章中介绍了Intel、AMD、NIVIDA三个厂家的GPU虚拟化技术,有兴趣的可以看看本号之前的文章,今天就具体的实践一下英伟达的vGPU。
如何选择GPU
NVIDIA 虚拟 GPU 软件产品包括 GRID 虚拟 PC (GRID vPC)、GRID 虚拟应用程序 (GRID vApp),以及 Quadro 虚拟数据中心工作站 (Quadro vDWS)。
GUP推荐对比看这里:
https://www. nvidia.cn/data-center/g raphics-cards-for-virtualization/
具体的GPU列表看这里:
https:// docs.nvidia.com/grid/gp us-supported-by-vgpu.html
物理机如何安装驱动:
直接运行run文件就可以了:NVIDIA-Linux-x86_64-430.46-vgpu-kvm.run
vGPU驱动说明:
A physical GPU that is passed through to a VM is bound to the vfio-pci kernel module. A physical GPU that is bound to the vfio-pci kernel module can be used only for pass-through. To enable the GPU to be used for vGPU, the GPU must be unbound from vfio-pci kernel module and bound to the nvidia kernel module.
# lspci -d 10de: -k
b1:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1)
Subsystem: NVIDIA Corporation Device 1306
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_vgpu_vfio, nvidia
查询GPU的BDF
root@example:~# lspci | grep NVID
b1:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1)
查找vGPU类型
root@example:/sys/class/mdev_bus/0000:b1:00.0/mdev_supported_types# grep -l "V100-1Q" nvidia-*/name
nvidia-105/name
注意:至于要创建哪种类型的vGPU,就看具体的物理GPU型号和vGPU要求了,看这个xxxx-grid-vgpu-user-guide.pdf文档能找到类似如下,各个物理GPU都有详细配置,根据自己情况来:
查看该类型能支持的vGPU个数
root@example:/sys/class/mdev_bus/0000:b1:00.0/mdev_supported_types# cat nvidia-105/available_instances
16
创建vGPU
root@example:/sys/class/mdev_bus/0000:b1:00.0/mdev_supported_types# uuidgen
b0ff7f66-c989-4841-ba57-6d5adcd55a2d
root@example:/sys/class/mdev_bus/0000:b1:00.0/mdev_supported_types# echo "b0ff7f66-c989-4841-ba57-6d5adcd55a2d" > nvidia-105/create
root@example:/sys/class/mdev_bus/0000:b1:00.0/mdev_supported_types# uuidgen
b94a0c97-946d-4e57-b317-8bdaa38e455a
root@example:/sys/class/mdev_bus/0000:b1:00.0/mdev_supported_types# echo "b94a0c97-946d-4e57-b317-8bdaa38e455a" > nvidia-105/create
检查创建是否成功
root@example:~# ls -l /sys/bus/mdev/devices/
total 0
lrwxrwxrwx 1 root root 0 Aug 21 12:41 b0ff7f66-c989-4841-ba57-6d5adcd55a2d -> ../../../devices/pci0000:ae/0000:ae:02.0/0000:b1:00.0/b0ff7f66-c989-4841-ba57-6d5adcd55a2d
lrwxrwxrwx 1 root root 0 Aug 21 13:44 b94a0c97-946d-4e57-b317-8bdaa38e455a -> ../../../devices/pci0000:ae/0000:ae:02.0/0000:b1:00.0/b94a0c97-946d-4e57-b317-8bdaa38e455a
qemu虚拟机使用
-device vfio-pci,sysfsdev=/sys/bus/mdev/devices/b94a0c97-946d-4e57-b317-8bdaa38e455a -uuid xxxxxxxxxxxxxxxxxxxxx
后面就是虚拟机内部安装对应的驱动程序了,一般名称为: xxxx_grid_win10_server2016_server2019_64bit_international.exe
删除:
root@example:/sys/devices/pci0000:ae/0000:ae:02.0/0000:b1:00.0/mdev_supported_types/nvidia-105/devices# echo 1 > b0ff7f66-c989-4841-ba57-6d5adcd55a2d/remove
关于授权:
Nvidia的vGPU在虚拟机内部使用是需要购买license的,具体的部署方式是需要搭建一台授权服务器,虚拟机内部安装显卡驱动后需要配置授权服务器的地址和端口,前提是虚拟机和授权服务器网络是通的,虚拟机每次开机后都要连接到授权服务器进行授权。
有使用GPU虚拟化的小伙伴可以在后面留言,共同讨论。
有使用GPU虚拟化的小伙伴可以在后面留言,共同讨论。