Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

ONTAP FCホストのキュー深度を計算する

共同作成者 netapp-aherbin

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

タスク概要

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

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

キューの深さの「tuning」については、次のような一般的な推奨事項があります。

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

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

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

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

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

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

  2. 128をかけます。

    • 結果が2,048未満の場合は、すべてのイニシエーターのキュー深度を128に設定してください。ストレージコントローラーの2つのターゲットポートにそれぞれ1つのイニシエーターが接続されたホストが15台あります。15 × 128 = 1,920です。1,920はキュー深度の合計制限である2,048より小さいため、すべてのイニシエーターのキュー深度を128に設定できます。

    • 結果が2,048より大きい場合は、手順3に進みます。ストレージコントローラの2つのターゲットポートそれぞれに1つのイニシエーターが接続されたホストが30台あります。30 × 128 = 3,840です。3,840はキュー深度の合計制限である2,048より大きいため、手順3のいずれかのオプションを選択して修復する必要があります。

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

    • オプション1:

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

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

      3. 手順1と2を繰り返します。+ 必要なキュー深度3,840は、ポートあたりの利用可能なキュー深度を超えています。これを解決するには、各コントローラに2ポートのFCターゲット アダプタを追加し、FCスイッチを再ゾーン化して、30台のホストのうち15台を1つのポートセットに接続し、残りの15台を別のポートセットに接続するようにします。これにより、ポートあたりのキュー深度は15 × 128 = 1,920に減少します。

    • オプション2:

      1. 予想される I/O ニーズに基づいて、各ホストを「large」または「small」として指定します。

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

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

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

      5. 結果が2,048未満の場合は、大規模ホストのキュー深度を128に設定し、小規模ホストのキュー深度を32に設定します。

      6. 結果が依然としてポートあたり2,048を超える場合は、キューの深さの合計が2,048以下になるまで、イニシエーターあたりのキューの深さを減らします。

        メモ

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

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

        たとえば、応答時間が3ミリ秒で1秒あたり40,000回のI/Oが必要な場合、必要なキューの深さは40,000 × (.003) = 120になります。

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

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

結果として得られるキューの合計深度は(10 × 128)+(20 × 32)= 1,920になります。

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

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