HBA Queue Depth
Queue depth controls how many I/O commands can be outstanding to the HBA at once. The default (32 or 64) is conservative; higher values improve throughput for high-IOPS workloads.
Check current queue depth:
cat /sys/class/scsi_host/host*/can_queue
cat /sys/class/fc_host/host*/nr_portsTune Emulex (lpfc) queue depth:
# Check current setting
cat /sys/module/lpfc/parameters/lpfc_lun_queue_depth
# Set persistently via modprobe config
sudo tee /etc/modprobe.d/lpfc.conf > /dev/null <<'EOF'
options lpfc lpfc_lun_queue_depth=64
EOF
# Apply (requires driver reload or reboot)
sudo dracut -f
sudo rebootTune QLogic (qla2xxx) queue depth:
sudo tee /etc/modprobe.d/qla2xxx.conf > /dev/null <<'EOF'
options qla2xxx ql2xmaxqdepth=64
EOF
sudo dracut -f
sudo rebootDevice-Level Queue Depth
After driver queue depth is set, tune the SCSI device queue depth for the multipath devices:
# Check current queue depth on FC-attached disks
for dev in /sys/block/sd*/device/queue_depth; do
echo "$dev: $(cat $dev)"
done
# Persistent udev rule - set queue depth to 64 for Pure FlashArray devices
sudo tee /etc/udev/rules.d/99-pure-fc-queue-depth.rules > /dev/null <<'EOF'
ACTION=="add|change", SUBSYSTEM=="block", ATTRS{model}=="FlashArray*", ATTR{device/queue_depth}="64"
EOF
sudo udevadm control --reload-rules
sudo udevadm triggerTuned Profile
sudo dnf install -y tuned tuned-utils
sudo systemctl enable --now tuned
sudo tuned-adm profile throughput-performance
sudo tuned-adm active