PowerEdge: Problemas de desempenho em hosts Linux quando controladores PERC ou HBA usam NVMe ou SSD
Summary: O host Linux relata desempenho de armazenamento reduzido ao usar controladores PERC ou HBA com dispositivos SSD ou NVMe conectados.
Symptoms
Os sistemas que executam Linux exibem desempenho abaixo do esperado em unidades SSD ou NVMe conectadas por meio de controladores PERC ou HBA. Os sintomas incluem IOPS reduzido, latência elevada ou throughput abaixo do ideal em relação aos recursos esperados do dispositivo ou da plataforma.
Cause
Os controladores RAID e HBA PERC modernos apresentam dispositivos de armazenamento conectados ao sistema operacional por meio de um modelo de dispositivo SCSI, mesmo quando a mídia subjacente é NVMe. Como esses dispositivos aparecem como destinos SAS SCSI, a maioria das distribuições Linux aplica automaticamente políticas de programação de E/S de bloco legadas otimizadas para discos rígidos rotativos. Quando os dispositivos SSD ou NVMe são forçados a passar por esses agendadores orientados a HDD, o resultado pode ser throughput reduzido e latência mais alta em comparação com seu desempenho nativo.
Modelos de controlador relevantes
- PERC: H740P, H840, H745, H345
- PERC: H750, H755, H350 e H355
- PERC: H965 e H365
- PERC: H975
- HBA345
- HBA355
- HBA465
Resolution
Consulte o guia de otimização de armazenamento do sistema operacional. O sistema operacional Linux normalmente define o agendador para configurações nativas de NVMe como "nenhum".
Guias do Red Hat Enterprise Linux 8 e 9 "Definindo o agendador de discos":
- Configurando o agendador de disco v8(link externo)
- Configurando o agendador de disco v9(link externo)
Guia SLES 15-SP6 "Ajustando o desempenho de E/S":
- Ajustando o desempenho de E/S(link externo)
Para configurações de PERC e HBA conectadas a SSD e NVMe, alterar o agendador de blocos para "nenhum" pode mostrar um desempenho aprimorado.
Para verificar o agendador atual:
Como superusuário, executar cat /sys/block/{SD}/queue/scheduler em que {SD} é a entrada do bloco de dispositivo em /dev (exemplo sda)
Captura de tela mostrando um agendador definido como mq-deadline no Red Hat Enterprise Linux 9 para sda

Defina o agendador como nenhum:
Como superusuário, execute, echo "none" > /sys/block/{SD}/queue/scheduler em que {SD} é a entrada do bloco de dispositivo em /dev (exemplo sda)
Captura de tela mostrando o agendador sendo atualizado para "nenhum" para sda

/dev Bloquear alterações no nome do dispositivo. A UDEV é possível adicionar a regra para que o WWID do dispositivo altere persistentemente o agendador para "nenhum". Consulte o guia do usuário do sistema operacional para obter instruções sobre como criar UDEV regras ou mecanismos semelhantes para definir parâmetros de dispositivo de bloco.
Ajustes adicionais nas configurações do sistema operacional e alterações nos perfis de energia podem ser necessários para alcançar o desempenho máximo da controladora e da unidade. Consulte qualquer documentação sobre o ajuste de desempenho do sistema operacional e o perfil de energia do BIOS.