阿里gpu虚拟化,虚拟GPU
GPU虚拟化支持linux吗
GPU虚拟化支持 virtual gpu 的代码开始汇入主线程。
这部分代码主要由两部分组成:
首先, mediated 设备框架(mdev),基本上,这部分代码使得内核驱动开始用vfio框架跟接口来支持虚拟pci设备。nvidia 以及intel都采用了这种所谓的mdev机制,将宿主机中的物理GPU分割成多个虚拟设备,以便供多个虚拟机同时使用。
第二个,?intel 的i915驱动也是采用了mdev初始化支持,当然仍然有很多工作需要去做,例如不能直接登录虚拟机的显示画面,所以必须通过客户机中安装x11vnc或者类似的vnc工具,也有一些稳定性的问题需要解决。
gpu服务器能用vmvare虚拟化吗
GPU虚拟化主要针对在桌面虚拟化的一些研发和设计工作人员,这些人员需要进行大型的3D设计,从而使用普通的桌面虚拟化无法满足其主要的需求。所以必须采用在虚拟化平台增加GPU,通过GPU虚拟化的方式进行。
目前VMware的GPU虚拟化主要分为以下三种方式:
vSGA:
是指“Virtual Shared Graphics Acceleration”(虚拟共享图形加速)。vSGA 的功能是利用在 ESXi 主机中本机安装的物理 GPU(图形处理单元,也称为显卡)为众多虚拟桌面提供硬件加速 3D 图形。通过提供这种功能,可进一步扩展使用虚拟桌面能够提供的使用情形和目标用户。除了扩展目标使用情形外,还可以提供更生动鲜活的视觉体验,从而进一步增强用户体验。vSGA在虚拟机中使用的是VMware的驱动,每个用户显存最多512MB。
vGPU:
是指Virtual Graphics Processing Unit (vGPU) ,是在VMware vSphere6.0上的新功能,它介于vSGA和vDGA之间,即可以使用GPU的核心资源,又可以进行不同配置的共享,从而在经济性和性能之间达到比较好的均衡,在虚拟机中使用的是GPU的原生驱动,从而性能比vSGA更加强劲,而通过显存上的共享从而使一块GPU卡可以共享给更多的用户,达到更加经济的目的。vGPU有不同类型的配置文件使用,包含K120Q,K220Q,K140Q,K240Q,K160Q,K260Q,K180Q,K280Q型号,应用程序对于它们也都已经加入了认证的列表。
GPU虚拟化
上一篇文章,讲解了计算虚拟化之CPU虚拟化和内存虚拟化。而GPU从某种意义上来讲,其作用也是用于计算,只不过同CPU应用用于通用计算相比,GPU则主要用于对图形和图像要求较高的场景,比如高清视频编解码、3D游戏、物理仿真等。本篇带领大家了解一下GPU虚拟化技术。
GPU技术在芯片行业中也如同CPU技术一样快速发展,而且越来越多的用户开始部署虚拟桌面方案。因此将GPU技术与虚拟化技术融合,是近年来虚拟化行业中比较热门的技术课题,通过此种方式,将大大降低图形图像用户的使用成本以及提高数据的处理效率和数据安全性。所谓GPU虚拟化,就是将一块GPU卡的计算能力进行切片,分成多个逻辑上虚拟的GPU,即vGPU,以vGPU为单位分配GPU的计算能力。以vGPU为单位可以将单块GPU卡分配给多台虚拟机使用,使得虚拟机能够运行3D软件、播放高清视频等,极大地提升了用户体验。
目前GPU虚拟化主要有如下几种技术:
Device Simulation
API Forwarding
GPU Pass-Through
Full GPU Visualization
设备模拟直接将设备分配给指定的虚拟机。采用类似于CPU虚拟化中二进制转换方法进行模拟。但相对于CPU,GPU的特性复杂,不同的设备提供商之间的GPU规格区别很大,GPU的资源很难被拆分,模拟的效率低。因此,典型的QEMU软件仅模拟了VGA设备的基本功能,它通过一个半虚拟化的图像缓冲区来加速特定的2D图像访问,不符合高效、共享的虚拟化要求。由于设备模拟没有一个确定的机制能使虚拟机进行访问图形硬件的能力,因此这些虚拟的显示设备都是通过使用CPU以及内存的方式对图形数据进行相应处理。
API转发将图形指令如OpenGL从客户虚拟机转发到虚拟机监视器VMM中,实现虚拟化环境下GPU的共享。该方法目前被广泛应用在VMWare和VirutalBox等软件中。基于Chromium的VMGL和Oracle的VirtualBox,采用定制过的OpenGL库来替换原有的OpenGL库,将虚拟机中的OpenGL指令转发到虚拟机监视器中去执行。针对GPU运用于通用计算,rCUDA、vCUDA和gVirtuS、都采用转发CUDA和OpenGL的指令来解决虚拟化环境下运行GPU通用计算程序的问题。然而API转发受限于平台,例如Windows采用的接口是DirectX,不兼容于OpenGL或CUDA。因此,一个Linux主机就不能执行Windows客户机转发过来的DirectX命令。同时由于API转发引起大量的上下文切换,性能损失较大。
显卡穿透(pass-through)也叫显卡直通,是指绕过虚拟机管理系统,将GPU单独分配给某一虚拟机,只有该虚拟机拥有使用GPU的权限,这种独占设备的方法分配方式保存了GPU的完整性和独立性,在性能方面与非虚拟化条件下接近,且可以用来进行通用计算。但是显卡直通需要利用显卡的一些特殊细节,同时兼容性差,仅在部分GPU中设备可以使用。同时GPU透传只能将GPU分配给一台虚拟机使用,无法在多台虚拟机间共享,其他虚拟机无法使用到GPU提供的计算能力。由于显卡直通实际上是由客户操作系统使用原生驱动和硬件,缺少必要的中间层来跟踪和维护GPU状态,它不支持实时迁移等虚拟机高级特性。
显卡虚拟化就是将显卡进行切片,并将这些显卡时间片分配给虚拟机使用的过程。由于支持显卡虚拟化的显卡一般可以根据需要切分成不同的规格的时间片,因此可以分配给多台虚拟机使用。GPU全虚拟化允许虚拟机直接访问对性能敏感的资源(如GPU访问显存),基本解决直通和共享的矛盾。比如类似于IO虚拟化的SR-IOV技术,通过影子页表隔离每个虚拟GPU的访问空间,从而大多数的命令执行会不受虚拟机监控器的干预,因此虚拟GPU就可以获得接近非虚拟化情况下的性能。
不同的显卡厂商,其全虚拟化的实现方式不同。比如AMD在其最新的GPU上采用了SR-IOV(单根虚拟化)技术来实现;Intel则采用KVMGT技术来实现,Nvidia采用了GPUvm/GRID技术来实现。