ONTAP 9.13

to English version

キューの深さの算出 - 概要

ノードおよびFCポートのファンインあたりのITN数を最大にするために、ホストのFCキューの深さの調整が必要になる場合があります。LUNの最大数と1つのFCポートに接続できるHBAの数は、FCターゲット ポートで使用可能なキューの深さによって制限されます。

タスク概要

キューの深さは、ストレージ コントローラーで一度にキューに格納することができる、I/O要求(SCSIコマンド)の数です。ホストのイニシエータHBAからストレージ コントローラーのターゲット アダプターへのI/O要求ごとに、キュー エントリが1つ作成されます。一般に、キューの深さが深い(大きい)ほどパフォーマンスは向上します。ただし、ストレージ コントローラーの最大キューの深さに達すると、ストレージ コントローラーはQFULL応答を返して受け取ったコマンドを拒否します。QFULL状態はシステム パフォーマンスの大幅な低下を招き、一部のシステムではエラーを引き起こすこともあります。そのため、1台のストレージ コントローラーに多数のホストがアクセスしている環境では、QFULLが発生しないように慎重に計画してください。

複数のイニシエータ(ホスト)を含む構成では、すべてのホストでキューの深さを同程度に設定する必要があります。同じターゲット ポートを介してストレージ コントローラーに接続されたホスト間では、キューの深さに応じてリソースへのアクセスに差があり、キューの深さが小さいホストよりもキューの深さの大きいホストのアクセスが優先されます。

キューの深さを「調整」する際の一般的な推奨事項は次のとおりです。

  • 小規模から中規模のシステムでは、HBAキューの深さを32にする。

  • 大規模のシステムでは、HBAキューの深さを128にする。

  • 例外的なケースまたはパフォーマンス テストでは、キューの深さを256にしてキュー関連の問題の発生を避ける。

  • すべてのホストにアクセスが均等に保証されるよう、どのホストにも同程度のキューの深さを設定する。

  • パフォーマンスの低下やエラーを避けるために、ストレージ コントローラーのターゲットFCポートのキューの深さを超えないようにする。

手順
  1. 1つのFCターゲット ポートに接続しているすべてのホストのFCイニシエータの数を数えます。

  2. 128をかけます。

    • 2,048よりも少ない場合は、すべてのイニシエータのキューの深さを128に設定します。 15台のホストがあり、それぞれ1つのイニシエータがストレージ コントローラー上の2つのターゲット ポートそれぞれに接続されています。15×128 = 1,920です。これは合計最大キューの深さの2,048より少ないため、すべてのイニシエータのキューの深さを128に設定できます。

    • この値が2,048よりも大きい場合は、手順3に進みます。 30台のホストがあり、それぞれ1つのイニシエータがストレージ コントローラー上の2つのターゲット ポートそれぞれに接続されています。30×128 = 3,840です。これは合計最大キューの深さの2,048より大きいため、手順3に記載されているいずれかのオプションを実行して調整します。

  3. 次のいずれかのオプションを選択して、ストレージ コントローラーにホストを追加します。

    • オプション1:

      1. FCターゲット ポートを追加します。

      2. FCイニシエータを再配分します。

      3. 手順1~2を繰り返します。
        必要とされるキューの深さ3,840は、ポートあたりの使用可能なキューの深さを超えています。この状態を解決するため、各コントローラーに2ポートのFCターゲット アダプターを追加し、30台のホストのうち15台が1つのポートのセット、残りの15台が2つ目のポートのセットに接続されるよう、FCスイッチをゾーニングし直します。これで、ポートあたりのキューの深さは15 × 128 = 1,920となります。

    • オプション2:

      1. 各ホストの規模を、予想されるI/Oニーズに基づいて「大規模」か「小規模」に分類します。

      2. 大規模イニシエータの台数に128をかけます。

      3. 小規模イニシエータの台数に32をかけます。

      4. 2つの計算結果を合算します。

      5. 2,048より小さい場合は、大規模ホストのキューの深さを128に、小規模ホストのキューの深さを32に設定します。

      6. 2,048よりも大きい場合は、合計キューの深さが2,048以下になるまで各イニシエータのキューの深さを下げます。

        1秒間のI/O数(IOPS)による特定のスループットを達成するために必要なキューの深さを見積もるには、次の式を使用します。

        必要なキューの深さ = (IOPS)×(応答時間)

        たとえば、応答時間3ミリ秒で40,000 IOPSのスループットに必要なキューの深さは、40,000×(.003) = 120です。

基本となる推奨構成に従ってキューの深さを32に制限した場合、ターゲット ポートに接続できるホストの最大数は64です。一方、キューの深さを128にした場合は、1つのターゲット ポートに接続できるホストの最大数は16になります。このように、1つのターゲット ポートでサポートできるホストの数はキューの深さが大きいほど少なくなります。キューの深さを小さくできないような要件がある場合は、その分ターゲット ポートを増やしてください。

必要とされるキューの深さ3,840は、ポートあたりの使用可能なキューの深さを超えています。ストレージのI/Oニーズが高い「大規模」ホストが10台、I/Oニーズの低い「小規模」ホストが20台あります。大規模ホストのイニシエータのキューの深さを128に、小規模ホストのイニシエータのキューの深さを32に設定します。

その結果、合計キューの深さは(10×128)+(20×32) = 1,920になります。

使用可能なキューの深さを、各イニシエータに均等に分配できます。

そのため、イニシエータあたりのキューの深さは2,048÷30 = 68となります。

Top of Page