Análisis comparativo de volúmenes de EBS - Amazon EBS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Análisis comparativo de volúmenes de EBS

Puede probar el rendimiento de los volúmenes de Amazon EBS simulando cargas de trabajo de E/S. El proceso es el siguiente:

  1. Lance una instancia optimizada para EBS.

  2. Cree volúmenes nuevos de EBS

  3. Adjunte los volúmenes a la instancia optimizada para EBS.

  4. Configure y monte el dispositivo de bloques.

  5. Instale una herramienta para el análisis comparativo del rendimiento de E/S.

  6. Haga el análisis del rendimiento de E/S de los volúmenes.

  7. Elimine los volúmenes y termine la instancia para dejar de incurrir en gastos.

importante

Algunos de los procedimientos darán como resultado la destrucción de los datos contenidos en los volúmenes de EBS que analice. Los procedimientos de análisis comparativos son para utilizarse en volúmenes creados especialmente con fines de pruebas, no de producción.

Configurar la instancia

Para lograr el rendimiento óptimo con los volúmenes de EBS, recomendamos que use una instancia optimizada para EBS. Las instancias optimizadas para EBS proporcionan rendimiento dedicado entre Amazon EC2 y Amazon EBS con la instancia. Las instancias optimizadas para EBS ofrecen un ancho de banda dedicado entre Amazon EC2 y Amazon EBS, con especificaciones en función del tipo de instancia.

Para crear una instancia optimizada para EBS, elija Lanzar como instancia optimizada para EBS cuando lance la instancia con la consola de Amazon EC2 o especifique --ebs-optimized cuando utilice la línea de comandos. Asegúrese de que selecciona un tipo de instancia que admita esta opción.

Configurar volúmenes Provisioned IOPS SSD o SSD de uso general

Para crear volúmenes de SSD de IOPS provisionadas (io1 e io2) o de SSD de uso general (gp2 y gp3) con la consola de Amazon EC2, en Volume Type (Tipo de volumen), elija Provisioned IOPS SSD (io1) (SSD de IOPS provisionadas [io1]), Provisioned IOPS SSD (io2) (SSD de IOPS provisionadas [io2]), General Purpose SSD (gp2) (SSD de uso general [gp2]) o General Purpose SSD (gp3) (SSD de uso general [gp3]). En la línea de comandos, especifique io1io2, gp2 o gp3 para el parámetro --volume-type. Para los volúmenes io1, io2 y gp3, especifique el número de operaciones de E/S por segundo (IOPS) para el parámetro --iops. Para obtener más información, consulte Tipos de volúmenes de Amazon EBS y Creación de un volumen de Amazon EBS..

(Solamente instancias de Linux) Para las pruebas de ejemplo, recomendamos que cree una matriz de RAID 0 con 6 volúmenes, que ofrece un elevado nivel de rendimiento. Como se le cobra por la cantidad de gigabytes provisionados (y el número de IOPS provisionadas para los volúmenes de io1, io2 y gp3), en lugar de por el número de volúmenes, no hay cargo adicional por crear varios volúmenes más pequeños y utilizarlos para crear un conjunto seccionado (stripe set). Si utiliza Oracle Orion para el análisis comparativo de los volúmenes, puede simular el seccionado (striping) del mismo modo que Oracle ASM, de manera que recomendamos que deje que lo haga Orion. Si usa otra herramienta para el análisis comparativo, tendrá que encargarse de seccionar usted mismo los volúmenes.

Para obtener más información acerca de cómo crear una matriz de RAID 0, consulte Creación de una matriz de RAID 0.

Configure volúmenes de HDD con rendimiento optimizado (st1) o volúmenes de HDD en frío (sc1)

Para crear un volumen st1, elija Throughput Optimized HDD (HDD de rendimiento optimizado) cuando lo cree con la consola de Amazon EC2, o especifique --type st1 si utiliza la línea de comandos. Para crear un volumen sc1, elija Cold HDD (HDD en frío) cuando lo cree con la consola de Amazon EC2, o especifique --type sc1 si utiliza la línea de comandos. Para obtener más información acerca de la creación de volúmenes de EBS, consulte Creación de un volumen de Amazon EBS.. Para obtener información acerca de cómo adjuntar estos volúmenes a la instancia, consulte Adjunte un volumen de Amazon EBS a una instancia..

(Solo instancias de Linux) AWS proporciona una plantilla JSON para su uso AWS CloudFormation que simplifica este procedimiento de configuración. Acceda a la plantilla y guárdela como un archivo JSON. AWS CloudFormation le permite configurar sus propias claves SSH y ofrece una forma más sencilla de configurar un entorno de pruebas de rendimiento para evaluar los st1 volúmenes. La plantilla crea una instancia de la generación actual y un volumen st1 con 2 TiB, y adjunta el volumen a la instancia en /dev/xvdf.

(Solamente instancias de Linux) Creación de un volumen HDD con la plantilla
  1. Abra la AWS CloudFormation consola en https://console.aws.amazon.com/cloudformation.

  2. Elija Create Stack.

  3. Elija Upload a Template to Amazon S3 (Cargar una plantilla en Amazon S3) y seleccione la plantilla JSON que ha obtenido previamente.

  4. Llame a la pila con un nombre como “ebs-perf-testing” y seleccione un tipo de instancia (la predeterminada es r3.8xlarge) y la clave SSH.

  5. Elija Next (Siguiente) dos veces y, después, elija Create Stack (Crear pila).

  6. Cuando el estado de la nueva pila cambie de CREATE_IN_PROGRESS (CREACIÓN EN PROCESO) a COMPLETE (COMPLETA), elija Outputs (Resultados) para ver la entrada DNS de pública de la nueva instancia, que tendrá adjunto un volumen st1 de 2 TiB.

  7. Conéctese mediante SSH a la nueva pila como el usuario ec2-user, con el nombre de host que ha obtenido de la entrada DNS en el paso anterior.

  8. Continúe en Instalar herramientas para el análisis comparativo.

Instalar herramientas para el análisis comparativo

En la siguiente tabla se enumeran las herramientas que puede usar para el análisis comparativo del rendimiento de los volúmenes de EBS.

Herramienta Descripción

fio

Para el análisis comparativo del rendimiento de E/S. (Observe que fio tiene una dependencia de libaio-devel.)

Para instalar fio en Amazon Linux, ejecute el siguiente comando:

[ec2-user ~]$ sudo yum install -y fio

Para instalar fio en Ubuntu, ejecute el siguiente comando:

sudo apt-get install -y fio

Oracle Orion Calibration Tool

Para calibrar el rendimiento de E/S de los sistemas de almacenamiento que se usan con las bases de datos de Oracle.

Herramienta Descripción
DiskSpd

DiskSpd es una herramienta de rendimiento de almacenamiento de los equipos de ingeniería de infraestructura de Windows, Windows Server y Cloud Server de Microsoft. Puede descargarla en https://github.com/Microsoft/diskspd/releases.

Después de descargar el archivo ejecutable diskspd.exe, abra un símbolo del sistema con derechos administrativos (seleccionando "Ejecutar como administrador") y, a continuación, vaya al directorio donde copió el archivo diskspd.exe.

Copie el archivo ejecutable diskspd.exe que desee de la carpeta de ejecutables correspondiente (amd64fre, armfre o x86fre) a una ruta corta y sencilla como C:\DiskSpd. En la mayoría de los casos, querrá la versión de 64 bits DiskSpd de la amd64fre carpeta.

El código fuente DiskSpd está alojado GitHub en: https://github.com/Microsoft/diskspd.

CrystalDiskMark

CrystalDiskMark es un sencillo software de referencia de discos. Puede descargarlo en https://crystalmark.info/en/software/crystaldiskmark/.

Estas herramientas admiten una amplia gama de parámetros de prueba. Es conveniente que use comandos que se aproximen a las cargas de trabajo que admitirán los volúmenes. Los comandos que se ofrecen a continuación tienen por finalidad servir de ejemplo para ayudarle a comenzar.

Elegir la longitud de cola del volumen

Elija la mejor longitud de cola en función de la carga de trabajo y el tipo de volumen.

Longitud de las colas en los volúmenes con respaldo de SSD

Para determinar la longitud óptima de cola para la carga de trabajo en volúmenes respaldados por SSD, recomendamos una longitud de cola de 1 por cada 1000 IOPS disponibles (base de referencia para los volúmenes SSD de uso general y la cantidad provisionada para los volúmenes Provisioned IOPS SSD). Después, puede monitorizar el rendimiento de la aplicación y ajustar ese valor según las necesidades de la aplicación.

Aumentar la longitud de cola tiene ventajas hasta que alcanza las IOPS aprovisionadas, el rendimiento o el valor de longitud de cola del sistema óptimo, que está establecido en 32. Por ejemplo, un volumen con 3,000 IOPS aprovisionadas debería tener una longitud de cola de 3. Experimente con diversos ajustes de estos valores, mayores o menores, para ver cuál responde mejor a la aplicación.

Longitud de las colas en los volúmenes con respaldo de HDD

Para determinar la longitud de cola óptima de la carga de trabajo en volúmenes con respaldo en HDD, recomendamos que sea al menos de 4 cuando trabaje con E/S secuenciales de 1 MiB. Después, puede monitorizar el rendimiento de la aplicación y ajustar ese valor según las necesidades de la aplicación. Por ejemplo, un volumen st1 con 2 TiB con rendimiento en ráfagas de 500 MiB/s e IOPS de 500 debería tener una longitud de cola de 4, 8 o 16 trabajando con E/S secuenciales de 1024 KiB, 512 KiB o 256 KiB respectivamente. Experimente con varios ajustes de estos valores, mayores o menores, para ver cuál responde mejor a la aplicación.

Deshabilitar los estados C

Antes de ejecutar los análisis comparativos, debe deshabilitar los estados C del procesador. Los núcleos que estén temporalmente inactivos en una CPU compatible pueden entrar en un estado C para ahorrar energía. Cuando se le solicita al núcleo que reanude el procesamiento, transcurre un determinado periodo de tiempo hasta que vuelve a estar totalmente operativo. Esta latencia puede interferir con las rutinas de análisis comparativos del procesador. Para obtener más información sobre los estados C y los tipos de instancias EC2 que los admiten, consulte Control de los estados del procesador de la instancia EC2.

Puede deshabilitar los estados C en Amazon Linux, RHEL y CentOS de la manera siguiente:

  1. Obtenga el número de estados C.

    $ C:\> cpupower idle-info | grep "Number of idle states:"
  2. Deshabilite los estados C desde c1 a cN. Lo ideal es que los núcleos se encuentren en el estado c0.

    $ C:\> for i in `seq 1 $((N-1))`; do cpupower idle-set -d $i; done

Puede deshabilitar los estados C en Windows de la siguiente manera:

  1. Entra PowerShell, obtén el esquema de potencia activa actual.

    $current_scheme = powercfg /getactivescheme
  2. Obtenga la GUID del esquema de alimentación.

    (Get-WmiObject -class Win32_PowerPlan -Namespace "root\cimv2\power" -Filter "ElementName='High performance'").InstanceID
  3. Obtenga la GUID de la configuración de alimentación.

    (Get-WmiObject -class Win32_PowerSetting -Namespace "root\cimv2\power" -Filter "ElementName='Processor idle disable'").InstanceID
  4. Obtenga la GUID del subgrupo de configuración de alimentación.

    (Get-WmiObject -class Win32_PowerSettingSubgroup -Namespace "root\cimv2\power" -Filter "ElementName='Processor power management'").InstanceID
  5. Deshabilite los estados C estableciendo el valor del índice en 1. Un valor de 0 indica que los estados C están deshabilitados.

    powercfg /setacvalueindex <power_scheme_guid> <power_setting_subgroup_guid> <power_setting_guid> 1
  6. Establezca el esquema activo para asegurarse de que se han guardado los ajustes.

    powercfg /setactive <power_scheme_guid>

Efectuar el punto de referencia

Los procedimientos siguientes describen los comandos de análisis comparativo para diversos tipos de volúmenes de EBS.

Ejecute los comandos siguientes en una instancia optimizada para EBS con volúmenes de EBS adjuntos. Si los volúmenes de EBS se crearon a partir de instantáneas, asegúrese de inicializarlos antes de marcar un punto de referencia. Para obtener más información, consulte Inicializar de volúmenes de Amazon EBS.

Cuando termine de probar los volúmenes, consulte los temas siguientes para llevar a cabo la limpieza: Eliminar un volumen Amazon EBS y Terminar la instancia.

Volúmenes de referencia Provisioned IOPS SSD y SSD de uso general

Ejecute fio en la matriz RAID 0 que creó.

El comando siguiente lleva a cabo operaciones de escritura aleatorias de 16 KB.

[ec2-user ~]$ sudo fio --directory=/mnt/p_iops_vol0 --ioengine=psync --name fio_test_file --direct=1 --rw=randwrite --bs=16k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting --norandommap

El comando siguiente lleva a cabo operaciones de lectura aleatorias de 16 KB.

[ec2-user ~]$ sudo fio --directory=/mnt/p_iops_vol0 --name fio_test_file --direct=1 --rw=randread --bs=16k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting --norandommap

Para obtener más información acerca de la interpretación de los resultados, consulte este tutorial: Inspecting disk IO performance with fio.

Ejecute DiskSpd en el volumen que creó.

El siguiente comando ejecutará una prueba de E/S aleatoria de 30 segundos utilizando un archivo de prueba de 20 GB guardado en la unidad C:, con una proporción de escritura del 25 % y de lectura del 75 %, y un tamaño de bloque de 8 K. Utilizará ocho subprocesos de trabajo, cada uno con cuatro operaciones de E/S importantes y un valor de entropía de escritura de 1 GB. Los resultados de la prueba se guardarán en un archivo de texto llamado DiskSpeedResults.txt. Estos parámetros simulan una carga de trabajo OLTP de SQL Server.

diskspd -b8K -d30 -o4 -t8 -h -r -w25 -L -Z1G -c20G C:\iotest.dat > DiskSpeedResults.txt

Para obtener más información acerca de la interpretación de los resultados, consulte este tutorial: Inspecting disk IO performance with DiskSPd.

Análisis comparativo de los volúmenes st1 y sc1 (instancias de Linux)

Ejecute fio en el volumen st1 o sc1.

nota

Antes de ejecutar estas pruebas, establezca la E/S de búfer de la instancia como se describe en Aumento del valor de read-ahead para cargas de trabajo de lectura intensiva y de alto rendimiento en st1 y sc1 (solamente instancias de Linux).

El comando siguiente lleva a cabo operaciones de lectura secuenciales de 1 MiB en un dispositivo de bloques st1 asociado (por ejemplo, /dev/xvdf):

[ec2-user ~]$ sudo fio --filename=/dev/<device> --direct=1 --rw=read --randrepeat=0 --ioengine=libaio --bs=1024k --iodepth=8 --time_based=1 --runtime=180 --name=fio_direct_read_test

El comando siguiente lleva a cabo operaciones de escritura secuenciales de 1 MiB en un dispositivo de bloques de st1 adjunto:

[ec2-user ~]$ sudo fio --filename=/dev/<device> --direct=1 --rw=write --randrepeat=0 --ioengine=libaio --bs=1024k --iodepth=8 --time_based=1 --runtime=180 --name=fio_direct_write_test

Algunas cargas de trabajo hacen operaciones de lectura y operaciones de escritura secuenciales en diferentes partes del dispositivo de bloques. Para el análisis de tales cargas de trabajo, recomendamos utilizar trabajos fio separados y simultáneos para lectura y escritura, y usar la opción fio offset_increment para llegar a distintas ubicaciones del dispositivo de bloques para cada trabajo.

La ejecución de esta carga de trabajo es un poco más complicada que la de una carga de lectura secuencial o una carga de escritura secuencial. Utilice un editor de texto para crear un archivo de trabajo fio, llamado fio_rw_mix.cfg en este ejemplo, que contiene lo siguiente:

[global] clocksource=clock_gettime randrepeat=0 runtime=180 [sequential-write] bs=1M ioengine=libaio direct=1 iodepth=8 filename=/dev/<device> do_verify=0 rw=write rwmixread=0 rwmixwrite=100 [sequential-read] bs=1M ioengine=libaio direct=1 iodepth=8 filename=/dev/<device> do_verify=0 rw=read rwmixread=100 rwmixwrite=0 offset=100g

A continuación, ejecute el siguiente comando:

[ec2-user ~]$ sudo fio fio_rw_mix.cfg

Para obtener más información acerca de la interpretación de los resultados, consulte este tutorial: Inspecting disk I/O performance with fio.

Varios trabajos fio para E/S directa, incluso utilizando operaciones de lectura o escritura secuenciales, pueden dar como resultado un rendimiento menor del esperado con los volúmenes st1 y sc1. Recomendamos que use un trabajo de E/S directo y el parámetro iodepth para controlar el número de operaciones de E/S simultáneas.