简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

计算队列深度概述

提供者

您可能需要调整主机上的 FC 队列深度,以达到每个节点和 FC 端口扇入的 ITN 的最大值。可以连接到 FC 端口的最大 LUN 数和 HBA 数受 FC 目标端口上可用队列深度的限制。

队列深度是指一次可以在存储控制器上排队的 I/O 请求( SCSI 命令)数。从主机的启动程序 HBA 到存储控制器的目标适配器的每个 I/O 请求都会使用一个队列条目。通常,队列深度越高,性能越好。但是,如果达到存储控制器的最大队列深度,则存储控制器将通过返回 QFULL 响应来拒绝传入的命令。如果有大量主机正在访问存储控制器,则应仔细规划,以避免出现 QFULL 情况,因为这会显著降低系统性能,并可能导致某些系统出现错误。

在具有多个启动程序(主机)的配置中,所有主机的队列深度都应相似。由于通过同一目标端口连接到存储控制器的主机之间的队列深度不相等,队列深度较小的主机将被队列深度较大的主机剥夺对资源的访问权限。

关于 "`调整` " 队列深度,可以提出以下一般建议:

  • 对于中小型系统,请使用 32 的 HBA 队列深度。

  • 对于大型系统,请使用 128 的 HBA 队列深度。

  • 对于例外情况或性能测试,请使用 256 的队列深度,以避免可能出现的队列问题。

  • 所有主机都应将队列深度设置为类似的值,以便为所有主机提供平等的访问权限。

  • 为了避免性能损失或错误,不得超过存储控制器目标 FC 端口队列深度。

步骤
  1. 计算连接到一个 FC 目标端口的所有主机中的 FC 启动程序总数。

  2. 乘以 128 。

    • 如果结果小于 2 , 048 ,请将所有启动程序的队列深度设置为 128 。您有 15 台主机,其中一个启动程序连接到存储控制器上的两个目标端口中的每个端口。15 × 128 = 1 , 920 。由于 1 , 920 小于总队列深度限制 2 , 048 ,因此您可以将所有启动程序的队列深度设置为 128 。

    • 如果结果大于 2 , 048 ,请转至步骤 3 。您有 30 台主机,其中一个启动程序连接到存储控制器上的两个目标端口中的每个端口。30 × 128 = 3 , 840 。由于 3 , 840 大于总队列深度限制 2 , 048 ,因此您应在步骤 3 下选择一个选项进行修复。

  3. 选择以下选项之一,将更多主机添加到存储控制器。

    • 选项 1 :

      1. 添加更多 FC 目标端口。

      2. 重新分布 FC 启动程序。

      3. Repeat steps 1 and 2.+ 所需的队列深度 3 , 840 超出每个端口的可用队列深度。要解决此问题,您可以向每个控制器添加一个双端口 FC 目标适配器,然后对 FC 交换机重新分区,以便 30 台主机中的 15 台连接到一组端口,其余 15 台主机连接到另一组端口。然后,每个端口的队列深度将减少到 15 × 128 = 1 , 920 。

    • 选项 2 :

      1. 根据每个主机的预期 I/O 需求,将其指定为 "`large` " 或 " sm " 。

      2. 将大型启动程序的数量乘以 128 。

      3. 将小型启动程序的数量乘以 32 。

      4. 将这两个结果相加。

      5. 如果结果小于 2 , 048 ,请将大型主机的队列深度设置为 128 ,小型主机的队列深度设置为 32 。

      6. 如果结果仍然大于每个端口 2 , 048 ,请降低每个启动程序的队列深度,直到总队列深度小于或等于 2 , 048 。

        注

        要估算实现特定每秒 I/O 吞吐量所需的队列深度,请使用以下公式:

        所需队列深度 = (每秒 I/O 数) × (响应时间)

        例如,如果您需要每秒 40 , 000 个 I/O ,响应时间为 3 毫秒,则所需的队列深度 = 40 , 000 × ( 0.003 ) = 120 。

如果您决定将队列深度限制为基本建议 32 ,则可以连接到目标端口的最大主机数为 64 。但是,如果您决定将队列深度设置为 128 ,则最多可以将 16 个主机连接到一个目标端口。队列深度越大,单个目标端口可支持的主机就越少。如果您的要求不能影响队列深度,则应获得更多目标端口。

所需的队列深度 3 , 840 超出每个端口的可用队列深度。您有 10 个 "`大型` " 主机具有较高的存储 I/O 需求, 20 个 " s小型 " 主机具有较低的 I/O 需求。将大型主机上的启动程序队列深度设置为 128 ,将小型主机上的启动程序队列深度设置为 32 。

得到的总队列深度为( 10 × 128 ) + ( 20 × 32 ) = 1 , 920 。

您可以在每个启动程序之间平均分布可用队列深度。

每个启动程序得到的队列深度为 2 , 048 ÷ 30 = 68 。