PowerEdge:PERC 或 HBA 控制器使用 NVMe 或 SSD 时 Linux 主机上的性能问题
Summary: 将 PERC 或 HBA 控制器与连接的 SSD 或 NVMe 设备配合使用时,Linux 主机报告存储性能降低。
Symptoms
运行 Linux 的系统在通过 PERC 或 HBA 控制器连接的 SSD 或 NVMe 驱动器上表现出低于预期的性能。症状包括 IOPS 降低、延迟增加或相对于预期设备或平台功能的吞吐量欠佳。
Cause
现代 PERC RAID 和 HBA 控制器通过 SCSI 设备型号将连接的存储设备呈现给操作系统,即使底层介质是 NVMe 也是如此。由于这些设备显示为 SCSI SAS 目标,因此大多数 Linux 发行版会自动应用针对旋转硬盘优化的传统数据块 I/O 调度策略。当 SSD 或 NVMe 设备被迫通过这些面向 HDD 的调度程序时,其结果是,与其本机性能相比,吞吐量可能会降低,延迟可能会增加。
相关控制器型号
- Perc:H740P、H840、H745、H345
- Perc:H750、H755、H350、H355
- Perc:H965、H365
- Perc:H975型
- HBA345
- HBA355
- HBA465
Resolution
请参阅您的操作系统存储优化指南。Linux OS 通常会将本机 NVMe 配置的调度程序设置为“none”。
Red Hat Enterprise Linux 8 和 9“设置磁盘调度程序”指南:
- 设置磁盘调度程序 v8(外部链接)
- 设置磁盘调度程序 v9(外部链接)
SLES 15-SP6“调整 I/O 性能”指南:
- 调整 I/O 性能(外部链接)
对于 SSD 和 NVMe 连接的 PERC 和 HBA 配置,将数据块调度程序更改为“无”可能会提高性能。
要检查当前调度程序,请执行以下操作:
以超级用户身份运行 cat /sys/block/{SD}/queue/scheduler 其中 {SD} 是 /dev (示例 sda)
显示调度程序设置为 mq-deadline 在 Red Hat Enterprise Linux 9 中适用于 sda

将计划程序设置为无:
以超级用户身份运行, echo "none" > /sys/block/{SD}/queue/scheduler 其中 {SD} 是 /dev (示例 sda)
显示计划程序更新为“无”的屏幕截图 sda

/dev 数据块设备名称更改。A UDEV 可以为设备 WWID 添加规则,以将调度程序永久更改为“none”。有关创建 UDEV 用于设置块设备参数的规则或类似机制。
可能需要进行额外的操作系统设置调整和电源配置文件更改,以实现最高的控制器和驱动器性能。请参阅任何操作系统性能调整和 BIOS 电源配置文件文档。