ラウンド ロビンの IOPS 制限をデフォルトの 1000 から 1 に調整する
search cancel

ラウンド ロビンの IOPS 制限をデフォルトの 1000 から 1 に調整する

book

Article ID: 327072

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

iSCSI/FC/FC/FCoE のいずれかのストレージを使用する ESXi ホストで、SAN 側での遅延の兆候がなしで遅延の問題が発生する。

Symptoms:
免責事項:これは英文の記事「Adjusting Round Robin IOPS limit from default 1000 to 1 (2069356)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

Environment

VMware vSphere ESXi 7.0.x

Resolution

ESXi のラウンド ロビン PSP (パス選択プラグイン)では、すべてのアクティブなストレージ パス間で負荷を分散するために、ラウンドロビン アルゴリズムが使用されます。1 つのパスは、特定の量のデータが送信されるまで選択されたままで使用されます。その量に達すると、PSP ではリスト内の次のパスが選択されます。
パスの変更がトリガーされるこの量は「制限」と呼ばれます。
 
ESXi のラウンド ロビン PSP では、2 つのタイプの制限がサポートされています。
  • IOPS 制限: デフォルトの場合、ラウンド ロビン PSP の IOPS 制限の値は 1000 になります。このデフォルトの場合では、I/O 操作が 1000 回発行されると新しいパスが使用されます。
  • バイト制限: バイト制限は、IOPS 制限の代わりの方法です。バイト制限では、パスが切り替えられるまでに指定した量のバイト数が送信されることを許可します。
制限を調整すると、パフォーマンスに好影響を与えるため、他のストレージ ベンダーでは IOPS 制限を 1 に変更することが推奨されています。
 
例:
 
デフォルトである 1 秒あたり 1000 回の入出力操作 (IOPS) では、切り替える前に I/O が各パスに 1000 回送信されます。負荷が、1000 回の IOPS の一部によってパスのバンド幅が飽和する可能性があるようなものの場合、ストレージ アレイで要求を処理できる場合でも、残りの I/O は待機する必要があります。IOPS 制限またはバイト制限を低い値に調整して、パスをより頻繁な割合で切り替えることを可能にできます。この調整によって、一方のパスが現在飽和している場合に、追加のパスの帯域幅を使用することができます。
IOPS パラメータの調整
 
IOPS パラメータをデフォルトの 1000 から 1 に調整するには、次のコマンドを実行します。
 
ESXi 5.x/6.0 の場合:
for i in `esxcfg-scsidevs -c |awk '{print $1}' | grep naa.xxxx`; do esxcli storage nmp psp roundrobin deviceconfig set --type=iops --iops=1 --device=$i; done

ここで、.xxxx は、naa ID の最初の数文字に一致します。
 
この変更が適用されたかどうかを確認するには、次のコマンドを実行します。

esxcli storage nmp device list

 
次のような出力が表示されます。
 
Path Selection Policy: VMW_PSP_RR
Path Selection Policy Device Config: {policy=iops,iops=1,bytes=10485760,useANO=0;lastPathIndex=1: NumIOsPending=0,numBytesPending=0}
Path Selection Policy Device Custom Config:
Working Paths: vmhba33:C1:T4:L0, vmhba33:C0:T4:L0
 
ESXi 4.x の場合:
for i in ` esxcfg-scsidevs -c |awk '{print $1}' |grep naa.xxxx ` ;do esxcli nmp roundrobin setconfig --device=$i --type=iops --iops=1; done
ここで、.xxxx は、naa ID の最初の数文字に一致します。
この変更が適用されたかどうかを確認するには、次のコマンドを実行します。

esxcli nmp device list
次のような出力が表示されます。
Path Selection Policy: VMW_PSP_RR
Path Selection Policy Device Config: {policy=iops,iops=1,bytes=10485760,useANO=0;lastPathIndex=0: NumIOsPending=0,numBytesPending=0}
Working Paths: vmhba33:C0:T1:L0
:変更を有効にするためにホストを再起動する必要はありません。


Additional Information

ESXi ホスト クラスタに、Microsoft Failover Clustering で使用される Raw デバイス マッピング (RDM) が含まれる場合、SAN ポートの輻輳が問題となります。ラウンド ロビン制限値を 200 IOPS に調整すると、より優れたフェイルオーバーの結果が得られる場合があります。

パス選択ポリシー ラウンド ロビン オプションを使用して IOPS をデフォルトから低い値に変更すると、それがパフォーマンスのチューニング設定となり、ストレージ アレイのストレージ プロセッサおよび HBA パス全体の負荷を分散できます。IOPS=1000 では、次のパスに切り替わる前に、1000 回の I/O がパスに送信されます。他のプロセッサがアイドル状態である一方で、アレイにある 1 つのストレージ プロセッサが I/O を処理し続け、すべての LUN が I/O を同じパスに同時に 1000 回送信するというシナリオに陥る可能性があります。1 回の I/O の後にパスを切り替えることで、パス全体の I/O のバランス、ひいてはストレージ プロセッサのバランスが改善されます。パス全体で均等な I/O バランスが得られます。飽和状態が発生した場合、その期間は非常に短いため、ストレージ プロセッサに時間を与えます。そうしないと、I/O の処理にさらに時間がかかります。

PowerCLI を使用してこれを自動化し、ラウンド ロビン マルチパス ポリシーを持つ各 LUN に対するクラスタあたりの IOPS 制限を変更することができます。詳細については、添付の 2069356_PowerCLI_-_change_RR_IOPS_per_cluster.txt ファイルを参照してください。
:使用環境でこの値の変更が推奨されるかどうかについては、ストレージ ベンダーにお問い合わせください。
Adjusting Round Robin IOPS limit from default 1000 to 1