简介
本文档介绍在本地光纤通道网络接口卡(nfnic)驱动程序上配置最大队列深度和未完成输入/输出(IO)的过程。在VMware ESXi 6.7虚拟机监控程序中,所有思科适配器的nfnic驱动程序替换了光纤通道网络接口卡(fnic)驱动程序。
nfnic驱动程序的默认队列深度设置为32,在nfnic驱动程序的所有初始版本上,无法调整nfnic队列深度。这将所有最大设备队列深度和磁盘计划数量请求数限制为未处理的32。由于建议的队列深度为128,因此在使用vSphere虚拟卷时也导致了问题。此限制的影响也可以在任何工作负载较高且一般需要更大队列深度的虚拟机上看到。
作者:Michael Baba、Josh Good和Alejandro Marino;思科TAC工程师。
背景信息
为增加配置队列深度参数的能力而创建的增强功能:https://bst.cloudapps.cisco.com/bugsearch/bug/CSCvo09082
从nfnic驱动程序的4.0.0.35版开始,您可以通过ESXi命令行界面(CLI)调整“lunqueuedepthperpath”。 如果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:~]
要更改“队列深度”(Queue Depth)参数,命令如下。在以下示例中,我们将其更改为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。
NOTE:在进行此配置更改之前,可能需要重新启动主机。
要更改特定设备的队列深度,请执行以下操作:
esxcli storage core device set -O 128 -d naa.xxxxxxxxx
要查找设备ID,可使用以下命令:
esxcli storage core device list
要确认特定设备的更改,请执行以下操作:
esxcli storage core device list -d naa.xxxxxxxxxx
带输出的示例。我们可以看到,“设备最大队列深度:”和“与竞争世界竞争的出色IO数量:”仍为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
在检查相同的输出时,我们可以看到“设备最大队列深度:”和“竞争世界中未完成的IO数:”现在都为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