iSCSI パフォーマンスの分析とチューニング
この手順では、 システムに接続中の iSCSI (Internet Small Computer Systems Interface) ホストのパフォーマンス問題を解決し、ネットワーク・スイッチに接続できるようにします。
このタスクについて
- 伝送制御プロトコル (TCP) 遅延 ACK
- イーサネット・ジャンボ・フレーム
- ネットワークのボトルネックまたはオーバー・サブスクリプション
- iSCSI セッション・ログインのバランス
- ネットワーク上での iSCSI に対する優先順位フロー制御 (PFC) 設定および帯域幅割り振り
- iSCSI/iSER ホストが、 100g ポートで構成された IP アドレスを含むポート・セットにマップされる場合、iSCSI 帯域幅のパフォーマンスは低下します。
- iSCSI ホストから 100g イーサネット・ポートへのマッピングは、現在、デフォルトで制限されています。 chhost-force フラグを使用して、制限をオーバーライドできます。
手順
- TCP 遅延確認応答フィーチャーを無効にします。このフィーチャーを無効にするには、OS/プラットフォームの資料を参照してください。
- VMware: https://kb.vmware.com/s/article/1002598.
- Windows: http://support.microsoft.com/kb/823764。
- Linux (RHEL): https://access.redhat.com/solutions/407743。
- Linux (その他): ホスト・サイドで quickack を有効にするには、IP ユーティリティーを使用します。 例: ip route show、ip route change 192.168.140.0/24 dev eth7 proto kernel scope link src 192.168.140.55 quickack 1
この問題の主なこん跡は、読み取りパフォーマンスが書き込みパフォーマンスよりかなり低いことです。 伝送制御プロトコル (TCP) 遅延確認応答は、ネットワークのパフォーマンスを向上させるために一部の TCP 実装環境で使用される技法です。 ただし、このシナリオでは未処理の入出力数が 1 であり、この技法は入出力のパフォーマンスを大幅に低減させる可能性があります。
実質的には、複数の ACK 応答を単一の応答に結合して、プロトコルのオーバーヘッドを減らすことができます。 RFC 1122 で記述されているとおり、ホストは、ACK 応答の送信を最大 500 ms まで遅延させることができます。さらに、フルサイズの着信セグメントのストリームでは、1 秒ごとのセグメントの ACK 応答を送信されなければなりません。
- iSCSI のジャンボ・フレームを有効にします。
ジャンボ・フレームは、サイズが 1500 バイトを超えるイーサネット・フレームです。 最大伝送単位 (MTU) パラメーターは、ジャンボ・フレームのサイズの測定に使用されます。
システムは、9000 バイトの MTU をサポートします。 ジャンボ・フレームを使用可能にするには、chportethernet コマンドを参照してください。 このコマンドは、リンクが反転してそのポートを介した入出力操作が休止するため、中断しています。
有効にするには、ネットワークがジャンボ・フレームをエンドツーエンドでサポートする必要があります。 ネットワークがジャンボ・フレームをサポートしていることを確認するには、フラグメントなしに配信される ping パケットを送信します。 例えば次のとおりです。- Windows:
ping -t <iscsi target ip> -S <iscsi initiator ip> -f -l <new mtu size - packet overhead (usually 36, might differ)>
以下のコマンドは、Windows 7 システムで 9000 バイトの MTU が正しく設定されているかどうかを検査するために使用されるコマンドの例です。
次の出力は、成功したときの応答の例です。ping -t -S 192.168.1.117 192.168.1.217 -f -l 8964
192.168.1.217: bytes=8964 time=1ms TTL=52
- Linux®:
ping -l <source iscsi initatior ip> -s <new mtu size> -M do <iscsi target ip>
- ESXi:
ping <iscsi target ip> -I <source iscsi initiator ip> -s <new mtu size - 28> -d
- Windows:
- イニシエーター/ターゲット・ポートが接続されているスイッチのポート統計を検査して、パケット・ドロップが多数でないことを確認します。
ネットワーク体系を検討して、ボトルネックとオーバー・サブスクリプションを回避してください。 パケット・ドロップを回避するには、ネットワークのバランスを取る必要があります。パケット・ドロップは、ストレージのパフォーマンスを大幅に低下させます。 そのような問題を修正するには、ネットワーキング・サポートに依頼してください。
- すべての iSCSI ポートを最適化して使用します。システムのリソース使用状況を最適化するには、すべての iSCSI ポートを使用する必要があります。
- 各ポートに 1 つの CPU が割り当てられます。ログインのバランスを取ることによって、CPU 使用率を最大化し、パフォーマンス改善を実現することができます。 理想的には、システム・ノード上の iSCSI ポートの数と同じ数のサブネットを構成します。 ノードの各ポートは、それぞれ異なるサブネット上の IP を使用して構成し、他のノードでも同じ構成を維持してください。 次の例は、理想的な構成を示しています。
Node 1
Port 1: 192.168.1.11
Port 2: 192.168.2.21
Port 3: 192.168.3.31
Node 2:
Port 1: 192.168.1.12
Port 2: 192.168.2.22
Port 3: 192.168.3.33
- ポート 1 にログインしているのが 50 個のホストで、ポート 2 にログインしているのが 5 個のホストだけという状態は避けてください。
- 適切なサブネット化を使用して、セッション数と冗長度との間のバランスを取ります。
- 各ポートに 1 つの CPU が割り当てられます。ログインのバランスを取ることによって、CPU 使用率を最大化し、パフォーマンス改善を実現することができます。 理想的には、システム・ノード上の iSCSI ポートの数と同じ数のサブネットを構成します。 ノードの各ポートは、それぞれ異なるサブネット上の IP を使用して構成し、他のノードでも同じ構成を維持してください。 次の例は、理想的な構成を示しています。
- ネットワーク上で iSCSI に適切な帯域幅が提供されていることを確認します。
さまざまなタイプのトラフィック間で帯域幅を分割することができます。 良好なパフォーマンスを実現するには、適切な帯域幅を割り当てることが重要です。 iSCSI トラフィックに帯域幅を割り当てるには、最初に iSCSI に対して優先順位フロー制御を有効にする必要があります。