0x01 前言

前段时间我找来了一个Nvidia Tesla M2090 GPU加速卡,计划用在视频制作上,所以打算将这个加速卡通过直通技术分配到一个基于esxi 6.5的虚拟机中。

硬件和虚拟机的安装都很顺利,却在驱动加速卡的过程中遇到了困难。

0x02 BUG

在安装完最新的加速卡驱动后,在windows系统中使用硬件管理查看M2090的硬件信息会发现它出现了一个感叹号:

查看设备状态发现以下错误提示:

该设备无法启动 (代码 10)/ 系统资源不够,无法完成API

0x03 DEBUG

因为我刚离开KVM进入VMware不久,所以一时间还找不出原因,就这样过了一周。在这期间,我多方求证,证实了我的一个猜想。

Nvidia显卡或Nvidia GRID在利用虚拟化技术进行直通(passthrough/透传)或分配vGPU给虚拟机时,有可能会出现code 43。这是因为windows在启动时加载了旧版本的显卡驱动,所以会导致GPU初始化失败而导致code 43。

那我的code 10会不会也是因为同样的原因?在查找相关资料后发现并不是。

运行在虚拟化中的系统会有个虚拟化标记,以此告知系统正运行在虚拟化平台之上。而Nvidia驱动检测到这个标记后会导致显卡初始化失败,从而出现了code 10。

为此,我需要将这个标记去除。

0x04 修复

在KVM中,你可以添加一个features达到隐藏虚拟化标记的目的:

    <kvm>
      <hidden state='on'/>
    </kvm>

但需要注意的是,libvirt的版本要在2.0或以上。

而在esxi中,只需要在虚拟机的高级选项中添加一个配置参数即可:

hypervisor.cpuid.v0 = "FALSE"

编辑虚拟机的配置,进入“虚拟机选项”并点击“编辑配置”

然后添加一个参数:

重启后再次检查显卡状态会发现已经能正常驱动:

0x05 测试

下面用CUDA-Z进行测试,并使用驱动软件的GPU利用率监控器进行监控:

因为M2090加速卡设计之初是给服务器使用的,所以采用被动散热,只有铝制散热鳍片而没有散热风扇。通过zabbix监控可以发现服务器的温度和散热风扇的转速在GPU使用率高的情况下有了相应的反应:

散热风扇上万转并不是问题,同时服务器功率和电流也随之上升。

0x06 结语

硬件正常,软件也准备就绪。下一步我将使用这个加速卡进行更多的测试,最重要是我要开始将文字解说做成视频,更有利于理解。

0x07 广告

Nvidia Tesla M2090应该是2011年发布的产品,虽然如此,它的性能也依然强悍。它与游戏显卡不同,主要用CUDA进行运算,而我则主要用于视频剪辑的过程中。

这张加速卡是我从淘宝中海淘的,因为商家服务态度非常好,所以我将购买链接放在下面:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.bh8otL&id=536584926265&_u=a28cvgc7fe3

其实我也是第一次接触图形运算加速卡,在经过一周的排查与测试,我也不确定这张卡的好坏。在于商家沟通后,她主动给我延长售后期限:

有需要购买相关产品的朋友可以到她家看看。

这个显卡有两个电源接口,一个8pin和一个6pin的接口。在以下连接电源的方式中,显卡都可以正常工作:

  • 连接一个8pin电源接口
  • 连接一个6pin电源接口和一个8pin电源接口

只连接一个6pin电源接口和不连接任何电源的情况下,显卡将无法正常工作。

因此我还需要购买两条电源线,长这样的:

因为我是在清明假期购买的,询问过很多家淘宝店都不发货,只有她家可以发货。但这不足以打动我将链接放上我的博客,主要是她还主动送货上门,可惜我并不在家:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.bh8otL&id=539559797524&_u=a28cvgc0b31