PowerEdge: Problemas de rendimiento en hosts Linux cuando las controladoras PERC o HBA utilizan NVMe o SSD
Resumen: El host Linux informa un rendimiento de almacenamiento reducido cuando se utilizan controladoras PERC o HBA con dispositivos SSD o NVMe conectados.
Síntomas
Los sistemas que ejecutan Linux presentan un rendimiento inferior al esperado en unidades SSD o NVMe conectadas a través de controladoras PERC o HBA. Los síntomas incluyen IOPS reducidas, latencia elevada o rendimiento subóptimo en relación con las funcionalidades esperadas del dispositivo o la plataforma.
Causa
Las controladoras PERC RAID y HBA modernas presentan dispositivos de almacenamiento conectados al sistema operativo a través de un modelo de dispositivo SCSI, incluso cuando el medio subyacente es NVMe. Debido a que estos dispositivos aparecen como destinos de SAS SCSI, la mayoría de las distribuciones de Linux aplican automáticamente políticas de programación de I/O de bloques heredadas optimizadas para discos duros rotativos. Cuando los dispositivos SSD o NVMe se fuerzan a través de estos programadores orientados a HDD, el resultado puede ser un rendimiento reducido y una mayor latencia en comparación con su rendimiento nativo.
Modelos de controladoras pertinentes
- PERC: H740P, H840, H745 y H345
- PERC: H750, H755, H350, H355
- PERC: H965 y H365
- PERC: H975
- HBA345
- HBA355
- HBA465
Resolución
Consulte la guía de optimización de almacenamiento del sistema operativo. Por lo general, el sistema operativo Linux establece el programador para las configuraciones de NVMe nativas en "ninguna".
Guías de "Configuración del programador de discos" de Red Hat Enterprise Linux 8 y 9:
- Configuración del programador de discos v8(enlace externo)
- Configuración del programador de discos v9(enlace externo)
Guía de SLES 15-SP6 "Ajuste del rendimiento de E/S":
- Ajuste del rendimiento de I/O(Enlace externo)
Para las configuraciones de HBA y PERC conectadas a NVMe y SSD, cambiar el programador de bloques a "ninguno" puede mostrar un rendimiento mejorado.
Para comprobar el programador actual:
Como superusuario, ejecute cat /sys/block/{SD}/queue/scheduler donde {SD} es la entrada de bloqueo de dispositivos en /dev (Ejemplo sda)
Captura de pantalla que muestra un programador configurado en mq-deadline en Red Hat Enterprise Linux 9 para sda

Configure el programador en ninguno:
Como superusuario, ejecute, echo "none" > /sys/block/{SD}/queue/scheduler donde {SD} es la entrada de bloqueo de dispositivos en /dev (Ejemplo sda)
Captura de pantalla que muestra el programador que se actualiza a "ninguno" para sda

/dev Bloquear cambios en el nombre del dispositivo. Aparece un banner de UDEV se puede agregar una regla para que el WWID del dispositivo cambie persistentemente el programador a "ninguno". Consulte la guía del usuario del SO para obtener instrucciones sobre cómo crear UDEV reglas o mecanismos similares para establecer los parámetros del dispositivo de bloques.
Es posible que se requieran ajustes adicionales del sistema operativo y cambios en los perfiles de alimentación para lograr el máximo rendimiento de la controladora y la unidad. Consulte cualquier documentación sobre el ajuste del rendimiento del SO y el perfil de alimentación del BIOS.