Come posso ottenere le massime prestazioni I/O dai miei volumi EBS ospitati su istanze EC2 basate su Nitro?

4 minuti di lettura
0

Eseguo il mio carico di lavoro su istanze Amazon Elastic Compute Cloud (Amazon EC2) basate su Nitro. Voglio assicurarmi di ottenere le massime prestazioni I/O dai volumi Amazon Elastic Block Store (Amazon EBS) ospitati sulle mie istanze.

Soluzione

1.     Verifica se il tuo volume EBS ha raggiunto la quota IOPS. La latenza può aumentare quando il volume raggiunge la quota IOPS, e l'aumento della latenza influisce sulle prestazioni. Per maggiori informazioni, consulta la sezione Come posso ottimizzare le prestazioni dei miei volumi Amazon EBS Provisioned IOPS?
Nota: se usi un volume GP2, controlla che il volume non abbia esaurito i crediti per il burst.

2.    Per utilizzare lo storage NVMe, è necessario eseguire uno di questi sistemi operativi (OS):

  • Amazon Linux Amazon Machine Image (AMI) o versione successiva e kernel 4.12 o versione successiva
  • CentOS - 7.0 o versione successiva e kernel 3.10 o versione successiva
  • Red Hat - 7.0 o versione successiva e kernel 3.10 o versione successiva
  • Ubuntu 19.10 con kernel 5.0 oppure Ubuntu 18.04.03 con kernel 5.0 e versione successiva
    Nota: per queste versioni di Ubuntu, la coda multipla è attivata come impostazione predefinita.
  • Ubuntu - 16.04 o 16.10
    Nota: per queste versioni di Ubuntu, i pianificatori a coda multipla non sono compilati dal kernel e richiedono il caricamento separato dei moduli
  • SUSE 12 o SUSE 11 con SP3 o versione successiva
  • Windows Server 2008 R2, 2012 R2 e 2016 o versione successiva

Oppure assicurati che la versione del kernel supporti un pianificatore I/O con funzionalità di coda multipla. I pianificatori I/O a coda multipla più comunemente usati sono kyber, mq-deadline e bfq (budget fair queue).

Nota: per sistemi operativi come Oracle, Linux o Debian, usa una versione del kernel che includa o supporti un pianificatore I/O a coda multipla. CentOS e la sua versione del kernel supportano un pianificatore I/O a coda multipla.

Se utilizzi una versione precedente di questi sistemi operativi, potresti notare un calo delle prestazioni I/O, perché le istanze basate su Nitro hanno un'elaborazione a coda multipla a livello di host. Ciò crea incompatibilità tra il pianificatore a livello di sistema operativo e host.

Prima che il volume intercetti le richieste di lettura o scrittura di I/O inviate al volume EBS, le richieste viaggiano attraverso diversi livelli. Per le versioni precedenti del kernel con pianificatori non a coda multipla su istanze basate su Nitro, a volte si verifica un ritardo nel livello del pianificatore I/O (I2D). Il ritardo si verifica nei test e nei risultati di benchmark che utilizzano gli strumenti blktrace, blkparse e btt. Per ulteriori informazioni su questi strumenti, consulta blktrace, blkparse e btt sul sito web vdie.net.

Per migliorare le prestazioni I/O sulle istanze basate su Nitro, CentOS 7 dispone del Multi-Queue Block I/O Queueing Mechanism (blk-mq), un meccanismo che consente ai driver di dispositivo di mappare le richieste di I/O su più code hardware o software. Per ottenere le massime prestazioni sui sistemi basati su Nitro, è consigliabile utilizzare un sistema operativo aggiornato con il kernel più recente.

Pianificatore I/O su CentOS 6

$cat /sys/block/xvdf/queue/scheduler noop anticipatory deadline \[cfq\]$cat config-2.6.32-754.30.2.el6.x86\_64 | grep -i blk\_mq

Nota: poiché il file di configurazione nel kernel CentOS 6 utilizza il pianificatore noop, non restituisce il risultato blk_mq.

Pianificatore I/O su Redhat 9 e Kernel 5.14 e versioni successive

cat /sys/block/<EBS device name>/queue/scheduler \[none\] mq-deadline kyber bfq

Prima di scegliere un pianificatore, esamina i dettagli di ciascuno di essi. Per ulteriori informazioni, consulta la sezione Pianificatori di disco disponibili sul sito Web di Red Hat.

Per aggiornare il pianificatore a livello di sistema operativo durante la fase di esecuzione dell'istanza EC2, esegui il comando seguente:

#sudo echo 'kyber'> /sys/block/<EBS device name>/queue/scheduler

Per modificare in modo permanente il pianificatore I/O, modifica la configurazione grub e aggiorna il parametro elevator. I seguenti passaggi sono indicati per CentOS e Red Hat Enterprise Linux (RHEL):

1.    Esegui il comando seguente:

#sudo vim /etc/default/grubGRUB\_CMDLINE\_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet elevator=kyber"

2.    Esegui il comando seguente:

#sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Se l'istanza viene riavviata, il pianificatore I/O rimane impostato.

AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa