IBM TechXchange Japan Storage User Community

 View Only

ストレージに対するqueue depthの値について

By Keitaro Imai posted Fri August 21, 2020 02:12 AM

  
ストレージに対するパフォーマンスチューニングの項目として、queue depthというパラメーターが各OSであります。
この値は、通常はそれほど厳密に設定する必要はないものの、高いパフォーマンスが求められるような環境においては、設定するほうが良い場合もあります。
設定の意味としては、ストレージ装置が一度に処理できるI/Oの量という設定になります。
値が低すぎるとストレージの本来の能力が発揮できないこともありますし、高すぎるとQueue fullという状態が発生してパフォーマンスが落ちるもしくはI/Oができなくなるかもしれません。
ただし、最適な値として具体的にいくつを設定すれば良い、という推奨値はなく、環境次第ということになります。
従って、残念ながら具体的な数値については、ここではお伝えできません。
ただ、値を変えるべきかどうかという指標については各OSによってありますので、ここではそれを紹介したいと思います。

・AIX
"iostat -D 5"コマンドのアウトプットでavgwqsz (average wait queue size)かsqfullが、定常的に0より大きい値を示している場合は大きくすることを検討ください。
AIXのqueueのチューニングは以下をご覧ください。
AIXでは、hdiskと、fcsデバイスで設定する箇所がありますが、hdiskはqueue_depth、fcsデバイスはnum_cmd_elemsで設定します。
前者は一般的には40~64、後者は512~2048で設定することが多いです。


・Linux
"iostat -dx 5"コマンドのアウトプットで、await-svctmが定常的に0より大きい値を示している場合、もしくは、%util (disk utilization)が定常的に100%に近い値を示している場合は、大きくすることを検討ください。
Linuxのqueueのチューニングは以下をご覧ください。
Linuxの場合は、設定方法はHBAのベンダーによりますが、/etc/modprobe.confや/etc/modprobe.d/modprobe.confで設定を行います。
QlogicはQl2xmaxdepthを変更ください(デフォルト32)。
Emulexは、LUNはlpfc_lun_queue_depth (デフォルト30)、HBAポートはLpfc-hba_queue depth (デフォルト8192)を設定ください。
詳細は各HBAベンダーでご確認ください。


・VMware ESXi
esxtopを実行して、"u"をタイプするを実行すると、LQLEN列でLUNのqueue_depthを確認可能です。
また、%util が定常的に100%に近い値を示している場合は大きくすることを検討ください。
ESXiのqueueのチューニングは以下をご覧ください。
各ESXバージョン、各ベンダーHBAあたりのqueue depthのデフォルト設定、変更はこちらに詳細に記載されていますので参考にしてください。
Changing the queue depth for QLogic, Emulex, and Brocade HBAs (1267)
また、デバイス/LUN/ホストあたりのqueue depthについてもこちらに詳細に記載されていますので参考にしてください。
Setting the Maximum Outstanding Disk Requests for virtual machines (1268)


・Windows
パフォーマンスモニターのPhysical Disk → Current Disk Queue Lengthが定常的に0より大きい場合は大きくすることを検討してください。
ただ、HBAのベンダーやドライバーによっては、HBAのFirmwareで固定されるものもあるようで、ここはあまり厳密に意識する必要はないように思います(意識しているお客様も見かけたことはありません)。
以下、Qlogicの例です。
なお、ストレージによって受けられるqueueの値は異なります。明確に公表されていない部分もありますが、公表されている値については以下のような値となっています。
・FlashSystem A9000
ストレージ側のポートあたり、2048。
1つのLUNに対して、ホストからのポート1つあたり、256。
・XIV
ストレージ側のポートあたり、1400。
1つのLUNに対して、ホストからのポート1つあたり、256。
・SVC/Storwize/FlashSystem系
以下にあるようにHBAのポートのqueue depthは一般的には32、高い負荷の場合は128までの間で設定いただければ良いでしょう。
ただし、ストレージ側のポートあたり2048は超えないようにしてください。
https://www.ibm.com/support/knowledgecenter/STSLR9_8.3.1/com.ibm.fs9100_831.doc/svc_FCqueuedepth.html
・DS8880/DS8900F
ストレージ側のポートあたり2048まで。
なお、繰り返しになりますが通常はあまり意識して設定する必要はありません。パフォーマンスがどうしても出ない時などに設定変更を検討ください。
1 comment
20 views

Permalink

Comments

Thu March 16, 2023 10:21 PM

大変ためになりました。