Nvidia vGPU技术简介

清夏晚风

Nvidia-VGPU简介

NVIDIA virtual GPU (vGPU) 技术是一种GPU虚拟化解决方案,允许物理GPU资源被多个虚拟机共享,同时为每个虚拟机提供独立的GPU加速能力。

基本原理

Nvidia vGPU技术通过软件层将物理GPU划分为多个虚拟GPU实例,每个实例都可以独立分配给不同的虚拟机使用。其工作原理如下:

  1. 在宿主机上安装vGPU驱动程序和管理组件
  2. 使用NVIDIA vGPU管理器控制和管理vGPU资源
  3. 创建多个 mediated device (mdev) 设备,即vGPU实例
  4. 将这些vGPU实例直通给不同的虚拟机
  5. 虚拟机内部安装相应的NVIDIA驱动程序来使用vGPU资源

这种技术类似于Intel的GVT-g图形虚拟化技术,但NVIDIA vGPU管理器是整个方案的核心组件,负责资源调度和管理。

在宿主机上安装好nvidia vgpu驱动之后,会有2个服务。

  • nvidia-vgpud.service
  • nvidia-vgpu-mgr.service

简单的解释下这2个服务在vgpu启动时的作用:

  1. 在使用vGPU卡的时候,正常逻辑是,开机之后,nvidia-vgpud 服务会查询内核中所有已安装的 GPU,并检查 vGPU 功能。如果找到支持 vGPU 的 GPU,则 nvidia-vgpu 会创建一个 MDEV 设备,系统会创建 /sys/class/mdev_bus 目录。

  2. 将这些设备分配给 VM,当 VM 启动时,它将打开 MDEV 设备。nvidia-vgpu-mgr 此时会使用 ioctl 与内核进行通信。当 nvidia-vgpu-mgr 询问 GPU 是否支持 vGPU 时,vgpu会回答是,随后尝试初始化 vGPU 设备。

目前vgpu_unlock项目主要支持时间切片(Time-sliced)技术,即单个GPU的性能会在多个vGPU实例之间动态分配。例如,对于一张Tesla P4显卡:

  • 如果只创建一个vGPU实例,该实例可以获得接近100%的GPU性能
  • 如果同时创建两个vGPU实例,每个实例将分别获得约50%的GPU性能

根据NVIDIA vGPU的技术规范,单个vGPU实例至少需要1GB显存。因此,对于具有8GB显存的Tesla P4显卡,理论上最多可以同时运行8个1GB显存的vGPU实例。

注意,Nvidia-vGPU授权是驱动授权,不是硬件授权。vgpu_unlock 这个项目并不能破解Nvidia-vGPU授权。
它这是使消费卡能够支持vGPU 技术,而不是破解了授权。需要授权,还是需要去nvidia购买!

部署配置

环境要求

  1. 硬件要求

    • 支持vGPU技术的NVIDIA显卡(Tesla系列推荐)
    • 服务器主板支持IOMMU/VT-d功能
    • 足够的系统内存和存储空间
  2. 软件要求

    • Linux操作系统(如Ubuntu、CentOS、RHEL等)
    • 支持vGPU的NVIDIA驱动程序
    • 虚拟化平台(如KVM、Proxmox VE等)

配置步骤

  1. 启用IOMMU

    • 在BIOS中启用VT-d/IOMMU功能
    • 在GRUB配置中添加IOMMU内核参数
  2. 安装vGPU驱动

    • 下载并安装适合的NVIDIA vGPU驱动
    • 重启系统以加载驱动模块
  3. 创建vGPU实例

    • 使用nvidia-vgpu-mgr工具创建指定类型的vGPU
    • 配置vGPU实例的显存大小和其他参数
  4. 分配给虚拟机

    • 在虚拟化平台中将vGPU设备直通给目标虚拟机
    • 在虚拟机中安装对应的NVIDIA驱动

常见配置类型

NVIDIA vGPU支持多种配置类型,常见的包括:

  • GRID P4-1Q:1GB显存,适合轻量级图形应用
  • GRID P4-2Q:2GB显存,适合中等图形负载
  • GRID P4-4Q:4GB显存,适合重度图形应用
  • GRID P4-8Q:8GB显存,适合专业图形工作站

选择合适的配置类型需要根据实际应用场景和性能需求来决定。

参考资料

官方资源

驱动获取

配置教程

社区资源

官方支持列表:

https://docs.nvidia.com/vgpu/gpus-supported-by-vgpu.html

实用配置示例

1. 查看系统中的GPU设备

1
lspci | grep -i nvidia

2. 检查vGPU驱动是否正常加载

1
2
lsmod | grep nvidia
nvidia-smi

3. 创建vGPU实例

1
2
3
4
5
# 查看支持的vGPU类型
ls /sys/class/mdev_bus/

# 创建vGPU实例(以Tesla P4为例)
echo "46" > /sys/class/mdev_bus/0000:00:05.0/mdev_type/create

4. Proxmox VE中配置vGPU

在Proxmox VE中,可以通过以下步骤为虚拟机分配vGPU:

  1. 编辑虚拟机配置文件(/etc/pve/qemu-server/{VMID}.conf)
  2. 添加vGPU设备配置:
    1
    hostpci0: 00:05.0,pcie=1
  3. 启动虚拟机并安装NVIDIA驱动

5. 性能监控

1
2
3
4
5
# 查看vGPU使用情况
nvidia-smi -q -d UTILIZATION,MEMORY,POWER

# 查看vGPU进程
nvidia-smi pmon

注意事项

  1. 许可证管理:生产环境中需要正确配置NVIDIA许可证服务器
  2. 兼容性检查:确保使用的驱动版本与操作系统和GPU型号兼容
  3. 资源规划:合理规划vGPU实例数量和资源配置,避免资源争用
  4. 安全性考虑:定期更新驱动程序,关注安全公告
  • Title: Nvidia vGPU技术简介
  • Author: 清夏晚风
  • Created at : 2025-12-19 00:00:00
  • Updated at : 2026-01-13 16:48:23
  • Link: https://blog.kimikkorow.eu.org/NVIDIA相关/VGPU相关/00.Nvidia-VGPU简介/
  • License: This work is licensed under CC BY-NC-SA 4.0.