咨询热线:4008-6044-55 | OA | E-mail
一文读懂GPU虚拟化:除了直通、全虚拟化 (vGPU)还有谁?
日期:2024-05-14 01:36:39 | 作者:华体会最新地址

  GPU在市场上“一卡难求”,这也导致GPU售价非常昂贵,而且供货周期也不稳定。

  对于有GPU需求的企业用户,不但需要思考GPU卡的选型,同时需要仔细考虑怎样尽可能高效利用GPU资源。为了更好的提高GPU资源利用率,很多人选择对GPU进行虚拟化。

  当然,除了提升资源利用率,GPU虚拟化还能够给大家提供了良好的隔离性,从而确保虚拟环境之间的安全和独立性。另外,通过GPU虚拟化,用户还能够准确的通过应用程序的需求动态调整虚拟GPU的计算和显存资源,实现资源的弹性扩展。

  目前,在GPU虚拟化大类上大体上分为三种:软件模拟、直通独占(类似网卡独占、显卡独占)、直通共享(如vGPU、MIG)。

  第一种,软件模拟(eg sGPU), 又被叫半虚拟化。这种方式主要是通过软件模拟来完成,也就是大部分的KVM在用,主要原理是在Host操作系统层面上建立一些比较底层的API,让Guest看上去很像就是真的硬件一样。

  这种方式的优点是比较灵活,而且并不是特别需要有实体GPU,当然没有实体GPU的缺点就很明显了,模拟出来的东西运行比较慢。另外就是这一个方式并没有官方研发,因此产品质量肯参差不齐。软件模拟虚拟化就不讲了,因为真实场景太少,做做实验还将就用,几乎没法用在生产环境,毕竟性能损失太多。

  第二种,直通独占 (pGPU) 。直通是最早出现,即技术上最简单和成熟的方案。直通主要是利用PCIe Pass-through技术,将物理主机上的整块GPU显卡直通挂载到虚拟机上使用,与市场网卡直通的原理类似,但是这样的形式需要主机支持IOMMU。

  因为直通方式的性能损耗最小,各大公用云厂商广泛采用直通模式,但直通方式相当于虚拟机独享GPU,因此硬件驱动无需修改。另外因为直通模式没有对可支持的GPU数量做限制,也没有对GPU功能性做,因此大多数功能能在直通模式下无修改支持。

  但GPU 直通的缺点是一张GPU卡不能同时直通给多个虚拟机使用,相当于虚拟机独占了GPU卡。如果多个虚拟机需要同时使用GPU,需要在服务器中安装多块GPU卡,分别直通给不同的虚拟机使用。而且直通GPU的虚拟机不支持在线迁移。

  为了应对GPU直通不能共享GPU的限制,第三种方式直通共享的虚拟化方式出现了。直通共享在技术上分类叫全虚拟化 。实现原理是物理GPU虚拟化为多个虚拟机GPU,每个虚拟GPU直接分配给虚拟机使用,通过软件调度的方式在Host与计算机的Guest之间提供一个中间设备来允许Guest虚拟机访问Host中的物理GPU。

  GUP直通共享方式是目前GPU厂商主推的技术趋势,接下来我们就详细的介绍的下直通共享虚拟化这方面的内容。

  在本文开头介绍过,GPU全虚拟化的实现原理是将物理GPU虚拟化为多个虚拟机GPU,每个虚拟GPU直接分配给虚拟机使用。

  目前,GPU全虚拟化技术先后有SR-IOV(开源技术) ,API转发、MPS还有vGPU 、MIG等,下面我们就详细看下。

  PCIe SR-IOV通过在物理设备(Physical Functions,PF)上创建多个虚拟功能(Virtual Functions,VF)来实现的,每个虚拟功能能被分配给一个虚拟机,让虚拟机直接访问和控制这些虚拟功能,以此来实现高效的I/O虚拟化。基于PCIe SR-IOV的GPU虚拟化方案,本质是把一个物理GPU显卡设备(PF)拆分成多份虚拟(VF)的显卡设备,而且VF 依然是符合 PCIe 规范的设备。核心架构如下图:

  PCIe SR-IOV的有点就是线:N,一个PCIe设备提供给多个VM使用;但缺点是灵活性较差,没有办法进行更细粒度的分割与调度;并且不支持热迁移。

  在苦等PCIe SR-IOV期间,业界出现了基于API转发的GPU虚拟化方案。API转发分为被调方和调用方,两方对外提供同样的接口(API),被调方API实现是真实的渲染、计算处理逻辑,而调用方API实现仅仅是转发,转发给被调方。其核心架构示意如下图:

  API转发方案的优点是实现了1:N,并且N是能自行设定,灵活性高。同时不依赖GPU硬件厂商。但缺点复杂度极高。同一功能有多套 API(渲染的 DirectX 和 OpenGL),同一套 API 还有不同版本(如 DirectX 9 和 DirectX 11),兼容性很复杂。并且功能不完整,如不支持媒体编解码,并且,编解码甚至还不存在业界公用的 API。

  除了PCIe SR-IOV,Nvidia还推出了MPS方案,这是一种算力分割的软件虚拟化方案。该方案和PCIe SR-IOV方案相比,配置很灵活,并且和docker适配良好。

  MPS基于C/S架构,配置成MPS模式的GPU上运行的所有进程,会动态的将其启动的内核发送给MPS server,MPS Server借助CUDA stream,实现多个内核同时启动执行。除此之外,MPS还可配置各个进程对GPU的使用占比。

  但该方案的一个问题就在于,各个服务进程依赖MPS,一旦MPS进程出现一些明显的异常问题,所有在该GPU上的进程直接受影响,需要用Nvidia-smi重置GPU 的方式才能恢复。

  也属于全虚拟化技术。MIG是Nvidia 搞出的新技术,可将单个 GPU 分区为最多7个完全的隔离vGPU实例,每个实例均完全独立于各自的高带宽显存、缓存和计算核心。

  减少资源争抢的延时,提高物理 GPU 利用率。但可惜目前仅昂贵和国内禁售的NVIDIA A100 GPU支持。

  这种方式是把本来再空间上并行(时间独占)的成百上千的GPU流水线进行的时间维度的分割和共享。各个GPU厂家都有类似的技术。Time-sliced 切分方式是按时间切分 GPU,每个 vGPU 对应物理 GPU 一段时间内的使用权。

  在此方式下,vGPU 上运行的进程被调度为串行运行,当有进程在某个 vGPU 上运行时,此 vGPU 会独占 GPU 引擎,其他 vGPU 都会等待。所有支持 vGPU 技术 GPU 卡都能支持 Time-sliced 的切分方式。

  好的,就汇总到这里吧,后续工作中,我们还持续关注GPU虚拟化技术和方案,来解决 GPU利用率低的问题,欢迎各位持续关注。

  特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

  “我脱下衣服,给躺在路边的女孩盖上”,南通小学生大巴车事故现场救援者亲述

  硬刚iPhone16!华为Mate70再次确认,携手全新麒麟芯片和鸿蒙NEXT

  一加Ace3 Pro再次被确认:6100mAh+1TB存储,对手压力变大!

  为什么劝大家考虑vivo X100S而不是S Pro版?五点原因,很线 Pro信息抢先看:陶瓷机身、2K屏、潜望、超声波指纹均来了


在线留言

在线客服