はじめに
RHEL on Power において queue_depth の値を変更する必要があり、確認したログです。
POWER10 のマニュアルには以下が案内されていますが、リブートすると消えてしまうため、恒久的に設定する方法を確認していました。
hdiskN は物理ボリューム名を表し、value は 1 から 256 の範囲内でユーザーが割り当てた値になります。
クライアント論理区画上の Linux クライアント論理区画のキュー項目数を変更するには、次の例のように echo コマンドを使用します。
echo 16 > /sys/devices/vio/30000003/host0/target0:0:1/0:0:1:0/queue_depth
参考
-> /etc/udev/rules.d/ 下に設定ファイルを作成します。
ppc64le で以下のudev rules の記載を参考にしました。
udev rules for RHEL 7.9 PPC64LE protocol nodes
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd*[^0-9]",
PROGRAM="/usr/bin/lsblk -rno FSTYPE,MOUNTPOINT /dev/%k", RESULT=="[SL][WV][AM][P2]",
ATTR{device/vendor}=="ATA", ATTR{queue/nr_requests}="64", ATTR{device/queue_depth}="32"
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd*[^0-9]",
PROGRAM="/usr/bin/lsblk -rno FSTYPE,MOUNTPOINT /dev/%k", RESULT=="[SL][WV][AM][P2]",
ATTR{device/vendor}!="ATA", ATTR{queue/nr_requests}="128", ATTR{device/queue_depth}="64"
環境
RHEL8.6 ppc64le (VIO Client) on S1014
・vscsi(virtual scsi)、NPIV(N-Port ID Virtualization)のどちらの環境も同じ方法でqueue_depthの設定反映が確認できました。
設定、確認
・対象のデバイスの現在の queue_depth を確認
# udevadm info --attribute-walk --path=/sys/devices/vio/30000002/host0/target0:0:1/0:0:1:0 | grep queue_depth
ATTR{queue_depth}=="16"
# udevadm info --attribute-walk --path=/sys/devices/vio/30000003/host1/target1:0:1/1:0:1:0 | grep queue
ATTR{queue_depth}=="16"
デフォルト値の 16 の設定が確認できます。
・/etc/udev/rules.d/ に ルールズ・ファイル 99-scsi-queue-depth.rules を追加
試行錯誤で、実施した環境では以下の内容で変更されることを確認しています。
ACTION=="add|change", SUBSYSTEM=="block", ATTR{device/queue_depth}="32"
・OS再起動で反映を確認
# reboot
再起動後、設定値を確認
# udevadm info --attribute-walk --path=/sys/devices/vio/30000002/host0/target0:0:1/0:0:1:0 | grep queue_depth
ATTR{queue_depth}=="32"
# udevadm info --attribute-walk --path=/sys/devices/vio/30000003/host1/target1:0:1/1:0:1:0 | grep queue_depth
ATTR{queue_depth}=="32"
queue_depth がデバイス単位で 32 に設定されたことが確認できました。
おわりに
この設定は別環境の場合は、設定ファイルの書き方などが異なる可能性があります。
以上です。