PowerEdge:优化 Linux 中 PERC 控制器后面的 NVMe 驱动器的小型 I/O 性能

摘要: 在 Linux 中,在小型 I/O 工作负载测试期间,连接在 PowerEdge RAID 控制器 (PERC) 后面的 NVMe 驱动器的性能可能会低于预期。 发生这种情况是因为操作系统将这些驱动器标识为标准 SCSI 块设备 (/dev/sdX),而不是本机 NVMe 设备 (/dev/nvmeXnX)。此标识会导致应用次优默认 I/O 调度程序。

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

说明

根本原因

  • 本机 NVMe:直接连接的 NVMe 驱动器使用深层的硬件管理命令队列。Linux 将其调度程序默认为 none,以绕过操作系统级别的瓶颈。
NVMe mq-deadline
  • PERC 背后的 NVMe:当由 PERC 控制器管理时,驱动器显示为 SCSI 设备。大多数 Linux 分发版默认使用 SCSI 设备的调度程序 mq-deadline
  • 冲突:mq-deadline Scheduler 专为传统机械驱动器而设计,以优化寻道时间并最大限度地减少磁头移动。对于高速 NVMe 驱动器,此调度程序会增加不必要的延迟和 CPU 开销,从而限制总 IOPS。

验证和即时调整

计划程序应设置为 ,以实现小型 I/O 工作负载的最大 IOPS。

  • 检查当前调度程序:
  1. 以超级用户身份运行以下命令(将 sdX> 替换为<您的设备名称,例如 <sda>):
cat /sys/block/{sdX}/queue/scheduler
示例输出:(括号表示活动调度程序。)
NVMe 调度程序
  1. 使用以下命令将计划程序更改为(运行时),以立即应用更改:
echo "none" > /sys/block/{sdX}/queue/scheduler

确保持久性

上面的手动更改 不是永久性 的,会在重新启动后恢复。也 /dev/sdX 如果添加或移除驱动器,标识符可能会更改。要使此更改永久生效,建议根据设备的 WWID 创建 UDEV 规则
 

提醒:大型 I/O 性能也可能受到影响。对于 PERC 控制器后面的 NVMe 驱动器,建议将 Linux 队列计划程序设置为 none。

受影响的产品

PowerEdge R470, PowerEdge R570, PowerEdge R670, PowerEdge R6715, PowerEdge R6725, PowerEdge R770, PowerEdge R770AP, PowerEdge R7715, PowerEdge R7725, PowerEdge R7725xd
文章属性
文章编号: 000443257
文章类型: How To
上次修改时间: 09 7月 2026
版本:  3
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。