在GRID 2.0版本开始,也就是除了K1/K2 卡以外的NVIDIA TESLA/QUADRO GPU,想要实现vGPU的功能就需要配合NVIDIA vGPU软件来使用,而NVIDIA vGPU作为一个商用软件是需要LICENSE的,那下面介绍一下申请测试的注意事项。
    登陆到:
    https://enterpriseproductregistration.nvidia.com/?LicType=EVAL&ProductFamily=vGPU
    填写相关信息,请严格参照下文注意事项。
    image.png
    申请提交成功:
    image.png
    稍后会收到如下邮件,需要等待后台审批,时间大约在2个工作日,目前只有申请通过的才能收到系统邮件,系统没有设置reject 回复。所以如果申请试用的客户既没有收到邮件也没有电话联系,可以通过发邮件到vGPUEvaluation@nvidia.com 进行询问,英伟达工作人员会通过这个vGPUEvaluation@nvidia.com 邮箱回复因为什么原因被reject,或者需要提供更多的信息才会被approve。
    image.png
    注意事项:
    1.首先选择国家为中国,请填写真实有效的联系方式,后续会有相关人员与您联系核实测试项目。
    2.请使用最终用户信息申请,特别对于代理商的朋友,在帮客户申请的时候一定注意,使用用户信息而不是您公司(代理商/集成商)的信息。
    3.请使用公司邮箱申请,个人邮箱(比如QQ邮箱之类)会被直接拒绝。
    4.如果碰到网络问题无法提交,请尝试翻墙再提交。
    5.如果最后GPU下拉框中没有需要的GPU型号,任意选择一个即可,license本身是通用的,不针对某款特定GPU型号。
    6.申请到的测试LICESNE是最高版本的vDWS版本,具有所有NVIDIA vGPU的功能特性,并且向下兼容同时可以使用vPC/vCS以及vAPP版本。数量有128个,可以自由分配使用,有效期限自激活测试LICENSE之日起90天。
    7.测试LICENSE的使用方法和正式版本的LICENSE一致,可以保留测试账号激活正式版本的LICENSE,做到无缝切换。
    8.测试账号的有限期期限90天内,可以正常接收vGPU软件版本的更新,账号过期以后将无法查看和下载vGPU软件,所以请尽快测试或者购买正式版本。
    常见问题:
    1.我申请了90天的试用许可证,但没有收到回复。 我该怎么办?
    您会在申请后的24小时内收到答复。 如果您在此时间段内未收到回复,请检查电子邮件的垃圾邮件和垃圾文件夹。 此外,请注意,如果您不是使用公司的电子邮件地址,注册将被拒绝。
    2.我使用了我的个人电子邮件地址(Google,Yahoo等),但被拒绝了试用许可证。 我该怎么办?
    您可以通过使用公司的电子邮件地址再次填写申请表来重新申请。
    3.我可以延长90天的试用许可证吗?
    试用许可证是一次为期90天的许可证。 对于需要较长评估时间的企业,我们建议与我们的合作伙伴联系以开始POC。在极少数情况下,试用可以授予延期,请与您当地的销售团队联系。
    4.在哪里可以下载虚拟GPU软件和驱动程序?
    在您收到的注册申请通过邮件中将包含有关如何访问您的帐户和我们的许可门户的说明。 如果您已经注册并设置了帐户,则可以登录http://nvid.nvidia.com/dashboard/
    5.如果我收到一封电子邮件,说我会收到NVIDIA的回复,但从未有回音,该怎么办?
    请填写下面的表格或拨打以下电话,NVIDIA代表将能够帮助您解答问题。
    https://www.nvidia.com/en-us/nvidia-enterprise-account-faq/#Contactus
    6.如何重设密码?
    在NVIDIA登录屏幕上,单击“忘记密码?”以重置密码。
    7.如何购买虚拟GPU软件?
    要购买虚拟GPU软件和NVIDIA GPU,请与我们的NVIDIA合作伙伴网络(NPN)合作伙伴联系或您的NVIDIA销售代表。 此外,您可以访问www.nvidia.com/zh-cn/design-visualization/buy-grid/,查看购买NVIDIA虚拟GPU解决方案的四个简单步骤。
    8.如果下载链接不起作用怎么办?
    首先,请确保您的90天试用期尚未到期。 如有其他问题,请联系下面的NVIDIA代表。
    9.我怎么知道我的90天试用期是否已结束?
    如果试用期结束,您将收到一条消息,提示系统无法获取许可证。 从许可门户中激活您的产品密钥后,即开始90天的试用期。 评估的开始日期和结束日期在门户中列出,可以在http://nvid.nvidia.com/dashboard/上进行访问。 在许可证服务器UI中可以找到用于查看许可证属性的其他选项。
    10.如果我是现有用户,是否还能获得其他评估许可证?
    请联系您的NVIDIA销售代表。
    11.如果这里没有解决我的问题,或者在阅读常见问题解答后仍然需要帮助怎么办?
    请通过下面的表格或电话号码与您的NVIDIA销售代表或NVIDIA销售团队联系。
    https://www.nvidia.com/en-us/nvidia-enterprise-account-faq/#Contactus

    前面给大家介绍了怎么去申请一个NVIDIA vGPU 测试license,那本次再给大家介绍一下如何激活大家申请到的测试license。
    在大家提交完vGPU的测试申请以后,NVIDIA可能会有工作人员跟你再做一次确认,在NVIDIA后台通过了你的申请以后,你会收到一封包含一个pdf附件的邮件。
    正式购买的用户收到的邮件也是大同小异,整个激活过程也是一样的。
    我们打开这个pdf:
    文件第一页是你所申请到的或者购买到的license详情,包括PAK ID(激活码)、数量、类型、有效日期等信息。image.png
    文档第二页中的NVIDIA Virtual GPU Software Quick Start Guide是快速开始指南的链接,可以参考这个文档快速开始vGPU的部署。
    image.png
    根据license的类型不同(测试\正式\NFR)会有细小的差异,主要体现在测试版本的License是没有企业级技术支持的,但是如果在测试过程中有任何的问题。你还是可以通过发送邮件到vGPUEvaluation@nvidia.com寻求支持。image.png
    非测试用户将会看到类似下图的信息,下方有英伟达企业支持的链接,可以直接获得NVIDIA官方的技术支持。
    image.png
    如果已经有过账号,直接登录账号即可,购买的license将会直接绑定到你的账户下,当然前提是下单邮箱和原来的账号邮箱一致。如果没有账号,那么可以点击链接进行英伟达企业账号的注册,同样要保证信息正确且与下单邮箱一致,不然将无法获取license。
    image.png
    填写完成相关信息以后就可以完成账号的注册,提交以后将会收到一封引导设置英伟达的账号密码的邮件,点击邮件中的设置密码按钮,设定密码,就可以完成英伟达企业账号的注册,需要注意的是,通常这个设置密码的按钮是有时效性的,在你收到邮件24小时之内,你可以点击这个按钮去为你的账户设置密码,如果超过了24小时,那这个设置密码的按钮可能就会失效了,这个时候你可以点击后面的忘记密码来重新设置。
    新申请测试的用户没有这个步骤,因为你在申请测试的时候已经提交过相关信息,所以你将会直接收到设置密码的邮件。
    image.png
    设置完账号以后就可以登录英伟达授权许可门户了。
    image.png
    登陆以后你就可以在在首页看到你的license了。
    image.png

    大家在购买NVIDIA vGPU永久许可和DGX系列产品的同时,都会需要再购买一个叫做SUMs的东西。(NVIDIA vGPU订阅许可包括了SUMs,不需要单独购买)
    那什么是SUMs?
    SUMs 就是Support, Upgrade and Maintenance program,就是支持、升级和维护服务。
    简单来说,有SUMs服务,才可以获得最新的软件版本更新以及NVIDIA提供的售后支持。
    image.png
    参考:https://www.nvidia.cn/object/grid-support-cn.html
    那目前来说有3种渠道获得支持:
    1、通过NVIDIA企业支持门户(推荐)
    image.png
    你可以直接在NVIDIA企业门户上创建一个CASE,可以支持中文填写,但是使用英文描述会得到全球其他地区工程师的支持,大家自行选择。在创建CASE时,填写清楚问题以及问题描述,选择故障级别(S1灾难性故障-导致生产系统完全无法使用,S2严重故障-部分系统故障或失效,S3一般问题-特殊情况下发生的可控的问题,S4轻微影响-对系统运行几乎没有影响的问题,S5需求建议-对新功能和改进的建议),选择对应的产品类别和问题类别,选择你需要的沟通方式-邮件或者电话,当然还可以上传一些日志、截图等帮助售后工程师来更快定位问题。

    2、邮件:
    同样,可以把问题描述直接发送到企业支持邮箱:enterprisesupport@nvidia.com
    中文的可以发送邮件到ChinaEnterpriseSupport@nvidia.com,有专人值班。
    建议使用下单邮箱或者说能够访问企业支持门户的邮箱去发送邮件。如果不是的,建议在邮件描述里添加上对客户信息的说明和相关的订单信息,否则可能无法得到支持。

    3、电话:
    目前官网列出了2个800电话,大家在打电话的时候可以都尝试一下,但是电话支持仅限于英文。
    +86 010108007440746 (手机);
    +86 010108004400815 (固定电话)。

    在vSphere平台下安装vGPU驱动之前需要打开ESXi的SSH服务,方便来传输vib驱动安装包以及后面一些命令行的操作。
    ESXi需要加入vCenter,vGPU相关的一些配置都需要在vCenter下来修改。
    image.png
    使用WinSCP把驱动vib传到ESXi的/tmp目录下
    image.png
    安装驱动之前先检查一下GPU是否被正常识别到,SSH到ESXi,使用命令:lspci | grep NVIDIA 来检查。
    image.png
    到/tmp目录下,赋予vib驱动包可执行权限,然后使用esxcli命令进行安装,注意ESXi主机需要处于维护模式,可以在web client上修改,也可以在安装时加上—maintenance-mode参数。
    cd /tmp
    chmod +x NVIDIA*esxcli software vib install -v /tmp/NVIDIA.vib —maintenance-mode
    image.png
    等待几分钟,安装成功以后会有提示信息,可能在安装信息中提示不需要重启,但是强烈建议重启一下主机来验证驱动是否正常,有碰到过重启以后驱动报错的情况。
    image.png
    重启完主机以后使用
    nvidia-smi 命令来验证驱动是否正常,正常情况下能看到类似如下信息:
    image.png
    特别注意2点:1、ECC模式是否显示off 2、默认情况下vSphere会使用vsga模式,而不是vGPU模式,所以能看到最下面xorg条目,这个我们后面改。
    在部分时候,特别是使用全新的GPU,可能会看到nvidia-smi信息里面ECC区域不是off状态,而是0,这说明你现在的ECC是启用的状态,并不是所有vgpu都可以使用ECC,如果你不能确认你的环境是否需要启用ECC,那建议先关闭ECC。
    image.png
    使用命令来关闭ECC,注意,启用或者关闭ECC都需要重启主机。
    nvidia-smi -e 0*

    image.png
    更多关于ECC的信息,请参考:
    https://docs.nvidia.com/grid/latest/grid-software-quick-start-guide/index.html#disabling-enabling-ecc-memory

    在确认驱动状态没问题以后,我们登陆vCenter,定位到主机-配置-图形,编辑主机图形设置,可以看到默认是共享模式,也就是vsga,我们需要切换到“直接共享“才能使用vGPU。
    2种GPU分配策略,在有多个GPU的时候生效。
    默认最佳性能模式,会在所有可能的GPU上去运行虚拟机,即VM1运行在GPU1、VM2运行在GPU2,以此类推,尽可能平均的分布虚拟机,不会让GPU闲着。
    GPU整合模式,会在一个GPU核心上运行先启动的虚拟机,直到当前GPU没有资源才会去使用下一个GPU核心,这个模式多用在同一台服务器上运行多个vGPU profile的情况下。
    image.png
    除了主机的图形选项,针对每个GPU也都可以单独设置共享模式,第一次使用需要在这里再切换一下,主要是需要重启xorg服务来改变配置,不同vSphere版本界面可能不能,部分vSphere 6.5早期版本需要手动重启xorg服务。
    image.png
    更改成功以后就没有xorg条目了,可以开始使用vGPU了!
    image.png

    vGPU的License Server支持安装在Windows和Linux系统上,如何在Linux系统上安装vGPU License Server。首先看一下vGPU License Server支持的系统:
    https://docs.nvidia.com/grid/ls/2020.05/grid-license-server-release-notes/index.html#operating-systems-grid-license-server
    image.png
    如果使用Windows来安装vGPU License Server,必须选择使用英文原版的镜像来安装操作系统,否则会出现乱码的问题,而Linux则没有这个限制。
    在Windows上进行离线安装比较方便,但是在Linux系统上安装时建议联网进行。
    在安装之前,我们可以先确定下我们创建的vGPU License Server虚拟机的大小,官方最小配置的建议为2 vCPU/4G内存/1G空余硬盘。可以看到实际需求还是很低的,一般我们按照这个配置也够了。在大规模的环境部署时,可以参考以下配置进行调整:4 vCPU/16G内存的vGPU License Server虚拟机可以支持最多150000个vGPU客户端。
    本次我们使用ubuntu 18.04系统作为示例,安装的vGPU License Server版本为2020.05 Update1。系统安装过程不再赘述,这里为了方便国内用户,安装语言选择了中文。
    在进入系统以后,给虚拟机配置一个静态IP,然后检查虚拟机的时间是否正确,建议开启NTP进行时间同步,不然vGPU客户端可能无法正确获取license,具体配置过程这里不展开。
    首先执行:
    sudo apt update
    sudo apt upgrade -y
    来更新下系统。
    image.png
    本次虚拟机在VMware环境下安装,所以我们使用:
    sudo apt install -y open-vm-tools-desktop
    来安装开源的VM Tools。
    image.png
    在安装vGPU License Server之前我们需要安装java环境以及Apache Tomcat服务,兼容的版本请参考:
    https://docs.nvidia.com/grid/ls/2020.05/grid-license-server-release-notes/index.html#supported-platforms-grid-license-server
    首先来配置java环境,
    sudo apt install -y default-jdk
    image.png
    安装完成以后可以使用:
    java -version
    查看java版本。
    image.png
    安装完成以后还需要配置JAVA_HOME环境变量,使用:
    sudo update-alternatives —config java
    找出Java安装路径。
    image.png
    记录这里的java路径/usr/lib/jvm/java-11-openjdk-amd64/,下面来修改环境变量:
    sudo nano /etc/environment
    在文件中添加一行:
    JAVA_HOME=”/usr/lib/jvm/java-11-openjdk-amd64”
    image.png
    保存文件退出,然后使用:
    source /etc/environment
    使配置文件生效,下面使用:
    echo $JAVA_HOME
    来验证是否正确配置了JAVA_HOME变量。
    image.png
    下面来安装Tomcat:
    sudo apt install -y tomcat9
    image.png
    安装完成以后设置Tomcat为开机自动启动:
    sudo systemctl enable tomcat9.service
    然后启动Tomcat服务:
    sudo systemctl start tomcat9.service
    image.png
    使用本机浏览器打开:http://localhost:8080
    image.png
    可以看到Tomcat正常启动了。
    下面开始安装vGPU License Server,先解压压缩包:
    unzip NVIDIA-ls-linux-2020.05-U1-2020.05.0.29698264.zip
    image.png
    给安装文件添加可执行权限:
    chmod +x setup.bin
    开始安装:
    sudo ./setup.bin
    image.png
    然后在图形化界面点Next开始安装:
    image.png
    同意许可协议,点Next继续:
    image.png
    选择安装路径,这里保持默认即可,点Next继续:
    image.png
    根据页面上部的提示输入Tomcat路径,本次使用的是ubuntu系统所以,我们的路径是:/var/lib/tomcat9,然后点Next继续:
    image.png
    license服务的7070端口默认开启,管理接口的8080默认不开启,在对网络环境有比较严格要求的环境中,不建议开启8080端口,所有操作在虚拟机内部进行。这里为了方便,我们勾选开启8080端口,那就可以脱离虚拟机在外部进行操作了。
    image.png
    点Install开始安装。
    image.png
    安装完成。
    image.png
    下面我们在虚拟机内部访问:http://localhost:8080/licserver
    外部可以使用:http://ip:8080/licserver形式访问,如果配置了域名解析,也可以用域名的形式访问。
    image.png
    到这里安装就成功了,别忘了给虚拟机做个快照,万一服务故障了可以及时恢复。

    vGPU的License Server支持安装在Windows和Linux系统上,来看一下如何在Windows系统上安装vGPU License Server。首先看一下vGPU License Server支持的系统:
    https://docs.nvidia.com/grid/ls/2019.11/grid-license-server-release-notes/index.html#operating-systems-grid-license-server
    image.png
    如果使用Windows来安装vGPU License Server,必须选择使用英文原版的镜像来安装操作系统,否则会出现乱码的问题,而Linux则没有这个限制。
    在Windows上进行离线安装比较方便,但是在Linux系统上安装时建议联网进行。
    在安装之前,我们可以先确定下我们创建的vGPU License Server虚拟机的大小,官方最小配置的建议为2 vCPU/4G内存/1G空余硬盘。可以看到实际需求还是很低的,一般我们按照这个配置也够了。在大规模的环境部署时,可以参考以下配置进行调整:4 vCPU/16G内存的vGPU License Server虚拟机可以支持最多150000个vGPU客户端。
    本次我们使用Windows Server 2016英文原版系统作为示例,安装的vGPU License Server版本为2019.11。系统安装过程不再赘述。
    image.png
    在进入系统以后,给虚拟机配置一个静态IP,然后检查虚拟机的时间是否正确,建议开启NTP进行时间同步,不然vGPU客户端可能无法正确获取license,同时推荐把系统补丁也更新一下,具体配置过程这里不展开。
    首先我们需要安装JRE运行环境,vGPU License Server可以支持Oracle Java SE JRE或OpenJDK JRE。参考:
    https://docs.nvidia.com/grid/ls/2019.11/grid-license-server-release-notes/index.html#jre-requirements-grid-license-server
    image.png
    这里我们以OpenJDK JRE为例,先去https://github.com/ojdkbuild/ojdkbuild/blob/master/README.md 页面下载合适版本的JRE安装包:
    image.png
    下面我们开始安装:
    image.png
    同意安装协议:
    image.png
    选择安装路径,这里我们保持默认,同时记一下这个位置,后面会用到:
    image.png
    安装完成:
    image.png
    然后我们找到刚才JRE的安装目录,同时复制下这个路径:
    image.png然后打开系统属性—高级系统设置—环境变量:
    image.png在下半部分的系统变量中,我们需要添加一个新的变量,变量名为JAVA_HOME,变量值就是我们刚才复制的JRE路径:
    image.png
    然后点确定保存,然后我们检查一下path这个系统变量,确保里面也已经有了JRE路径,这里一般软件会自动配置,但是如果没有的话需要手动添加一下:
    image.png
    下面就可以开始安装vGPU License Server了,打开我们前面在NVIDIA授权门户页面下载好的vGPU License Server压缩包,点击里面的setup安装包,开始安装:
    image.png
    同意NVIDIA的许可:
    image.png
    因为vGPU License Server采用的是Apache Tomcat服务器,所以这里还需要同意Apache的协议:
    image.png
    选择安装位置,这里我们保持默认:
    image.png
    下面是防火墙选项,默认7070是vGPU虚拟机向vGPU License Server请求license的端口,所以需要打开,8080是vGPU License Server后台管理的端口,如果不打开,那就只能在本机进行vGPU License Server的管理,打开以后可以在网络中的其他位置访问,这个根据不同网络情况自行选择:
    image.png
    下面开始安装:
    image.png
    安装完成:
    image.png
    下面我们在虚拟机内部访问:http://localhost:8080/licserver
    外部可以使用:http://ip:8080/licserver形式访问,如果配置了域名解析,也可以用域名的形式访问。
    如果碰到有错误提示,不要急,可能是服务还没完全启动,稍等一会刷新一下:
    image.png服务正常启动以后可以看到:
    image.png到这里安装就成功了,别忘了给虚拟机做个快照,万一服务故障了可以及时恢复。

    在vSphere 6.7之前,带vGPU的虚拟机是只能支持关机迁移。vSphere 6.7最早发布的版本可以支持虚拟机在开机的状态下手工暂停然后进行在线迁移,迁移完成以后再把虚拟机恢复,在vsphere 6.7 U1以后,带vGPU的vMotion才正式支持。
    当然支持vGPU vMotion的前提肯定要满足常规vMotion的条件,然后在迁移的主机之间的vGPU 软件及硬件要匹配,不然也没办法正常迁移。
    在VMware vSphere环境下启用vGPU vMotion的步骤非常简单,但是我们在启用前需要检查一下当前的软件和硬件是否支持。
    首先是vSphere的版本,前面已经提到,通常新版本的vSphere也需要新版本vGPU软件版本来支持,具体可以参考:
    https://docs.nvidia.com/grid/latest/grid-vgpu-release-notes-vmware-vsphere/index.html#hypervisor-software-versions
    image.png
    然后vSphere上面运行的虚拟机系统也必须是被当前使用的vSphere版本所支持的,这里不展开,请参考:
    https://docs.nvidia.com/grid/latest/grid-vgpu-release-notes-vmware-vsphere/index.html#guest-os-support
    然后是GPU硬件的部分,目前常见的GPU型号中,P100是不支持vMotion的,具体参考:
    https://docs.nvidia.com/grid/latest/grid-vgpu-release-notes-vmware-vsphere/index.html#vgpu-migration-support
    image.png
    在确定软件和硬件都符合的条件下,我们可以手动打开vGPU vMotion功能,这个高级功能默认在vCenter中是禁用的。
    我们导航到 vCenter—配置—高级设置,然后在名称筛选框中输入关键字 vgpu
    image.png
    可以看到vGPU热迁移默认状态下是禁用的
    image.png
    我们点击右上角编辑设置按钮,在弹出的高级选项中找到vgpu.hotmigrate.enabled 这个条目,然后勾选已启用,根据vCenter版本的不同,有的版本可能需要手动修改值为true
    image.png
    然后点击保存就可以了,整个过程其实就这么一步。
    vGPU的虚拟机在vMotion的过程中可能会短暂冻结会话,一般这个过程会持续几秒时间,根据你的硬件环境(服务器、存储、网络),硬件环境越好,这个时间就越短,甚至无感知。以下这些因素可能会增加会话冻结的时间长度:
    工作负载对帧缓冲区(显存)的占用较大,通常发生在视频流等工作负载中
    分配的vGPU显存较大
    分配的虚拟机系统内存较大
    网络带宽有限
    如果虚拟机正在运行大量的工作负载,迁移带有vGPU的虚拟机时可能会失败。vSphere Client上的任务详细信息中包含以下错误消息:
    迁移超出了 100 秒的最长切换时间
    The migration has exceeded the maximum switchover time of 100 second(s).
    要解决这个问题,可以通过将vmotion.maxSwitchoverSeconds选项从默认值100秒提高来增大最大切换时间 。有关更多信息,请参考:
    https://kb.vmware.com/s/article/2141355?lang=zh_cn