Mellanox Infiniband 网卡固件刷新大幅提升IO带宽

时间:2013-07-22   来源:   网友评论:0   人气: 2257 作者:

本文的内容是向你介绍为戴尔、Sun或者惠普重新贴牌的Mellanox Infiniband网卡建立和刷新自制固件的方法。有了自定义固件,你就能在Windows Server 2012使用RDMA功能了,它可以将你的文件共享能力提升至3280MB每秒,将近25万的IOPS。这几天OEM Mellanox Infiniband网卡用户常见的问题就是,他们没法找到开启RDMA(远程直接数据存取)的固件修订版本。性能优势十分明显。


什么?我的Infiniband网卡在Windows Server 2012里没有RDMA?

要寻求更好的文件共享性能,给你的Windows Server 2012机器里安一个戴尔、Sun或者惠普品牌的40千兆InfiniBand网卡,这种卡都是采用 Mellanox ConnectX-2 固件的。最新的微软操作系统为这种卡内置了IPoIB驱动,所以你只要重启一下系统就能用了。分配一个IP地址,设置一下共享,然后就能测试一下吞吐量了。在你的客户端机器上运行IOMeter基准测试,连接到文件服务器,查看结果,如下图所示——挺快但还不够快。

测试结果中的1958MB/s的意思是,你的40千兆网卡的传输大概只在15千兆左右。那其他那些带宽都跑哪儿去了呢?要查明原因,你要打开一个PowerShell窗口。Get-NetOffloadGlobalSetting显示NetworkDirect的状态是开启,也就是说你可以使用RDMA——如果你的卡支持这个功能的话。

运行Get-NetAdapterRdma,显示该卡已经被设置为可以使用RDMA。那为什么不能用呢?

即便有一个配置正确的系统——而且Windows Server 2012默认情况就下就是配置好的——如果你的卡的固件不适用于操作系统,你也不能使用RDMA。接着查找问题,关键的PowerShell查询命令是Get-SmbServerNetworkInterface,它(见下图)可以直观地显示出我们的InfiniBand卡不能在Windows Server 2012里使用IPoIB RDMA。Windows系统日志里还有更多内容,但我们不需要;我们已经知道怎么回事了。


问题出在老旧的固件上

我们的卡在规格说明里承诺提供RDMA,原来,要在Windows Server 2012上使用,你的Mellanox固件版本必须在2.9.8350以上。你可以用多种方式查到你的固件版本。最简单的方式就是Windows设备管理器,如下图示,它显示,此卡的固件版本为2.9.1000,不支持RDMA。

 

下载一个固件更新器不行吗?

Mellanox在其Windows 2012安装程序里提供的固件版本为2.10.720,但那个installer不会更新第三方的贴牌网卡。戴尔和惠普的最新固件版本是2.9.1000,不支持RDMA。我这还有几个Sun卡,正在用的版本是2.7.8130。固件不更新,我们就没法使用RDMA,但厂商(到现在为止)还没有更新它们的安装程序。


解决办法就是自制固件

幸运的是,还是有解决办法的:自己制作固件并刷新。实际操作比听上去容易多了。第一次的话也能要花30分钟。之后,这一过程顶多两分钟。我们将从已经安装的 Infiniband 开始,使用自带的微软驱动,以及上面配置的IP地址信息。


制作和刷新固件版本2.10.720的步骤:

1. 安装Mellanox WinMFT
2. 获取该卡设备ID
3. 获取该卡Board ID
4. 下载 .mlx文件
5. 下载 .ini文件
6. 使用mlxburn制作并刷新固件


刷新固件的具体步骤:

1)安装Mellanox WinMFT软件包。它提供给我们所需的制作和刷新固件的工具。本文撰写时,最新版本为2.7.2,安装程序名为WinMFT_x64_2_7_2.msi。

2) 现在我们需要获取此卡的一些信息。在命令行提示窗口,运行命令mst status,来获取卡的PCI ID。我的卡,如下图,ID是mt26428_pci_cr0,你的可能跟这个差不多,除非你有好几个卡。顺便提一句,数字26428是戴尔夹层卡的设备ID(一种产品标识符)。你可能注意到了,这个设备ID和一些Sun,惠普,Mellanox ConnectX-2双端口QDR卡的设备ID一样,这表明我们的戴尔卡确实是一款标准的Mellanox产品,尽管使用了戴尔专有的固件。

3)现在知道了卡的PCI ID,我们还要查明其他几个属性。在同一个命令行提示窗口里,运行命令flint -d query(一般为 flint -d mt26428_pci_cr0 query ),记下你卡的Board ID。见下图,戴尔的Board ID为DEL09A0000009。某些Sun卡的Board ID为SUN0170000009。


 

文章评论