PowerEdge: Problemi di prestazioni sugli host Linux quando i controller PERC o HBA utilizzano NVMe o SSD
Riepilogo: L'host Linux segnala prestazioni di storage ridotte quando si utilizzano controller PERC o HBA con dispositivi SSD o NVMe collegati.
Sintomi
I sistemi che eseguono Linux mostrano prestazioni inferiori al previsto sulle unità SSD o NVMe collegate tramite controller PERC o HBA. I sintomi includono IOPS ridotti, latenza elevata o throughput non ottimale rispetto alle funzionalità previste del dispositivo o della piattaforma.
Causa
I moderni controller PERC RAID e HBA presentano dispositivi di storage collegati al sistema operativo tramite un modello di dispositivo SCSI, anche quando il supporto sottostante è NVMe. Poiché questi dispositivi vengono visualizzati come destinazioni SAS SCSI, la maggior parte delle distribuzioni Linux applica automaticamente policy di pianificazione I/O a blocchi legacy ottimizzate per i dischi rigidi a rotazione. Quando i dispositivi SSD o NVMe vengono forzati attraverso questi scheduler orientati all'HDD, il risultato può essere una riduzione del throughput e una latenza più elevata rispetto alle prestazioni native.
Modelli di controller rilevanti
- PERC: H740P, H840, H745, H345
- PERC: H750, H755, H350, H355
- PERC: H965, H365
- PERC: H975
- HBA345
- HBA355
- HBA465
Risoluzione
Fare riferimento alla guida all'ottimizzazione dello storage del sistema operativo in uso. Il sistema operativo Linux in genere imposta l'utilità di pianificazione per le configurazioni NVMe native su "none".
Guide "Impostazione dell'utilità di pianificazione del disco" per Red Hat Enterprise Linux 8 e 9:
- Impostazione dell'utilità di pianificazione del disco v8(Link esterno)
- Impostazione dell'utilità di pianificazione del disco v9(Link esterno)
Guida SLES 15-SP6 "Tuning I/O performance":
- Ottimizzazione delle prestazioni I/O(Link esterno)
Per le configurazioni PERC e HBA collegate a SSD e NVMe, la modifica dell'utilità di pianificazione dei blocchi su "none" potrebbe mostrare prestazioni migliorate.
Per controllare l'utilità di pianificazione corrente:
Come superuser, eseguire cat /sys/block/{SD}/queue/scheduler dove {SD} è la voce del blocco del dispositivo in /dev (esempio sda)
Schermata che mostra un'utilità di pianificazione impostata su mq-deadline in Red Hat Enterprise Linux 9 per sda

Impostare l'utilità di pianificazione su none:
Come superuser, eseguire, echo "none" > /sys/block/{SD}/queue/scheduler dove {SD} è la voce del blocco del dispositivo in /dev (esempio sda)
Screenshot che mostra l'aggiornamento dell'utilità di pianificazione a "none" per sda

/dev Blocca modifiche al nome del dispositivo. A UDEV è possibile aggiungere una regola affinché il WWID del dispositivo modifichi in modo persistente l'utilità di pianificazione su "none". Fare riferimento alla guida utente del sistema operativo per istruzioni sulla creazione di UDEV meccanismi analoghi per l'impostazione dei parametri del dispositivo a blocchi.
Per ottenere le massime prestazioni del controller e dell'unità, potrebbero essere necessarie ulteriori modifiche alle impostazioni del sistema operativo e ai profili di alimentazione. Fare riferimento alla documentazione relativa all'ottimizzazione delle prestazioni del sistema operativo e al profilo di alimentazione del BIOS.