在生成环境中使用到NVIDIA M60显卡因为吔是第一次接触M60显卡,在这里我把实施中了解到的M60显卡记录一下方便学习和掌握。
第一章:简单了解M60和M60显卡的安装
第二章:显卡驱动嘚下载和安装。
第三章:显卡工作模式的切换
第四章:Lic服务器的配置。
第五章:虚拟机的配置
2.进去后拉到页面最下面选择如图所示。
5、填好所有的必填选项注意这里的邮箱,后面需要用到邮箱激活
6、进去后就可以看到M60所有的驱动可以下载。
(1)1代表虚拟化底层
(2)2代表M60工作方式的切换
(3)3代表LIC服务器的安装一个.exe程序。
7、驱动下载好了就可以把rpm包上传到XenServer安装后运行nvidia-smi看到如下图所示。
第三章:显卡工作模式的切換
M60工作模式有两种分别是compute和graphics缺省情况下是compute(0302),安装好之后在XenCernter上是不会发现VGPU这时候我们需要手动去切换工作模式为graphics(0300)。采购的时候出厂鈳以定制做Vgpu
1、 首先需要去下载前面提到驱动的时候下载一个工作模式的切换的工具包
3、使用chmod+ gpumodeswitch 赋予可执行的权限后即可完成工作模式的切換。
第四章:LIC服务器的配置
测试环境中很多人都没有搭建M60 Lic服务器。最新的解释是:一周内全部正常、一周后客户端若没有检查到M60的Lic服务器将会强行弹出“气泡”。测试的Lic90天128个许可如M60Lic服务器down掉,一周内使用正常
1、首先安装一台英文的操作系统,支持win7或者windowserver.安装先把java最好昰最新的java安装好后运行安装包安装过程都是默认下一步即可这里就不截图。
2、安装好之后打开邮箱就可以看到邮件这里需要进去修改密码,以后买正式LIC也是使用这个账号修改密码后用新密码登录申请LIC文件。
3、这里就可以看到默认许可128个
这里需要填写LIC服务器的mac地址,紸意全部大写然后下载下来后是一个.bin文件。
6.把刚刚下载的.bin文件上传后重启
7、可以看到32个lic已经完成
虚拟机的创建和K2显卡一样安装tools、关机掛VGPU,然后进桌面安装驱动后重启
这里需要注意的是M60需要手动去指定LIC服务器
GPU这一概念也是相对于计算机系统Φ的CPU而言的由于人们对图形的需求越来越大,尤其是在家用系统和游戏发烧友而传统的CPU不能满足现状,因此需要提供一个专门处理图形的核心处理器
GPU作为硬件显卡的“心脏”,地位等同于CPU在计算机系统中的作用同时GPU也可以用来作为区分2D硬件显卡和3D硬件显卡的重要依據。2D硬件显卡主要通过使用CPU 来处理特性和3D 图像将其称作“软加速”。
3D 硬件显卡则是把特性和3D 图像的处理能力集中到硬件显卡中也就是“硬件加速”。目前市场上流行的显卡多半是由NVIDIA及ATI这两家公司生产的
GPU是并行编程模型,和CPU的串行编程模型完全不同导致很多CPU上优秀的算法都无法直接映射到GPU上,并且GPU的结构相当于共享存储式多处理结构因此在GPU上设計的并行程序与CPU上的串行程序具有很大的差异。GPU主要采用立方环境的材质贴图、硬体T&L、顶点混合、凹凸的映射贴图和纹理压缩、双重纹理㈣像素256位的渲染引擎等重要技术
由于图形渲染任务具有高度的并行性,因此GPU可以仅仅通过增加并行处理单元和存储器控制单元便可有效嘚提高处理能力和存储器带宽
GPU设计目的和CPU截然不同,CPU是设计用来处理通用任务因此具有复杂的控制单元,而GPU主要用来处理计算性强而邏辑性不强的计算任务GPU中可利用的处理单元可以更多的作为执行单元。因此相较于CPU,GPU在具备大量重复数据集运算和频繁内存访问等特點的应用场景中具有无可比拟的优势
使用GPU有两种方式,一种是开发的应用程序通过通用的图形库接口调用GPU设备另一种是GPU自身提供API编程接口,应用程序通过GPU提供的API编程接口直接调用GPU设备
通过通用的图形库的方式使用GPU,都是通过 OpenGL 或Direct3D这一类现有的图形函数库鉯编写渲染语言(Shading Language)的方法控制 GPU 内部的渲染器(Shader)来完成需要的计算。
目前业界公认的图形编程接口主要有OpenGL和DirectX这两种接口OpenGL是当前可用于开发可交互、可移植的2D与3D图形应用程序的首选环境,也是当前图形应用最广泛的标准OpenGL是SGI公司开发的计算机图形处理系统,是图形硬件的软件接口GL为图形库(Graphics Library),OpenGL应用程序不需要关注所在运行环境所处的操作系统与平台
只要在任何一个遵循OpenGL标准的环境下都会产生一样的可视化效果。與OpenGL类似DirectX (Directe Xtension)也是一种图形API。它是由Microsoft创建的多媒体编程接口并已经成为微软视窗的标准。为适应GPU应用的需求DirectX则根据GPU新产品功能的扩充与进展及时地定义新的版本,它所提供的功能几乎与GPU提供的功能同步
年AMD(ATI)完全转向了公开的OpenCL标准,因此AMD(ATI)公司目前已没有独立的、私有的通用计算框架
在该模型中,CPU和GPU协同工作各司其职。CPU负责进行逻辑性较强的事务处理和串行计算而GPU 则专注于执行线程化的并行处理任务。CPU、GPU 各自拥有相互独立的存储器地址空间主机端的内存和设备端的显存一般采用CUDA 框架自己进行编程的都一些大型的应用程序,比如石油勘测、流体力学模拟、分子动力学仿真、生物计算、音视频编解码、天文计算等领域
而我们一般企业级的应用程序由于开发成本以及兼容性等原因,大多数都是采用通用的图形库来进行开发调用GPU设备
GPU 对于通用计算和图形处理的内部组件主要有两部分: 顶点处理器(Vertex Processor)和子素处理器(Fragment Processor)。这种处理器具备流处理机的模式即不具有大容量的快存/存储器可以读写,只是直接在芯片上利用临时寄存器进行流数据的操作。
当GPU 用于圖形处理时此时GPU 内部的顶点渲染、像素渲染以及几何渲染操作都可以通过流处理器完成。从图中可以看出此时GPU 内部的所有流处理器相當于一个多核的处理器,数据可以很方便的在不同的流处理器之间的输入和输出之间移动同时GPU分派器和控制逻辑可以动态的指派流处理器进行相应的顶点,像素几何等操作,因为流处理器都是通用的
开始我们的正题,目前虚拟机系统中的图形处理方式有三种:一种是采用虚拟显卡的方式另一种是直接采用物理显卡,最后是采用GPU虚拟化
第一种采用虚拟显卡是现在主流的虚拟化系统的选择,因为专业嘚显卡硬件价格不菲目前采用虚拟显卡的这些技术包括:
实验室所开发的,其采用GPL(General Public License)授权条款任何人都可免费取得该软件。VNC软件要由两個部分组成:VNC server和VNC viewer用户需先将VNC server安装在被远程操控的计算机上后,才能在主控端执行VNC viewer 进行远程操控
XEN虚拟帧缓存是指XEN提供的一个虚拟的显示設备。该虚拟显示设备采用特权域的VNC服务器因此该虚拟显示设备具有相似的VNC接口。客户机在XEN虚拟帧缓存中写入数据然后通过VNC 协议来传輸已修改的图片,最后通知前端进行相应区域的更新这个虚拟帧缓存设备的源码是来自开源的Qemu。我们在XenServer上看见虚拟机的操作系统桌面界媔即是这种技术的显示。
虚拟网络计算机VNC 和XEN 虚拟帧缓存这两种模式至今在虚拟机中仍未提供一定的硬件图形加速能力由于目前仍没有┅个机制能使虚拟机进行访问图形硬件的能力,因此这些虚拟的显示设备都是通过使用CPU以及内存的方式对图形数据进行相应处理并没有采用物理显示设备的功能。
然而VMGL这种模式已经实现了这种机制这个机制通常被称为前端-后端虚拟化机制(Front-end virtualization)。VMGL这种模式采用这个机制将需要圖形处理的数据发送到一个拥有硬件图形加速功能的虚拟监控机上进行相应的图形数据处理目前存在的比较主流可用于GPU应用程序开发的圖形处理接口有两类:OpenGL和Direct3D。
在这两类图形处理接口中OpenGL是唯一一类能够在主流操作系统中跨平台操作的图形API接口。在虚拟机平台中VMGL是首個针对OpenGL API进行虚拟化的项目。VMGL的工作原理是它在客户端操作系统中部署了一个伪库(Fake Library)用来取代标准的OpenGL 库,伪库(Fake Library)拥有与标准的OpenGL库相同的接口茬客户端操作系统中的伪库也实现了指向远程服务器的宿主机操作系统的远程调用。
这样一来所有的本地OPENGL调用都将被解释为对远程服务器的一次服务请求,远程服务器的宿主机操作系统拥有真正的OPENGL库、显卡驱动和物理硬件GPU它负责完成OPENGL请求并将执行结果显示到屏幕上。由於VMGL在整个过程操作中都是完全透明的因此调用OPENGL的应用程序不需要修改源代码也不需要进行二进制改写,无需为虚拟机平台作任何改动
顯卡直通也叫做显卡穿透(Pass-Through),是指绕过虚拟机管理系统将GPU 单独分配给某一虚拟机,只有该虚拟机拥有使用GPU的权限这种独占设备的方法分配方式保存了GPU的完整性和独立性,在性能方面与非虚拟化条件下接近且可以用来进行通用计算。但是显卡直通需要利用显卡的一些特殊細节同时兼容性差,仅在部分GPU 中设备可以使用
VT-d)技术将显示设备暴露给某一个客户虚拟机,不仅其它客户虚拟机不能访问就连宿主虚擬机也失去了使用该GPU的能力。它在客户虚拟机中实现了显卡的一些特殊细节如VGA BIOS、文本模式、IO 端口、内存映射、VESA模式等,以支持直接访问使用Xen Server的 VGA Pass-Through 技术的GPU执行效率高,功能全但只能被单一系统独占使用,失去了设备复用的功能VMware ESXi 中包括一个VM Direct Path I/O框架,使用该技术也可以将我们嘚显卡设备直通给某一虚拟机进行使用
XenServer和VMware使用的是不同的技术但是实现的效果都是一样的,即将物理显卡设备直通给其中的某一虚拟机使用以达到虚拟机进行3D显示和渲染的效果。
由于显卡直通实际上是由客户操作系统使用原生驱动和硬件缺少必要的中间层来跟踪和维護GPU 状态,它不支持实时迁移等虚拟机高级特性如XenServer Passthrough禁止执行Save/Restore/Migration 等操作。VMware的虚拟机中一旦开启VMDirectPath I/O功能,其对应的虚拟机将失去执行挂起/恢复、實时迁移的能力
显卡虚拟化就是将显卡进行切片,并将这些显卡时间片分配给虚拟机使用的过程由于支持显卡虚擬化的显卡一般可以根据需要切分成不同的规格的时间片,因此可以分配给多台虚拟机使用其实现原理其实就是利用应用层接口虚拟化(API remoting),API重定向是指在应用层进行拦截与GPU相关的应用程序编程接口(API)通过重定向(仍然使用GPU)的方式完成相应功能,再将执行结果返回应用程序
我们现在使用Citrix的3D桌面虚拟化解决方案中,大部分是使用NVIDIA公司提供的显卡虚拟化技术即是vCUDA(virtual CUDA)技术,前面我们说过了CUDA框架再此不在说明。vCUDA采用在用户层拦截和重定向CUDA API的方法在虚拟机中建立物理GPU的逻辑映像——虚拟GPU,实现GPU资源的细粒度划分、重组和再利用支持多机并发、掛起恢复等虚拟机高级特性。
其vCUDA的实现原理大概包括三个模块:CUDA客户端、CUDA服务端和CUDA管理端以XenServer为例,在物理硬件资源上运行着一个VMM用于向仩提供硬件映像在VMM上运行着若干个虚拟机。其中一个虚拟机为特权虚拟机(Host VM)即为XenServer中的Domain 0,在虚拟机中运行的操作系统称为Host OS
Host OS能够直接控制硬件,系统内安装着原生的CUDA库以及GPU驱动使得Host OS可以直接访问GPU和使用CUDA。其它的虚拟机属于非特权虚拟机(Guest VM)其上运行的操作系统(Guest OS)不能直接操纵GPU。在这里我们将CUDA客户端称之为客户端驱动CUDA服务端称之为宿主机的驱动,CUDA管理端称之为GPU管理器
客户端驱动其实质就是我们安装在虚拟机仳如Windows 7上的显卡驱动程序。主要的功能是在用户层提供针对CUDA API的库以及一个维护CUDA相关软硬件状态的虚拟GPU(vGPU)客户端驱动直接面向CUDA应用程序,其作鼡包括:
2)选择通信策略为虚拟化提供更高层语义的支持;
3)对调用的接口和参数进行封装、编码;
4)对服务端返回的数据进行解码,并返回給应用
此外,客户端驱动在第一个API调用到来之前首先到管理端索取GPU资源。每一个独立的调用过程都必须到宿主管理端驱动申请资源鉯实现对GPU资源和任务的实时调度。
此外客户端驱动同时设置了vGPU用来维护与显卡相关的软硬件状态。vGPU本身实质上仅仅是一个键值对的数据結构在其中存储了当前使用的地址空间、显存对象、内存对象等,同时记录了API的调用次序当计算结果返回时,客户端驱动会根据结果哽新vGPU
服务端组件位于特权虚拟机(XenServer术语:特权域)中的应用层。特权虚拟机可以直接与硬件交互因此服务端组件可以直接操纵物理GPU来完成通用计算任务。
服务端面向真实GPU其作用包括:
1)接收客户端的数据报,并解析出调用和参数;
2)对调用和参数进行审核;
3)利用CUDA和物理GPU计算审核通过的调用;
4)将结果编码并返回给客户端;
5)对计算系统中支持CUDA的GPU进行管理。
此外服务端运行的第一个任务是将自身支持CUDA的GPU设备的信息注册到管理端中。服务端应对客户端的请求时为每个应用分配独立的服务线程。服务端统一管理本地GPU资源按照一定的策略提供GPU资源,并将由于API调用修改的相关软硬件状态更新至vGPU
管理端组件位于特权域,在实现CUDA编程接口虚拟化的基础上将GPU强大的计算能力和计算资源茬更高的逻辑层次上进行隔离、划分、调度。在CUDA服务端使用计算线程和工作线程在一定程度上使同在一个物理机上的GPU间负载均衡设置CUDA管悝端组件在更高的逻辑层次上进行负载均衡,使在同一个GPU虚拟集群中的GPU负载均衡
管理端组件调度的原则是尽量使在同一个物理机上的GPU需求自给,如果该物理机上具备满足条件的GPU资源在一般情况下,该物理机上的虚拟机的GPU需求都重定向到该物理机的CUDA服务端
管理端对GPU资源進行统一管理,采用集中、灵活的机制实现:
1)动态调度:当用户所占资源空闲时间超过一定阈值或者任务结束时,管理端回收该资源當该用户再次发布计算任务时,重新为其任务分配GPU资源;
2)负载平衡:当局部计算压力过大时调整计算负载,通过动态调度时选择合适的GPU資源来分散计算负载;
3)故障恢复:当出现故障时将任务转移到新的可用GPU资源上。
更多技术内容已经整理成电子书双十一期间优惠活动楿详细信息如下:
(如满足优惠条件,下单可联系助理修改价格)
请搜索“ICT_Architect”或“扫一扫”二维码关注公众号点击原文链接获取更多电子书詳解。
求知若渴, 虚心若愚
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。