¿Cómo puedo obtener el máximo rendimiento de E/S de mis volúmenes de EBS alojados en instancias basadas en Nitro de EC2?

4 minutos de lectura
0

Ejecuto mi carga de trabajo en instancias basadas en Nitro de Amazon Elastic Compute Cloud (Amazon EC2). Quiero asegurarme de obtener el máximo rendimiento de E/S de los volúmenes de Amazon Elastic Block Store (Amazon EBS) alojados en mis instancias.

Solución

1.     Compruebe si su volumen de EBS ha alcanzado su cuota de IOPS. La latencia aumenta cuando el volumen alcanza la cuota de IOPS. El aumento de la latencia repercute negativamente en el rendimiento. Para obtener más información, consulte How do I optimize the performance of my Amazon EBS Provisioned IOPS volumes?
Nota: Si utiliza un volumen de GP2, compruebe que el volumen no haya agotado los créditos de ráfaga.

2.    Para utilizar el almacenamiento de NVMe, debe ejecutar uno de los siguientes sistemas operativos:

  • Imagen de máquina de Amazon (AMI) de Amazon Linux o posterior y kernel 4.12 o posterior
  • CentOS - 7.0 o posterior y kernel 3.10 o posterior
  • Red Hat - 7.0 o posterior y kernel 3.10 o posterior
  • Ubuntu 19.10 con kernel 5.0 o Ubuntu 18.04.03 con kernel 5.0 y posterior
    Nota: En estas versiones de Ubuntu, las colas múltiples están activadas de forma predeterminada.
  • Ubuntu - 16.04 o 16.10
    Nota: En estas versiones de Ubuntu, los programadores de colas múltiples no se compilan en el kernel y los módulos deben cargarse por separado.
  • SUSE 12 o SUSE 11 con SP3 o posterior
  • Windows Server 2008 R2, 2012 R2 y 2016 o posterior

Como alternativa, asegúrese de que la versión del kernel sea compatible con un programador de E/S con capacidad para varias colas. Los programadores de E/S con varias colas más utilizados son kyber, mq-deadline y bfq (budget fair queue).

Nota: En el caso de sistemas operativos como Oracle, Linux o Debian, asegúrese de utilizar una versión del kernel que incluya o admita un programador de E/S con varias colas. CentOS y su versión de kernel admiten un programador de E/S con varias colas.

Si utiliza una versión anterior de estos sistemas operativos, es posible que observe una ligera disminución en el rendimiento de E/S debido a que las instancias basadas en Nitro tienen procesamiento de varias colas en el nivel de host. Esto crea una incompatibilidad entre el programador en el nivel del sistema operativo y el del host.

Las solicitudes de lectura o escritura de E/S enviadas al volumen de EBS recorren varias capas antes de que el volumen las intercepte. En el caso de las versiones anteriores de kernel con programadores sin varias colas en las instancias basadas en Nitro, a veces se observa un retraso en la capa del programador de E/S (I2D). El retraso se produce en las pruebas y los resultados de los análisis comparativos que utilizan las herramientas blktrace, blkparse y btt. Para obtener más información sobre estas herramientas, consulte blktrace, blkparse y btt en el sitio web die.net.

Para mejorar el rendimiento de E/S en las instancias basadas en Nitro, CentOS 7 cuenta con el mecanismo de colas de E/S en bloques de varias colas (blk-mq), que permite a los controladores de dispositivos asignar las solicitudes de E/S a varias colas de hardware o software. Para obtener el máximo rendimiento en los sistemas basados en Nitro, se recomienda utilizar un sistema operativo actualizado con el kernel más reciente.

Programador de E/S en 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: El archivo de configuración del kernel de CentOS 6 usa el programador noop y no devuelve blk_mq.

Programador de E/S en Redhat 9 y kernel 5.14 y posterior

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

Antes de elegir un programador, consulte información detallada sobre cada uno de ellos. Para obtener más información, consulte Programadores de disco disponibles en el sitio web de Red Hat.

Para actualizar el programador en el nivel del sistema operativo durante el tiempo de ejecución de la instancia de EC2, ejecute el siguiente comando:

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

Para cambiar el programador de E/S definitivamente, modifique la configuración de Grub y actualice el parámetro «elevator». En el caso de CentOS y Red Hat Enterprise Linux (RHEL), siga estos pasos:

1.    Ejecute el siguiente comando:

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

2.    Ejecute el siguiente comando:

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

El programador de E/S sigue configurado aunque se reinicie la instancia.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 6 meses