六种GPU虚拟化:除了直通、全虚拟化 (vGPU)还有谁?

 文章详细介绍了虚拟化技术在GPU领域的分类,包括软件模拟、直通独占、直通共享(如SR-IOV)、GPU分片虚拟化(如NVIDIA的mediatedpassthrough)、MIG和Time-SlicingGPU。着重分析了各种方法的原理、优缺点以及NVIDIAGridvGPU的商业化特性。
摘要由CSDN通过智能技术生成
在大类上计算虚拟化技术有这3种: 软件模拟、直通独占(如网卡独占、显卡独占)、直通共享(如vCPU 、vGPU)。但对于显卡GPU而言我总结细化出至少这6种分类(其中第四、五种都是第三种的具体实现):

第一种、软件模拟(eg sGPU), 又叫半虚拟化。
第二种、直通独占 (pGPU) , 有的文章翻译为透传 。Openstack/KVM/ESX等IaaS场景用到。
第三种、直通共享 (基于SR-IOV技术虚拟出vGPU) , 在技术上分类叫全虚拟化 。三个大厂有部分型号GPU支持,具体型号见 https://open-iov.org/index.php/GPU_Support 。这是AMD首先搞出来的,但似乎他们后来也转向GPU分片虚拟化了,这个网站AMD的产品反而没几款。
第四种、GPU分片虚拟化(mediated passthrough),也属于全虚拟化技术。其热度很高,基于VFIO mediated passthrough framework的GPU虚拟化方案。该方案由NVIDIA提出,并联合Intel一起提交到了Linux kernel 4.10代码库,该方案的kernel部分代码简称mdev模块。把会影响性能的访问直接passthrough给虚拟机,把性能无关,功能性的MMIO访问做拦截并在mdev模块内做模拟。商业产品有NVIDIA GRID vGPU 与Intel的GVT-g系列,前者不开源,后者大部分开源。
第五种、多实例 GPU (MIG) 技术,也属于全虚拟化技术。MIGNvidia 搞出的新技术,可将单个 GPU 分区为最多 7个完全的隔离vGPU实例,减少资源争抢的延时,提高物理 GPU 利用率。但可惜目前仅昂贵和国内禁售的NVIDIA A100 GPU 支持。
第六种。Time-Slicing GPU (时间共享GPU)。把本来再空间上并行(时间独占)的成百上千的GPU流水线进行的时间维度的分割和共享。各个GPU厂家都有类似的技术。英伟达的技术文档:https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/gpu-sharing.html 。
注意,以上第四种是收费的,所以企业用户要去英伟达官网购买license。英伟达又卖硬件又卖软件license,赚钱能力真强。
第五种MIG则是买到昂贵的A100卡就能用了,不需要license。
普通玩k8s的企业,则用免费的Time-Slicing GPU (时间分片共享GPU) 。


多扯淡一句,深度思考下,是否还有其他分类呢?比如上面的第六种是不是进程虚拟化呢?在docker出现后, 人们突然发现以前使用冯·诺依曼架构的 CPU/GPU 的方式也是一种虚拟化:

CPU 原理上是pipeline流水线上的时间维度分片的算力虚拟化,
GPU原理是空间维度分片的算力虚拟化。
eg.一台电脑只有一块CPU、一块GPU, 但多个程序(进程)都可以使用它们,对于进程而言难道不算虚拟化? 我想起当年“云计算(cloud computing)”这个词被创造后,以前在网页上提供购物、E-mail 、CRM等的,都说自己也在做云计算。现在第六种GPU虚拟化方式出来了,也就算它是进程虚拟化~

GPU软件模拟模式 (sGPU)
软件虚拟化就不讲了,因为真实场景太少,做做实验还将就用,没法用在生产环境,毕竟性能损失太多。

GPU 直通模式 (pGPU)
几种GPU的虚拟化技术,直通是最早出现,即技术上最简单和成熟的方案。厂家(Nvidia ,AMD ,Intel等 )的GPU,只要支持IOMMU的理论上都可以,即直通模式的实现依赖于IOMMU的功能。

优点:

原理简单。GPU直通模式的技术方案与虚拟化领域其他PCI直通(eg.网卡直通 ,USB 直通)原理相同
兼容性好
硬件驱动无需修改,不依赖GPU厂商,技术简单。所以小型GPU集群的运维的技术成本低,
缺点

不支持热迁移/在线迁移(Live Migration)
不支持GPU资源的分割(即对显存的分割,所以出现了下文的几种技术),不能充分利用高价买的GPU
缺少物理机层面的GPU性能监控API接口,在大型GPU集群中,这又导致运维成本上升。
安全性:
由于GPU的复杂性和安全隔离的要求,GPU直通技术相对于任何其他设备来说,会有额外的PCI 配置空间模拟和MMIO的拦截(参见QEMU VFIO quirk机制)。比如Hypervisor或者Device Module 不会允许虚拟机对GPU硬件关键寄存器的完全的访问权限,

GPU 全虚拟化(vGPU)
原理:在硬件实现GPU全虚拟化,将虚拟图形处理单元(vGPU)透传给虚拟机使用。

本文开头介绍过,GPU全虚拟化技术先后有SR-IOV(开源技术) 。还有vGPU 、MIG。它们虚拟出来的GPU都是vGPU。

GPU虚拟化的实现原理简介:
物理GPU虚拟化为多个虚拟机GPU,每个虚拟GPU直接分配给虚拟机使用,通过软件调度的方式在主机(Host)与计算机的来宾账户(Guest)之间提供一个中间设备来允许Guest虚拟机访问Host中的物理GPU。

NVIDIA 官网说的Grid vGPU优势:

安全性高。具有完全输入输出内存管理单元( IOMMU )保护的虚拟机能够同时直接访问单个物理 GPU 。
通过实时虚拟机迁移进行虚拟机管理
支持运行混合的 VDI 和计算工作负载,以及与许多行业虚拟机监控程序的集成。
Grid vGPU劣势:使用NVIDIA 的vGPU需要license,这块费用需要考虑在技术选型里面。

英伟达GPU虚拟化技术的对比
后三种比较常见:

————————————————

                            本文为博主原创文章,如果转载请注明本博客网址!
                        
原文链接:https://blog.csdn.net/zhengmx100/article/details/136809717

### 如何在 VMware 中设置和使用 GPU 虚拟化 #### 配置环境准备 为了使虚拟机能够利用物理GPU资源,在主机上需确保已正确安装适用于VMware平台的GPU驱动程序。对于特定于vGPU的工作负载提交过程,驱动会负责找到该中断对应哪个工作负载——当初是为哪个vGPU提交的这个工作负载——并注入一个虚拟的中断到相应的VM中[^1]。 #### 创建支持 GPU 的虚拟机 创建新的虚拟机时应选择兼容版本较高的硬件型号以便获得更好的性能和支持特性。创建完成后,给虚拟机安装操作系统,并考虑安装诸如Vmware Tools之类的工具来增强功能与优化系统表现[^2]。 #### 启用直通模式或 vGPU 设置 针对不同的应用场景有两种主要方式可以启用GPU虚拟化: - **PCIe 直通 (Passthrough)**: 这种方法允许单个GPU被直接分配给单一虚拟机使用。此操作通常涉及BIOS/UEFI级别的配置更改以及可能的操作系统内核参数调整。 - **NVIDIA GRID 或其他厂商提供的 vGPU 技术**: 使用这类技术可以在多个虚拟机之间共享一块或多块GPU。这一般需要额外购买授权许可,并按照供应商文档指导完成相应软件栈部署。 #### 安性和隔离措施 当采用vGPU方案时,还需注意不同租户间的资源隔离问题,防止潜在的安风险。例如通过命令`Lsmod | grep nouveau`检查Linux环境下开源显卡驱动是否已被成功禁用,因为某些情况下默认加载的新手级驱动可能会干扰专有驱动正常运作[^3]。 ```bash # 查看nouveau模块状态 lsmod | grep nouveau ``` 如果上述命令没有任何输出,则说明nouveau已经被正确禁用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值