一、 基础概念与实现方式
GPU虚拟化是指将物理GPU资源分配给虚拟机,以提高图形处理性能和计算能力。KVM支持多种GPU虚拟化方式,包括直通模式、SR-IOV和半虚拟化。
1、GPU直通模式(Passthrough)
通过IOMMU技术将物理GPU的PCIe设备直接映射到虚拟机,实现接近物理机的性能(损耗<5%)。此模式下虚拟机独占GPU资源,适合高性能计算场景(如AI训练、3D渲染)。
1.1 前置条件:
- CPU虚拟化支持:CPU必须支持虚拟化技术,可以通过以下命令检查:
grep -E ' (vmx|svm)' /proc/cpuinfo lscpu | grep -E ' (vmx|svm)'
- 主板IOMMU支持:IOMMU(输入/输出内存管理单元)用于管理设备与系统内存之间的数据传输。需要在BIOS中启用IOMMU。
- GPU的UEFI支持:虽然不是必须,但支持UEFI的GPU可以提供更好的兼容性和功能(如NVIDIA Quadro系列)。
1.2 配置流程:
(1)先确认GPU型号是否支持直通(如NVIDIA Tesla系列企业级显卡),部分消费级显卡可能触发驱动锁(如NVIDIA GeForce的Error 43);
(2)启用IOMMU
# 修改/etc/default/grub文件,添加intel_iommu=on iommu=pt参数
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet intel_iommu=on iommu=pt"
# 生成新的GRUB配置文件并重启系统
grub2-mkconfig -o /boot/grub2/grub.cfg reboot
# 验证启用状态
dmesg | grep -E "DMAR|IOMMU"
(3)VFIO驱动绑定
# 查询GPU设备的供应商ID和设备ID
lspci -nn | grep -i nvidia
# 创建VFIO配置文件
echo 'options vfio-pci ids=10de:1db6' > /etc/modprobe.d/vfio.conf
# 配置系统自动加载vfio-pci模块
echo 'vfio-pci' > /etc/modules-load.d/vfio-pci.conf
# 重启系统并检查vfio是否成功加载
dmesg | grep -i vfio
1.3 运维关注点
- 硬件兼容性:需确认GPU型号支持直通(如NVIDIA Tesla系列企业级显卡),部分消费级显卡可能触发驱动锁(如NVIDIA GeForce的Error 43)。
- 热迁移限制:直通模式下虚拟机无法在线迁移,需通过OrionX等第三方方案实现资源池化与热迁移。
- 监控盲区:宿主机无法直接获取GPU使用率、温度等指标,需通过虚拟机内工具(如nvidia-smi)或旁路监控实现。
2. SR-IOV虚拟化
2.1 技术实现
将物理GPU划分为多个虚拟功能(VF),每个VF作为独立PCI设备分配给虚拟机。AMD S7150/MI25和NVIDIA A100支持此模式,性能损失约5-10%。
2.2 运维关注点
- 硬件要求:需主板支持SR-IOV Capability,并在BIOS中开启VT-d/AMD-Vi。
- 驱动管理:宿主机需加载厂商专用驱动模块(如AMD的GIM模块),并禁用默认显卡驱动。
- 资源分配策略:通过virsh edit或Libvirt XML配置VF数量,支持动态调整(如按业务负载划分1/2/4 vGPU)。
3. 半虚拟化
3.1 NVIDIA GRID vGPU:
基于VFIO框架实现硬件资源分片,将物理GPU虚拟化为多个vGPU,支持vGPU Profile动态调整(如1GB/4GB显存分配),NVIDIA的GRID vGPU和Intel的GVT-g系列是典型的实现案例(Intel的GVT-g适用于集成显卡的虚拟化,但存在稳定性风险(如内存泄漏),已逐步被SR-IOV替代。)。
3.2 多实例GPU(MIG):
MIG技术允许将单个GPU分区为多个完全隔离的vGPU实例,提高了物理GPU的利用率。目前仅NVIDIA A100/A30/H100 GPU支持。
切片规则:
A100可分割为7个独立实例(1/7~7/7);
每个实例拥有独立算力/显存/带宽;
运维优势:
支持动态调整实例规格(如24GB显存/实例)
与Kubernetes Device Plugin集成实现资源调度
3.3 运维关注点:
- 授权管理:GRID vGPU需NVIDIA企业许可,需部署License服务器并定期更新。
- 性能调优:需通过vgpu_unlock等工具突破官方限制,但可能违反厂商协议。
4、方案对比
技术类型 | 性能损耗 | 热迁移支持 | 资源隔离性 | 适用场景 |
---|---|---|---|---|
直通模式 | <5% | 不支持 | 物理级 | AI训练、高性能计算 |
SR-IOV | 5-10% | 支持 | 硬件级 | 多租户云桌面、推理服务 |
GRID vGPU | 10-15% | 支持 | 驱动级 | 图形工作站、VDI环境 |
MIG(A100) | <5% | 支持 | 硬件级 | 多任务并行、细粒度资源池 |
5、技术趋势
- MIG技术扩展:NVIDIA H100支持7个独立实例,可动态调整实例规格(如24GB显存/实例)。
- 硬件辅助虚拟化:Intel Flex系列GPU集成SR-IOV支持,降低虚拟化开销至3%以内。
- 云原生集成:Kubernetes Device Plugin已支持MIG实例调度,实现容器化AI负载的自动扩缩容。
6、总结与选型建议
- 性能优先:直通模式仍是AI训练的首选,需配合资源预留策略。
- 多租户场景:SR-IOV和MIG提供硬件级隔离,适合云服务商和大型企业。
- 动态调度需求:结合OrionX等第三方方案,实现跨物理节点的GPU资源池化与弹性伸缩。