Rendimiento de los volúmenes de Amazon EBS en las instancias de Linux - Amazon Elastic Compute Cloud

Rendimiento de los volúmenes de Amazon EBS en las instancias de Linux

Existen varios factores que pueden afectar al rendimiento de Amazon EBS, como son la configuración de las instancias y los volúmenes, y las características de E/S. Los clientes que siguen las directrices incluidas en nuestras páginas de detalles sobre los productos Amazon EBS y Amazon EC2 obtienen, en general, un buen rendimiento desde el primer momento. No obstante, hay algunos casos en los que tal vez sea preciso hacer algunos ajustes para alcanzar el máximo de rendimiento en la plataforma. En este tema se tratan las prácticas recomendadas generales, así como los ajustes de rendimiento específicos para algunos casos de uso. Recomendamos que ajuste el rendimiento con información sobre la carga de trabajo, además de los análisis comparativos, para determinar la configuración óptima. Una vez que conoce los fundamentos del trabajo con los volúmenes de EBS, es buena idea examinar el rendimiento de E/S que precisa y las opciones a su alcance para aumentar el rendimiento de Amazon EBS para satisfacer esos requisitos.

Las actualizaciones de AWS en el rendimiento de los tipos de volúmenes de EBS pueden no surtir efecto de inmediato en los volúmenes existentes. Para ver el rendimiento total en un volumen antiguo, es necesario realizar en primer lugar una acción ModifyVolume en él. Para obtener más información, consulte Modificación del tamaño, las IOPS o el tipo de un volumen de EBS en Linux.

Consejos de rendimiento de Amazon EBS

Estas sugerencias constituyen las prácticas recomendadas para lograr el rendimiento óptimo de los volúmenes de EBS en diversos escenarios de uso.

Uso de instancias optimizadas para EBS

En las instancias que no admiten resultados optimizados para EBS, el tráfico de red puede competir con el tráfico entre la instancia y los volúmenes de EBS, mientras que en las instancias optimizadas para EBS, ambos tipos de tráfico se mantienen separados. Algunas configuraciones de instancias optimizadas para EBS incurren en costos extra (como C3, R3 y M3), si bien otras están siempre optimizadas para EBS sin costo extra (como M4, C4, C5 y D2). Para obtener más información, consulte Instancias optimizadas para Amazon EBS.

Entender cómo se calcula el rendimiento

Cuando mide el rendimiento de los volúmenes de EBS, es importante comprender las unidades de medida utilizadas y el modo en que se calcula el rendimiento. Para obtener más información, consulte Características de E/S y monitoreo.

Conocer la carga de trabajo

Hay una relación entre el rendimiento máximo de los volúmenes de EBS, el tamaño y el número de operaciones de E/S, y el tiempo que tarda cada acción en completarse. Cada uno de estos factores (rendimiento, E/S y latencia) afecta a los demás y algunas aplicaciones son más sensibles a uno u otro factor. Para obtener más información, consulte Análisis comparativo de volúmenes de EBS.

Conozca la penalización en el rendimiento cuando se inicializan volúmenes a partir de instantáneas

Cuando se tiene acceso por primera vez a cada bloque de datos de un volumen de EBS nuevo que se ha creado a partir de una instantánea, se produce un aumento significativo de la latencia. Puede evitar este efecto sobre el rendimiento si opta por una de las opciones siguientes:

  • Acceder a cada bloque antes de poner el volumen a producir. Este proceso se llama inicialización (antes se conocía como precalentamiento). Para obtener más información, consulte Inicializar de volúmenes de Amazon EBS.

  • Habilitar la restauración rápida de instantáneas en una instantánea para garantizar que los volúmenes de EBS creados desde la instantánea se inicialicen por completo durante la creación y proporcionen al instante todo su rendimiento aprovisionado. Para obtener más información, consulte Restauración rápida de instantáneas de Amazon EBS.

Factores que pueden degradar el rendimiento de las unidades de disco duro (HDD)

Cuando se crea una instantánea de un volumen de HDD de rendimiento optimizado (st1) o de un volumen de HDD en frío (sc1), el rendimiento puede caer hasta el valor de referencia del volumen mientras la instantánea está en curso. Este comportamiento es específico de estos tipos de volúmenes. Otros factores que pueden limitar el rendimiento son impulsar el rendimiento por encima de lo que la instancia admite, la penalización en el rendimiento que se produce cuando se inicializan volúmenes creados a partir de una instantánea y la cantidad excesiva de operaciones de E/S aleatorias y pequeñas en el volumen. Para obtener más información acerca del cálculo del rendimiento de los volúmenes HDD, consulte Tipos de volúmenes de Amazon EBS.

El rendimiento también puede verse afectado si la aplicación no envía suficientes solicitudes de E/S. Esto se puede monitorizar comprobando la longitud de la cola del volumen y el tamaño de E/S. La longitud de la cola es el número de solicitudes de E/S pendientes de la aplicación al volumen. Para lograr la máxima uniformidad, los volúmenes respaldados por HDD deben mantener una longitud de cola (redondeada al número entero más próximo) de 4 o más cuando efectúan E/S secuenciales de 1 MiB. Para obtener más información acerca de cómo asegurar el rendimiento uniforme de sus volúmenes, consulte Características de E/S y monitoreo.

Aumentar el valor de read-ahead para cargas de trabajo de lectura intensiva de alto rendimiento en st1 y sc1

Algunas cargas de trabajo son de lectura intensiva y tienen acceso al dispositivo de bloques a través de la caché de páginas del sistema operativo (por ejemplo, desde un sistema de archivos). En este caso, para alcanzar el rendimiento máximo, recomendamos configurar el valor read-ahead en 1 MiB. Esta es una configuración que se establece en cada dispositivo de bloques y que solo se debe aplicar a los volúmenes HDD.

Para examinar el valor actual de read-ahead en los dispositivos de bloques, utilice el comando siguiente:

[ec2-user ~]$ sudo blockdev --report /dev/<device>

La información sobre el dispositivo de bloques se devuelve con el formato siguiente:

RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 4096 8587820544 /dev/<device>

El dispositivo mostrado registra un valor read-ahead de 256 (el predeterminado). Multiplique este número por el tamaño del sector (512 bytes) para obtener el tamaño del búfer read-ahead, que en este caso es de 128 KiB. Para establecer el valor del búfer en 1 MiB, use el comando siguiente:

[ec2-user ~]$ sudo blockdev --setra 2048 /dev/<device>

Compruebe que el valor de read-ahead muestra ahora 2048 ejecutando de nuevo el primer comando.

Utilice este valor solo cuando la carga de trabajo conste de E/S grandes y secuenciales. Si consiste, principalmente, en operaciones de E/S pequeñas y aleatorias, este valor degradará el rendimiento. En general, si la carga de trabajo consta principalmente de operaciones de E/S pequeñas o aleatorias, debería considerar el uso de un volumen de SSD de uso general (gp2 y gp3) en lugar de un volumen st1 o sc1.

Utilizar un kernel de Linux moderno

Use un kernel de Linux moderno que admita descriptores indirectos. Cualquier kernel de Linux versión 3.8 y posteriores tiene esta compatibilidad, así como cualquier instancia EC2 de la generación actual. Si el tamaño de E/S está en 44 KiB o en un valor próximo, es posible que esté usando una instancia o un kernel que no admite descriptores indirectos. Para obtener más información sobre cómo obtener el tamaño medio de E/S a partir de las métricas de Amazon CloudWatch, consulte Características de E/S y monitoreo.

Para alcanzar el rendimiento máximo en los volúmenes st1 o sc1, recomendamos aplicar un valor de 256 al parámetro xen_blkfront.max (para las versiones del kernel de Linux inferiores a 4.6) o al parámetro xen_blkfront.max_indirect_segments (para las versiones del kernel de Linux 4.6 o superiores). El parámetro adecuado se puede establecer en la línea de comandos del sistema operativo.

Por ejemplo, en una AMI de Amazon Linux con un kernel anterior, puede añadirlo al final de la línea del kernel en la configuración de GRUB que se encuentra en /boot/grub/menu.lst:

kernel /boot/vmlinuz-4.4.5-15.26.amzn1.x86_64 root=LABEL=/ console=ttyS0 xen_blkfront.max=256

Con un kernel posterior, el comando debería ser similar al siguiente:

kernel /boot/vmlinuz-4.9.20-11.31.amzn1.x86_64 root=LABEL=/ console=tty1 console=ttyS0 xen_blkfront.max_indirect_segments=256

Arranque la instancia de nuevo para que este valor surta efecto.

Para obtener más información, consulte Configuring GRUB. Otras distribuciones Linux, en especial las que no usan un cargador de arranque GRUB, pueden requerir un enfoque diferente para ajustar los parámetros del kernel.

Para obtener más información sobre las características de E/S de EBS, consulte la presentación de re:Invent Amazon EBS: Designing for Performance sobre este tema.

Utilizar RAID 0 para maximizar la utilización de los recursos de instancia

Algunos tipos de instancias pueden obtener más rendimiento de E/S de lo que es posible aprovisionar para un volumen de EBS único. Puede unir varios volúmenes en una configuración RAID 0 y utilizar el ancho de banda disponible para estas instancias. Para obtener más información, consulte Configuración RAID en Linux.

Seguimiento del rendimiento con Amazon CloudWatch

Amazon Web Services ofrece métricas de rendimiento para Amazon EBS que puede analizar y ver con Amazon CloudWatch, así como comprobaciones de estado que puede emplear para monitorizar el estado de los volúmenes. Para obtener más información, consulte Monitorear el estado de los volúmenes.