Performance Tuning

Linux

Audience
Public
Product
FlashBlade
FlashArray
Technology Integrations
Linux
Source Type
Documentation

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_ports

Tune 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 reboot

Tune QLogic (qla2xxx) queue depth:

sudo tee /etc/modprobe.d/qla2xxx.conf > /dev/null <<'EOF'
options qla2xxx ql2xmaxqdepth=64
EOF

sudo dracut -f
sudo reboot

Device-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 trigger

Tuned Profile

sudo dnf install -y tuned tuned-utils
sudo systemctl enable --now tuned
sudo tuned-adm profile throughput-performance
sudo tuned-adm active