在为存储设备使用 HPP 时,设置该设备的延迟敏感阈值,使 I/O 可以绕过 I/O 调度程序。

默认情况下,ESXi 通过 I/O 调度程序传递每个 I/O。但是,使用调度程序可能会创建内部队列,这不是利用高速存储设备的有效方法。

您可以配置延迟敏感阈值并启用直接提交机制,帮助 I/O 绕过调度程序。若启用此机制,则 I/O 会通过 HPP 直接从 PSA 传递到设备驱动程序。

要顺利执行直接提交,观察到的平均 I/O 延迟必须低于您指定的延迟阈值。如果 I/O 延迟超过延迟阈值,系统会停止直接提交,并暂时恢复到使用 I/O 调度程序。当平均 I/O 延迟再次下降至低于延迟阈值时会恢复直接提交。

可以为一系列 HPP 声明的设备设置延迟阈值。使用供应商和型号对、控制器型号或者 PCIe 供应商 ID 和子供应商 ID 对,设置延迟阈值。

过程

  1. 通过运行以下命令,设置设备的延迟敏感阈值:
    esxcli storage core device latencythreshold set -t value in milliseconds

    使用下列选项之一。

    选项 示例
    供应商/型号 为具有指定供应商和型号的所有设备设置延迟敏感阈值参数:esxcli storage core device latencythreshold set -v 'vendor1' -m 'model1' -t 10
    NVMe 控制器型号 为具有指定控制器型号的所有 NVMe 设备设置延迟敏感阈值:esxcli storage core device latencythreshold set -c 'controller_model1' -t 10
    PCIe 供应商/子供应商 ID 为 PCIe 供应商 ID 为 0x8086 和 PCIe 子供应商 ID 为 0x8086 的设备设置延迟敏感阈值。esxcli storage core device latencythreshold set -p '8086' -s '8086' -t 10
  2. 确认延迟阈值已设置:
    esxcli storage core device latencythreshold list
    Device                Latency Sensitive Threshold
    --------------------  ---------------------------
    naa.55cd2e404c1728aa               0 milliseconds
    naa.500056b34036cdfd               0 milliseconds
    naa.55cd2e404c172bd6              50 milliseconds
    
  3. 监控延迟敏感阈值的状态。检查以下条目的 VMkernel 日志:
    • Latency Sensitive Gatekeeper turned on for device 设备. Threshold of XX msec is larger than max completion time of YYY msec
    • Latency Sensitive Gatekeeper turned off for device 设备. Threshold of XX msec is exceeded by command completed in YYY msec