PowerEdge. Проблемы производительности на хостах Linux, когда контроллеры PERC или HBA используют NVMe или SSD
Summary: Хост Linux сообщает о снижении производительности системы хранения данных при использовании контроллеров PERC или HBA с подключенными твердотельными накопителями или устройствами NVMe.
Symptoms
Системы под управлением Linux демонстрируют более низкую, чем ожидалось, производительность на твердотельных накопителях или накопителях NVMe, подключенных через контроллеры PERC или HBA. Симптомы включают снижение IOPS, повышенную задержку или неоптимальную пропускную способность по сравнению с ожидаемыми возможностями устройства или платформы.
Cause
Современные контроллеры PERC RAID и HBA представляют подключенные устройства хранения данных для ОС через модель устройств SCSI, даже если в качестве основного носителя используется NVMe. Поскольку эти устройства отображаются как целевые устройства SCSI SAS, большинство дистрибутивов Linux автоматически применяют устаревшие политики планирования блочных операций ввода-вывода, оптимизированные для вращающихся жестких дисков. Когда SSD-устройства или устройства NVMe принудительно проходят через эти планировщики, ориентированные на жесткие диски, это приводит к снижению пропускной способности и увеличению задержки по сравнению с их собственной производительностью.
Подходящие модели контроллеров
- PERC: H740P, H840, H745, H345
- PERC: H750, H755, H350, H355
- PERC: Н965, Н365
- PERC: Н975
- Адаптер HBA345
- Адаптер HBA355
- Адаптер HBA465
Resolution
См. руководство по оптимизации системы хранения данных для вашей операционной системы. ОС Linux обычно устанавливает планировщик для конфигураций со встроенным NVMe в значение «none».
Руководства по настройке планировщика дисков для Red Hat Enterprise Linux 8 и 9:
- Настройка планировщика дисков v8(внешняя ссылка)
- Настройка планировщика дисков v9(внешняя ссылка)
Руководство по SLES 15-SP6 «Настройка производительности ввода-вывода»:
- Настройка производительности ввода-вывода(внешняя ссылка)
Для конфигураций с твердотельными накопителями и подключенными к NVMe контроллерами PERC и HBA изменение значения планировщика блоков на «none» может привести к повышению производительности.
Чтобы проверить текущий планировщик, выполните следующие действия.
Как суперпользователь выполните cat /sys/block/{SD}/queue/scheduler где {SD} — запись блока устройства в /dev (пример sda)
Снимок экрана, показывающий планировщик, установленный в mq-deadline в Red Hat Enterprise Linux 9 для sda

Установите планировщик в значение none:
Как суперпользователь, выполните echo "none" > /sys/block/{SD}/queue/scheduler где {SD} — запись блока устройства в /dev (пример sda)
Снимок экрана, показывающий, что планировщик обновляется на «none» для sda

/dev Блокировка изменения имен устройств. A UDEV Можно добавить правило для WWID устройства, чтобы постоянно изменять планировщик на «none». Инструкции по созданию см. в руководстве пользователя ОС UDEV правила или аналогичные механизмы задания параметров блочных устройств.
Для достижения максимальной производительности контроллера и накопителя могут потребоваться дополнительные настройки ОС и изменения профилей питания. См. любую документацию по настройке производительности ОС и профилю энергопотребления BIOS.