<返回更多

增加的 I/O 请求滞后时间会降低虚拟机性能

2021-06-23  今日头条  网络管理员老高
加入收藏

如果 ESXi 主机对 LUN 生成的命令超过 LUN 队列深度所允许的数量,则超出的命令会在 VMkernel 中排队。

这会增加滞后时间,或是完成 I/O 请求所需的时间。

问题

主机完成 I/O 请求所需的时间更长,且虚拟机会显示性能不佳。

原因

这个问题可能是由于 LUN 队列深度不够而引起的。SCSI 设备驱动程序有一个名为 LUN 队列深度的可配置参数,可确定向给定 LUN 发出的命令中同时处于活动状态的数量。如果主机对 LUN 生成过多的命令,则超出的命令会在 VMkernel 中排队。

解决方案

1 如果所有虚拟机中活动命令的总和总是超出 LUN 深度,则会增加队列深度。

用于增加队列深度的过程取决于主机使用的存储适配器类型。

2 调整
Disk.SchedNumReqOutstanding 参数,使其与队列深度值匹配。

调整 QLogic 和 Emulex HBA 的队列深度

如果您对主机的性能不满意,请更改 QLogic 或 Emulex HBA 的最大队列深度。

要调整最大队列深度参数,请使用 vCLI 命令。

在此过程中,--server=server_name 指定目标服务器。指定的目标服务器会提示您输入用户名和密码。支持其他连接选项,如配置文件或会话文件。有关连接选项的列表,请参见 vSphere 命令行界面入门.

前提条件

安装 vCLI 或部署 vSphere Management Assistant (vMA) 虚拟机。请参见 vSphere 命令行界面入门。要进行故障排除,请在 ESXi Shell 中运行 esxcli 命令。

步骤

1 通过输入以下命令之一确认当前正在加载的 HBA 模块:

对于 QLogic:esxcli --server=server_name system module list |grep qla

对于 Emulex:esxcli --server=server_name system module list |grep lpfc

2 调整相应模块的队列深度。

注意 这些示例显示了 QLogic qla2xxx 和 Emulex lpfc820 模块。请使用与上一步骤的输出相对应的模块。

对于 QLogic:

esxcli --server=server_name system module parameters set -m qla2xxx -p ql2xmaxqdepth=value

对于 Emulex:

esxcli --server=server_name system module parameters set -m lpfc820 -p

lpfc0_lun_queue_depth=value

3 重新引导主机。

4 通过运行以下命令确认更改:

esxcli --server=server_name system module parameters list -m=module。

module 为 QLogic 或 Emulex 模块,如 lpfc820 或 qla2xxx。

调整软件 iSCSI 的最大队列深度

如果发现软件 iSCSI LUN 的性能不佳,请通过运行 esxcli 命令来更改其最大队列深度。

前提条件

安装 vCLI 或部署 vSphere Management Assistant (vMA) 虚拟机。请参见 vSphere 命令行界面入门。要进

行故障排除,可以在 ESXi Shell 中运行 esxcli 命令。

在此过程中,--server=server_name 连接选项指定目标服务器。准备好在目标服务器提示您时输入用户名和密码。有关其他可能的连接选项的列表,请参见 vSphere 命令行界面入门。

步骤

1 运行下列命令:

esxcli --server=server_name system module parameters set -m iscsi_vmk -p

iscsivmk_LunQDepth=value

iscsivmk_LunQDepth 参数用于为通过软件 iSCSI 适配器访问的每个 LUN 设置最大未完成命令数或队列深

度。默认值为 128。

2 重新引导系统。

3 通过运行 esxcli --server=server_name system module parameters list -m iscsi_vmk 命令来确认所做的更改。

小心 将队列深度设置为高于默认值的值,可减少受支持 LUN 的总数。

更改虚拟机未完成磁盘请求的最大数目

如果调整了 LUN 队列深度,请更改
Disk.SchedNumReqOutstanding 参数,以便其值与队列深度匹配。该参数控制每个虚拟机可以向 LUN 发出的未完成请求的最大数目。

仅当有多个虚拟机在 LUN 上处于活动状态时才更改此参数。此参数不适用于 LUN 上只有一个虚拟机处于活动状态的情况。在这种情况下,带宽由存储适配器的队列深度限制。

步骤

1 在 vSphere Client 清单面板中选择主机。

2 单击配置选项卡,然后单击“软件”下的高级设置。

3 在左侧面板中单击磁盘,并向下滚动至
Disk.SchedNumReqOutstanding。

4 将参数值更改为所选的数字并单击确定。

此更改可对磁盘带宽调度产生影响,但是实验结果证明此更改对磁盘密集型工作负载有改善作用。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>