

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 Amazon EBS
<a name="benchmark_procedures"></a>

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

1. Lance una instancia optimizada para EBS.

1. Cree volúmenes nuevos de EBS

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

1. Configure y monte el dispositivo de bloques.

1. Instale una herramienta para comparar el rendimiento. I/O 

1. Evalúe el I/O rendimiento de sus volúmenes.

1. 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.

## Configuración de la instancia
<a name="set_up_instance"></a>

Para lograr el rendimiento óptimo con los volúmenes de EBS, recomendamos que use una instancia optimizada para EBS. 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.

### Configuración de volúmenes Provisioned IOPS SSD o SSD de uso general
<a name="setupPIOPS"></a>

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 `io1``io2`, `gp2` o `gp3` para el parámetro **--volume-type**. Para los `gp3` volúmenes y `io1``io2`, especifique el número de I/O operaciones por segundo (IOPS) del **--iops** parámetro. Para obtener más información, consulte [Tipos de volúmenes de Amazon EBS](ebs-volume-types.md) y [Creación de un volumen de Amazon EBS.](ebs-creating-volume.md).

(*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](raid-config.md#create-raid-array).

### Configure volúmenes de HDD con rendimiento optimizado (`st1`) o volúmenes de HDD en frío (`sc1`)
<a name="set_up_hdd"></a>

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.](ebs-creating-volume.md). Para obtener información acerca de cómo adjuntar estos volúmenes a la instancia, consulte [Asociación de un volumen de Amazon EC2 a una instancia.](ebs-attaching-volume.md).

(*Solo instancias de Linux*) AWS proporciona una plantilla JSON para su uso CloudFormation que simplifica este procedimiento de configuración. Acceda a la [plantilla](https://s3.amazonaws.com/cloudformation-examples/community/st1_cloudformation_template.json) y guárdela como un archivo JSON. 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. Abre la CloudFormation consola en [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Elija **Create Stack**.

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

1. Dale a tu pila un nombre como «ebs-perf-testing» y selecciona un tipo de instancia (el predeterminado es r3.8xlarge) y una clave SSH.

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

1. Cuando el estado de la nueva pila cambie de **CREATE\$1IN\$1PROGRESS** a **COMPLETE**, elija **Salidas** para ver la entrada DNS de pública de la nueva instancia, que tendrá adjunto un volumen `st1` de 2 TiB.

1. 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. 

1. Continúe en [Instalar herramientas para el análisis comparativo](#install_tools).

## Instalar herramientas para el análisis comparativo
<a name="install_tools"></a>

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

### Instancias de Linux
<a name="install_tools-linux"></a>


| Herramienta | Descripción | 
| --- | --- | 
|  fio  |  Para realizar una evaluación comparativa del rendimiento. I/O (Observe que **fio** tiene una dependencia de `libaio-devel`.) Para instalar **fio** en Amazon Linux, ejecute el siguiente comando: <pre>$ sudo yum install -y fio</pre> Para instalar **fio** en Ubuntu, ejecute el siguiente comando: <pre>sudo apt-get install -y fio</pre>  | 
|  [Oracle Orion Calibration Tool](https://docs.oracle.com/cd/E18283_01/server.112/e16638/iodesign.htm#BABFCFBC)  |  Para calibrar el I/O rendimiento de los sistemas de almacenamiento que se utilizarán con las bases de datos Oracle.  | 

### instancias de Windows
<a name="install_tools-windows"></a>


| Herramienta | Description (Descripción) | 
| --- | --- | 
| [DiskSpd](https://github.com/microsoft/diskspd/releases) | 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. Está disponible para su descarga en [https://github.com/Microsoft/diskspd/releases](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 gestionador") 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 de DiskSpd la carpeta. `amd64fre`  El código fuente DiskSpd está alojado GitHub en: [https://github.com/Microsoft/diskspd](https://github.com/Microsoft/diskspd). | 
|  CrystalDiskMark  | CrystalDiskMark es un sencillo software de referencia de discos. Está disponible para su descarga en [https://crystalmark. info/en/software/crystaldiskmark](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
<a name="UnderstandingQueueLength"></a>

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
<a name="SSD_queue"></a>

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
<a name="HDD_queue"></a>

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 `st1` volumen de 2 TiB con un rendimiento de ráfaga de 500 MiB/s e IOPS de 500 debería tener como objetivo una longitud de cola de 4, 8 o 16 KiB y, al mismo tiempo, funcionar de forma secuencial de 1024 KiB, 512 KiB o 256 KiB, respectivamente. I/Os Experimente con diversos ajustes de estos valores, mayores o menores, para ver cuál responde mejor a la aplicación.

## Deshabilitar los estados C
<a name="cstates"></a>

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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html).

### Instancias de Linux
<a name="cstates-linux"></a>

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

1. Obtenga el número de estados C.

   ```
   $ cpupower idle-info | grep "Number of idle states:"
   ```

1. Deshabilite los estados C desde c1 a cN. Lo ideal es que los núcleos se encuentren en el estado c0.

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

### instancias de Windows
<a name="cstates-windows"></a>

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

1. En PowerShell, obtenga el esquema de potencia activa actual.

   ```
   $current_scheme = powercfg /getactivescheme
   ```

1. Obtenga la GUID del esquema de alimentación.

   ```
   (Get-WmiObject -class Win32_PowerPlan -Namespace "root\cimv2\power" -Filter "ElementName='High performance'").InstanceID          
   ```

1. 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                  
   ```

1. 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
   ```

1. 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
   ```

1. Establezca el esquema activo para asegurarse de que se han guardado los ajustes.

   ```
   powercfg /setactive <power_scheme_guid>
   ```

## Efectuar el punto de referencia
<a name="perform_benchmarking"></a>

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 el volumen de forma manual después de crearlo](initalize-volume.md#ebs-initialize).

**sugerencia**  
Puede utilizar los histogramas de I/O latencia proporcionados por las estadísticas detalladas de rendimiento de EBS para comparar la distribución del I/O rendimiento en sus pruebas de evaluación comparativa. Para obtener más información, consulte [Estadísticas de rendimiento detalladas de Amazon EBS](nvme-detailed-performance-stats.md).

Cuando termine de probar los volúmenes, consulte los temas siguientes para llevar a cabo la limpieza: [Eliminar un volumen Amazon EBS](ebs-deleting-volume.md) y [Terminar la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html).

### Volúmenes de referencia Provisioned IOPS SSD y SSD de uso general
<a name="piops_benchmarking"></a>

#### Instancias de Linux
<a name="piops_benchmarking-linux"></a>

Ejecute **fio** en la matriz RAID 0 que creó.

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

```
$ 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.

```
$ 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](https://www.linux.com/training-tutorials/inspecting-disk-io-performance-fio/).

#### instancias de Windows
<a name="piops_benchmarking-windows"></a>

Ejecute **DiskSpd** en el volumen que creó.

El siguiente comando ejecutará una I/O prueba aleatoria de 30 segundos utilizando un archivo de prueba de 20 GB ubicado en la `C:` unidad, con una relació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 sobre la interpretación de los resultados, consulta este tutorial: [Inspeccionar el rendimiento de E/S del disco](https://sqlperformance.com/2015/08/io-subsystem/diskspd-test-storage) con Disk. SPd

### Análisis comparativo de los volúmenes `st1` y `sc1` (instancias de Linux)
<a name="hdd_benchmarking"></a>

Ejecute **fio** en el volumen `st1` o `sc1`.

**nota**  
Antes de ejecutar estas pruebas, configúrela I/O en búfer en la instancia tal y 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*)](ebs-performance.md#read_ahead) 

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

```
$ 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:

```
$ 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:

```
$ sudo fio fio_rw_mix.cfg
```

Para obtener más información sobre la interpretación de los resultados, consulta este tutorial: [Inspeccionar el I/O rendimiento del disco](https://www.linux.com/training-tutorials/inspecting-disk-io-performance-fio/) con 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`. Se recomienda utilizar un I/O trabajo directo y utilizar el `iodepth` parámetro para controlar el número de operaciones I/O simultáneas.