簡介
本檔案介紹在本機fiberchannel網路介面卡(nfnic)驅動程式上設定最大佇列深度與未完成輸入/輸出(IO)的程序。在VMware ESXi 6.7虛擬機器監控程式中,所有Cisco介面卡的nfnic驅動程式都替換了fiberchannel網路介面卡(fnic)驅動程式。
nfnic驅動程式的預設隊列深度設定為32,並且在所有nfnic驅動程式的初始版本上,無法調整nfnic隊列深度。這將所有最大裝置隊列深度和磁碟計畫未完成的請求數限製為32。由於建議的隊列深度為128,因此使用vSphere虛擬卷時也會出現問題。此限制的影響也可以在工作負載較高且通常需要較大隊列深度的任何VM上看到。
撰稿人:Michael Baba、Josh Good和Alejandro Marino;Cisco TAC工程師。
背景資訊
建立增強功能以新增配置隊列深度引數的功能:https://bst.cloudapps.cisco.com/bugsearch/bug/CSCvo09082
從nfnic驅動程式4.0.0.35版開始,可以通過ESXi命令列介面(CLI)調整「lun_queue_depth_per_path」。 此驅動程式版本可以手動安裝到ESXi主機(如果它尚未安裝在ESXi主機上)。
Nfnic驅動程式4.0.0.35可在UCS刀片韌體捆綁包4.0.4中找到,也可從VMware單獨下載。您應該參閱UCS硬體和軟體相容性頁面,以獲取針對您的特定硬體和軟體組合推薦的最新驅動程式。
檢查和更新nfnic驅動程式
正在檢查安裝的驅動程式
要檢查當前安裝的nfnic驅動程式版本,請運行:
esxcli software vib list | grep nfnic
您應該會看到:
[root@localhost:~] esxcli software vib list | grep nfnic
nfnic 4.0.0.14-1OEM.670.1.28.10302608 Cisco VMwareCertified 2019-08-24
[root@localhost:~]
如果您沒有看到任何輸出,那麼您當前沒有安裝nfnic驅動程式。請參閱UCS硬體和軟體相容性頁,檢查您的配置是否應該使用nfnic或fnic驅動程式。
升級nfnic驅動程式
有關安裝最新驅動程式的詳細說明,不在本指南的討論範圍之內。有關升級驅動程式的逐步說明,請參閱通用作業系統的UCS驅動程式安裝或VMware文檔。升級驅動程式後,您可以使用上述命令驗證版本。
配置nfnic驅動程式
配置隊列深度引數
安裝正確的驅動程式後,我們可以檢查模組引數是否可用於配置:
esxcli system module parameters list -m nfnic
在此輸出中,我們可以看到預設值設定為32,但是我們可以配置從1到1024之間的任何值。如果使用vSphere虛擬卷,建議將此值設定為128。我們建議聯絡VMware和您的儲存供應商以獲取其他任何特定建議。
輸出示例:
[root@localhost:~] esxcli system module parameters list -m nfnic
Name Type Value Description
------------------------ ----- ----- --------------------------------------------------------------
lun_queue_depth_per_path ulong nfnic lun queue depth per path: Default = 32. Range [1 - 1024]
[root@localhost:~]
要更改隊列深度引數,命令如下所示。在下面的示例中,我們將其更改為128,但是您的值可能因環境而異。
esxcli system module parameters set -m nfnic -p lun_queue_depth_per_path=128
使用上述相同命令可以配置已進行的更改:
[root@localhost:~] esxcli system module parameters list -m nfnic
Name Type Value Description
------------------------ ----- ----- --------------------------------------------------------------
lun_queue_depth_per_path ulong 128 nfnic lun queue depth per path: Default = 32. Range [1 - 1024]
[root@localhost:~]
在協定終端上配置未完成的IO
我們現在可以在協定端點上配置未完成的IO以匹配上面的隊列深度(在我們的示例中,為128),然後檢查以確保兩個值都更改為128。
附註:進行此配置更改之前,可能需要重新啟動主機。
更改特定裝置的隊列深度:
esxcli storage core device set -O 128 -d naa.xxxxxxxxx
要查詢裝置ID,您可以使用以下命令:
esxcli storage core device list
要確認特定裝置的更改,請執行以下操作:
esxcli storage core device list -d naa.xxxxxxxxxx
輸出示例。我們可以看到,「Device Max Queue Depth:」和「No of outstanding IOs with competitive words:」仍然有32個。
[root@localhost:~] esxcli storage core device list -d naa.600a09803830462d803f4c6e68664e2d
naa.600a09803830462d803f4c6e68664e2d
Display Name: VMWare_SAS_STG_01
Has Settable Display Name: true
Size: 2097152
Device Type: Direct-Access
Multipath Plugin: NMP
Devfs Path: /vmfs/devices/disks/naa.600a09803830462d803f4c6e68664e2d
Vendor: NETAPP
...snip for length...
Is Boot Device: false
Device Max Queue Depth: 32
No of outstanding IOs with competing worlds: 32
Drive Type: unknown
RAID Level: unknown
Number of Physical Drives: unknown
Protection Enabled: false
PI Activated: false
PI Type: 0
PI Protection Mask: NO PROTECTION
Supported Guard Types: NO GUARD SUPPORT
DIX Enabled: false
DIX Guard Type: NO GUARD SUPPORT
Emulated DIX/DIF Enabled: false
現在,我們將此裝置的配置更改為128
esxcli storage core device set -O 128 -d naa.600a09803830462d803f4c6e68664e2d
在檢查同一輸出時,我們可以看到「Device Max Queue Depth:」和「No of outstanding IOs with competitive words:」現在均為128。如果更改沒有立即反映出來,則可能需要重新啟動ESXi主機。
[root@localhost:~] esxcli storage core device list -d naa.600a09803830462d803f4c6e68664e2d
naa.600a09803830462d803f4c6e68664e2d
Display Name: VMWare_SAS_STG_01
Has Settable Display Name: true
Size: 2097152
Device Type: Direct-Access
Multipath Plugin: NMP
Devfs Path: /vmfs/devices/disks/naa.600a09803830462d803f4c6e68664e2d
Vendor: NETAPP
...snip for length...
Is Boot Device: false
Device Max Queue Depth: 128
No of outstanding IOs with competing worlds: 128
Drive Type: unknown
RAID Level: unknown
Number of Physical Drives: unknown
Protection Enabled: false
PI Activated: false
PI Type: 0
PI Protection Mask: NO PROTECTION
Supported Guard Types: NO GUARD SUPPORT
DIX Enabled: false
DIX Guard Type: NO GUARD SUPPORT
Emulated DIX/DIF Enabled: false