当前位置: 首页 > article >正文

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

在大类上计算虚拟化技术有这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)
前四种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虚拟化技术的对比

后三种比较常见:
在这里插入图片描述


http://www.kler.cn/a/274507.html

相关文章:

  • Java程序打包成exe,无Java环境也能运行
  • 固定电话采用的是模拟信号还是数字信号?如果通话两端采用不同的信号会发生什么?
  • 冯诺依曼架构与哈佛架构的对比与应用
  • 【bodgeito】攻防实战记录
  • 不会心理描写,神态描写怎么办?
  • Windows11 离线更新 WSL
  • Spark 3.5.0 特性速览
  • 安装tensorflow2.4
  • 【Greenhills】MULTI IDE-GHS最新版本Compiler 23.5.4的兼容性问题
  • 英伟达GTC2024大会开幕,发布机器人003计划,引领具身智能新时代
  • JAVA基础—多线程基础
  • 统计咨询|久菜盒子工作室可实现需求
  • 耳机壳UV树脂制作私模定制耳塞需要什么样的设备和技术?
  • HCIA——30奈奎斯特定理、香农定理
  • springboot日志配置文件log4j2.xml
  • Laravel框架项目首页内容修改
  • 如何从零开始拆解uni-app开发的vue项目(一)
  • 数据库只追求性能是不够的!
  • 3D模型优化服务+三维可视化+数字孪生+元宇宙=眸瑞科技
  • 使用甘特图实现高效时间规划
  • 微软AI系列 C#中实现相似度计算涉及到加载图像、使用预训练的模型提取特征以及计算相似度
  • GPT-4与Claude3、Gemini、Sora:AI领域的技术创新与突破
  • C++文件操作详解
  • Pytest教程:详解pytest.main()
  • TikTok云手机是什么原理?
  • Linux系统优化及性能调优