測試結(jié)果中的1958MB/s的意思是,你的40千兆網(wǎng)卡的傳輸大概只在15千兆左右。那其他那些帶寬都跑哪兒去了呢?要查明原因,你要打開一個(gè)PowerShell窗口。Get-NetOffloadGlobalSetting顯示NetworkDirect的狀態(tài)是開啟,也就是說你可以使用RDMA——如果你的卡支持這個(gè)功能的話。

運(yùn)行Get-NetAdapterRdma,顯示該卡已經(jīng)被設(shè)置為可以使用RDMA。那為什么不能用呢?

即便有一個(gè)配置正確的系統(tǒng)——而且Windows Server 2012默認(rèn)情況就下就是配置好的——如果你的卡的固件不適用于操作系統(tǒng),你也不能使用RDMA。接著查找問題,關(guān)鍵的PowerShell查詢命令是Get-SmbServerNetworkInterface,它(見下圖)可以直觀地顯示出我們的InfiniBand卡不能在Windows Server 2012里使用IPoIB RDMA。Windows系統(tǒng)日志里還有更多內(nèi)容,但我們不需要;我們已經(jīng)知道怎么回事了。

問題出在老舊的固件上

我們的卡在規(guī)格說明里承諾提供RDMA,原來,要在Windows Server 2012上使用,你的Mellanox固件版本必須在2.9.8350以上。你可以用多種方式查到你的固件版本。最簡單的方式就是Windows設(shè)備管理器,如下圖示,它顯示,此卡的固件版本為2.9.1000,不支持RDMA。

下載一個(gè)固件更新器不行嗎?

Mellanox在其Windows 2012安裝程序里提供的固件版本為2.10.720,但那個(gè)installer不會(huì)更新第三方的貼牌網(wǎng)卡。戴爾和惠普的最新固件版本是2.9.1000,不支持RDMA。我這還有幾個(gè)Sun卡,正在用的版本是2.7.8130。固件不更新,我們就沒法使用RDMA,但廠商(到現(xiàn)在為止)還沒有更新它們的安裝程序。

解決辦法就是自制固件

幸運(yùn)的是,還是有解決辦法的:自己制作固件并刷新。實(shí)際操作比聽上去容易多了。第一次的話也能要花30分鐘。之后,這一過程頂多兩分鐘。我們將從已經(jīng)安裝的 Infiniband 開始,使用自帶的微軟驅(qū)動(dòng),以及上面配置的IP地址信息。

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

1. 安裝Mellanox WinMFT
2. 獲取該卡設(shè)備ID
3. 獲取該卡Board ID
4. 下載 .mlx文件
5. 下載 .ini文件
6. 使用mlxburn制作并刷新固件

刷新固件的具體步驟:

1)安裝Mellanox WinMFT軟件包。它提供給我們所需的制作和刷新固件的工具。本文撰寫時(shí),最新版本為2.7.2,安裝程序名為WinMFT_x64_2_7_2.msi。

2) 現(xiàn)在我們需要獲取此卡的一些信息。在命令行提示窗口,運(yùn)行命令mst status,來獲取卡的PCI ID。我的卡,如下圖,ID是mt26428_pci_cr0,你的可能跟這個(gè)差不多,除非你有好幾個(gè)卡。順便提一句,數(shù)字26428是戴爾夾層卡的設(shè)備ID(一種產(chǎn)品標(biāo)識(shí)符)。你可能注意到了,這個(gè)設(shè)備ID和一些Sun,惠普,Mellanox ConnectX-2雙端口QDR卡的設(shè)備ID一樣,這表明我們的戴爾卡確實(shí)是一款標(biāo)準(zhǔn)的Mellanox產(chǎn)品,盡管使用了戴爾專有的固件。

3)現(xiàn)在知道了卡的PCI ID,我們還要查明其他幾個(gè)屬性。在同一個(gè)命令行提示窗口里,運(yùn)行命令flint -d query(一般為 flint -d mt26428_pci_cr0 query ),記下你卡的Board ID。見下圖,戴爾的Board ID為DEL09A0000009。某些Sun卡的Board ID為SUN0170000009。

4)下載原始的固件文件到你的Infiniband服務(wù)器的一個(gè)文件夾里。原始的固件文件是一個(gè)擴(kuò)展名為.mlx的大的文本文件。我使用的版本是2.10.720,固件文件名為fw-ConnectX2-rel.mlx,是我從用于Windows 2012的Mellanox 4.2驅(qū)動(dòng)安裝程序中提取的。你可以從這里下載我的固件文件http://www.openida.com/wp-content/uploads/fw-ConnectX2-rel.zip。如果不想下載我的版本,你也可以從Mellanox安裝程序中提取自己的固件文件。啟動(dòng)安裝程序,讓它運(yùn)行,查看文件夾c:usersappdatalocal emp,找到擴(kuò)展名為.mlx的文件。

5) 下載 .ini 文件,把它放到 .mlx 固件文件的同一目錄。我的Dell PowerEdge C6100夾層卡的版本在這里http://www.openida.com/wp-content/uploads/DEL09A0000009.zip。該 .ini 文件必須與Board ID匹配,因此你需要將它命名為“DEL09A0000009.ini”。如果你下載了我的版本,請?zhí)^第六步。如果你不想使用我的固件文件,你可以通過編輯和重命名非貼標(biāo)Mellanox卡的.ini文件自己制作。在Mellanox安裝程序仍在運(yùn)行時(shí),到c:usersappdatalocal emp文件夾中找到名為MHQH29C_A1-A2.ini的文件。編輯內(nèi)容(以戴爾為例),屬性Name = DEL09A0000009,PSID = DEL09A0000009,然后將文件更名為DEL09A0000009.ini。如果你用的是Sun ConnectX-2卡,只要把文件屬性和文件名中的戴爾Board ID改為Sun Board即可。

6) 你現(xiàn)在就可以制作新的固件鏡像并刷到自己的卡上了。這兩步用一個(gè)命令就能完成,而且必須是在你的服務(wù)器裝有 Infiniband 卡的情況下完成。打開Windows命令行提示窗口,目錄指向你的下載文件位置。輸入命令mlxburn.exe -dev -fw ,你那兒應(yīng)該是mlxburn.exe -dev mt26428_pci_cr0 -fw fw-ConnectX2-rel.mlx。

在運(yùn)行此命令時(shí),mlxburn會(huì)查找你的卡的Board ID。然后到文件夾下尋找有該Board ID的.ini文件。隨后mlxburn使用.mlx固件文件和.ini文件來制作固件鏡像,并將其燒錄到卡中。完成后,重啟服務(wù)器,讓新的固件生效。

檢查你的工作

要想檢查新的固件版本,打開Windows命令提示行窗口,運(yùn)行命令 flint -d (舉例flint -d mt26428_pci_cr0)。查看固件版本,確認(rèn)是否為 2.10.720,或者是你用的mlx文件版本。

現(xiàn)在檢查你的卡能否使用RDMA了。打開PowerShell窗口,輸入Get-SmbServerNetworkInterface。如下圖,你的 Infiniband 端口現(xiàn)在應(yīng)該顯示 RDMA 可用。

最后,運(yùn)行吞吐量測試。這次的結(jié)果為3,279MB/s – 相當(dāng)于實(shí)際文件共享吞吐量為 25.6 千兆。

更令人驚訝的是RDMA的IPoIB難以置信的低延遲。IOMeter測試4kb隨機(jī)傳輸顯示,平均延遲僅為.51毫秒,將近250,000 的4kb隨機(jī)IOPS ——一個(gè)大約2009年的Window文件服務(wù)器。

其他細(xì)節(jié)

本文的文件服務(wù)器是Dell PowerEdge C6100 XS23-TY3 node,雙英特爾至強(qiáng)L5520處理器,Dell QDR Infiniband夾層卡(不到200美元)。我用的默認(rèn)設(shè)置全新安裝 Windows 2012服務(wù)器。為了測試,我需要一個(gè)比Infiniband卡還快的文件系統(tǒng)——這可不容易。為了達(dá)到此目的,我在文件服務(wù)器上運(yùn)行了免費(fèi)的StarWind RAM disk軟件,并配置了四個(gè)8GB 內(nèi)存盤。在本地使用IOMeter測試時(shí),這些內(nèi)存盤的吞吐能力超過9GB每秒,這足以趕上一個(gè) Infiniband 卡。這些超快的磁盤之后被設(shè)置為標(biāo)準(zhǔn)的Windows共享。

用于測試的客戶端是另一臺(tái)一模一樣的Dell C6100 node,使用 Mellanox Grid Director 4036 Infiniband交換機(jī)連接到服務(wù)器上。在 IPoIB 網(wǎng)絡(luò)上裝上了這四個(gè)共享卷之后,我開始在客戶端機(jī)器上使用IOMeter進(jìn)行吞吐量和IOPS測試。吞吐量測試存取規(guī)范是:1MB傳輸,100%隨機(jī)和100%讀取,其他設(shè)置均為默認(rèn)值。IOPS測試,傳輸大小為4kb。我在四個(gè)磁盤上的每一個(gè)都使用的測試文件大小為16,000,000個(gè)扇區(qū),隊(duì)列深度為32。 在IOMeter中,你可以通過多選對多個(gè)卷進(jìn)行測試。其他設(shè)置均為默認(rèn)值。比如,Windows防火墻打開,大型頁面沒有啟動(dòng)。

分享到

tangrong

相關(guān)推薦