PowerEdge: Performance Issues on Linux Hosts when PERC or HBA Controllers use NVMe or SSD
Summary: Linux host reports reduced storage performance when using PERC or HBA controllers with attached SSD or NVMe devices.
Symptoms
Systems running Linux exhibit lower‑than‑expected performance on SSD or NVMe drives connected through PERC or HBA controllers. Symptoms include reduced IOPS, elevated latency, or suboptimal throughput relative to expected device or platform capabilities.
Cause
Modern PERC RAID and HBA controllers present attached storage devices to the OS through a SCSI device model, even when the underlying media is NVMe. Because these devices appear as SCSI SAS targets, most Linux distributions automatically apply legacy block‑I/O scheduling policies optimized for rotational hard drives. When SSD or NVMe devices are forced through these HDD‑oriented schedulers, the result can be reduced throughput and higher latency compared to their native performance.
Relevant Controller Models
- PERC: H740P, H840, H745, H345
- PERC: H750, H755, H350, H355
- PERC: H965, H365
- PERC: H975
- HBA345
- HBA355
- HBA465
Resolution
Refer to your Operating System storage optimization guide. Linux OS typically sets the scheduler for Native NVMe configurations to "none."
Red Hat Enterprise Linux 8 and 9 "Setting the disk scheduler" guides:
- Setting the disk scheduler v8 (External Link)
- Setting the disk scheduler v9 (External Link)
SLES 15-SP6 "Tuning I/O performance" guide:
- Tuning I/O performance (External Link)
For SSD and NVMe attached PERC and HBA configurations, changing the block scheduler to "none" may show improved performance.
To check the current scheduler:
As superuser, run cat /sys/block/{SD}/queue/scheduler where {SD} is the device block entry under /dev (example sda)
Screenshot showing a scheduler set to mq-deadline in Red Hat Enterprise Linux 9 for sda

To check the current scheduler:
As superuser, run, echo "none" > /sys/block/{SD}/queue/scheduler where {SD} is the device block entry under /dev (example sda)
Screenshot showing the scheduler being updated to "none" for sda

/dev block device name changes. A UDEV rule can be added for the device WWID to persistently change the scheduler to "none." Refer to your OS user guide for instructions on creating UDEV rules or similar mechanisms for setting block device parameters.
Additional OS settings tweaks and power profiles changes may be required to achieve maximum controller and drive performance. Refer to any OS performance tuning and BIOS power profile documentation.