

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Performance de volumes do Amazon EBS
<a name="ebs-performance"></a>

Vários fatores, incluindo I/O características e a configuração de suas instâncias e volumes, podem afetar o desempenho do Amazon EBS. Ao seguir as orientações em nossas páginas de detalhes do produto do Amazon EBS e do Amazon EC2, você muito provavelmente conseguirá atingir uma boa performance. No entanto, há alguns casos em que talvez seja necessário fazer alguns ajustes para atingir a performance máxima. Recomendamos que você ajuste a performance com informações de sua workload real, além da comparação, para determinar sua configuração ideal. Depois de aprender o básico sobre como trabalhar com volumes do EBS, é uma boa ideia analisar o I/O desempenho de que você precisa e suas opções para aumentar o desempenho do Amazon EBS para atender a esses requisitos.

AWS as atualizações no desempenho dos tipos de volume do EBS podem não entrar em vigor imediatamente em seus volumes existentes. Para ver a performance completa em um volume anterior, primeiro é possível precisar realizar uma ação `ModifyVolume` nele. Para obter mais informações, consulte [Modificar um volume do Amazon EBS usando operações de volumes elásticos](ebs-modify-volume.md).

**Topics**
+ [Dicas de performance do Amazon EBS](#tips)
+ [Otimização para o Amazon EBS](ebs-optimization.md)
+ [Inicializar volumes de Amazon EBS](initalize-volume.md)
+ [Ponderação configurável de largura de banda da instância](instance-bandwidth-configuration.md)
+ [I/O Características e monitoramento do Amazon EBS](ebs-io-characteristics.md)
+ [Configuração do Amazon EBS e RAID](raid-config.md)
+ [Avaliar a performance de volumes do Amazon EBS](benchmark_procedures.md)

## Dicas de performance do Amazon EBS
<a name="tips"></a>

Essas dicas representam as melhores práticas para obter a performance ideal de seus volumes do EBS em uma variedade de cenários de usuário.

### Usar instâncias otimizadas para EBS
<a name="optimize"></a>

Em instâncias sem suporte para a throughput otimizada para EBS, o tráfego de rede poderá competir com o tráfego entre sua instância e seus volumes do EBS. Em instâncias otimizadas para EBS, os dois tipos de tráfego são mantidos separados. Algumas configurações de instâncias otimizadas para EBS incorrem um custo extra (como C3, R3 e M3), enquanto outras são sempre otimizadas para EBS sem custo extra (como M4, C4, C5 e D2). Para obter mais informações, consulte [Otimização para o Amazon EBS](ebs-optimization.md).

### Configurar largura de banda da instância
<a name="icb"></a>

Para tipos de instância compatíveis, você pode configurar a ponderação da largura de banda da instância para aumentar a largura de banda do Amazon EBS em 25% usando a ponderação da largura de banda `ebs-1`. Esse atributo permite que você otimize a alocação de recursos de rede da sua instância entre o EBS e redes VPC, potencialmente melhorando a performance do EBS para workloads com uso intenso de E/S. Para obter mais informações, consulte [Ponderação configurável de largura de banda da instância](instance-bandwidth-configuration.md).

### Noções básicas de como a performance é calculada
<a name="performance_calculation"></a>

Quando você mede a performance dos volumes do EBS, é importante compreender as unidades de medida envolvidas e como a performance é calculada. Para obter mais informações, consulte [I/O Características e monitoramento do Amazon EBS](ebs-io-characteristics.md).

### Noções básicas da workload
<a name="workload_types"></a>

Há uma relação entre o desempenho máximo dos volumes do EBS, o tamanho e o número de I/O operações e o tempo necessário para que cada ação seja concluída. Cada um desses fatores (performance, E/S e latência) afeta os outros, e aplicações diferentes são mais sensíveis em relação a um fator do que outros. Para obter mais informações, consulte [Avaliar a performance de volumes do Amazon EBS](benchmark_procedures.md).

### Esteja ciente da penalidade de performance ao inicializar volumes de snapshots
<a name="initialize"></a>

Há um aumento significativo da latência quando você acessa cada bloco de dados pela primeira vez em um novo volume do EBS que foi criado de um snapshot. É possível evitar essa ocorrência de performance usando uma das seguintes opções:
+ Acessar cada bloco antes de colocar o volume em produção. Esse processo é chamado *inicialização* (conhecido anteriormente como pré-aquecimento). Para obter mais informações, consulte [Inicialize manualmente o volume após a criação](initalize-volume.md#ebs-initialize).
+ Habilite as restauração rápida em um snapshot para garantir que os volumes do EBS criados de um snapshot sejam totalmente inicializados na criação e entreguem instantaneamente toda a sua performance provisionada. Para obter mais informações, consulte [Restauração rápida de snapshots do Amazon EBS](ebs-fast-snapshot-restore.md).

### Fatores que podem reduzir a performance do HDD
<a name="snapshotting_latency"></a>

Quando você cria um snapshot de um volume HDD otimizado para throughput (`st1`) ou HDD a frio (`sc1`), a performance poderá cair até o valor básico do volume enquanto o snapshot estiver em andamento. Esse comportamento é específico desses tipos de volumes. Outros fatores que podem limitar o desempenho incluem gerar mais taxa de transferência do que a instância pode suportar, a penalidade de desempenho encontrada ao inicializar volumes criados a partir de um snapshot e quantidades excessivas de pequenas quantidades aleatórias I/O no volume. Para obter mais informações sobre como calcular a throughput para volumes de HDD, consulte [Tipos de volume do Amazon EBS](ebs-volume-types.md).

Seu desempenho também pode ser afetado se seu aplicativo não estiver enviando o suficienteI/O requests. This can be monitored by looking at your volume’s queue length and I/O size. The queue length is the number of pending I/O requests from your application to your volume. For maximum consistency, HDD-backed volumes must maintain a queue length (rounded to the nearest whole number) of 4 or more when performing 1 MiB sequential I/O. Para obter mais informações sobre como garantir um desempenho consistente dos volumes, consulte [I/O Características e monitoramento do Amazon EBS](ebs-io-characteristics.md).

### Aumentar a leitura antecipada para workloads com muitas operações de leitura e alta throughput em `st1` e `sc1` (*somente instâncias do Linux*)
<a name="read_ahead"></a>

Algumas workloads têm muita leitura e acessam o dispositivo de blocos pelo cache da página do sistema operacional (por exemplo, de um sistema de arquivos). Nesse caso, para alcançar a throughput máxima, recomendamos que você defina a configuração de leitura antecipada como 1 MiB. Essa é uma per-block-device configuração que só deve ser aplicada aos volumes do seu HDD.

Para examinar o valor atual de leitura antecipada para os dispositivos de blocos, use o seguinte comando:

```
$ sudo blockdev --report /dev/<device>
```

As informações do dispositivo de blocos são retornadas neste formato:

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

O dispositivo mostrado relata um valor de leitura antecipada de 256 (o padrão). Multiplique esse número pelo tamanho do setor (512 bytes) para obter o tamanho de buffer de leitura antecipada, que nesse caso é 128 KiB. Para configurar o valor de buffer de 1 MiB, use o seguinte comando:

```
$ sudo blockdev --setra 2048 /dev/<device>
```

Verifique se a configuração de leitura antecipada agora exibe 2.048 executando o primeiro comando novamente.

Use essa configuração somente quando sua carga de trabalho consistir em um volume grande e sequencialI/Os. If it consists mostly of small, random I/Os, this setting will actually degrade your performance. In general, if your workload consists mostly of small or random I/Os. Considere usar um volume SSD (`gp2`e`gp3`) de uso geral em vez de um `st1` volume ou. `sc1`

### Use um kernel do Linux moderno (*somente instâncias do Linux*)
<a name="ModernKernel"></a>

Use um kernel do Linux moderno com suporte para descritores indiretos. Qualquer kernel do Linux versão 3.8 e posterior tem esse suporte, bem como qualquer instância do EC2 da geração atual. Se seu I/O tamanho médio for igual ou próximo a 44 KiB, você pode estar usando uma instância ou um kernel sem suporte para descritores indiretos. Para obter informações sobre como derivar o I/O tamanho médio das CloudWatch métricas da Amazon, consulte. [I/O Características e monitoramento do Amazon EBS](ebs-io-characteristics.md)

Para alcançar a throughput máxima em volumes `st1` ou `sc1`, recomendamos aplicar um valor de 256 ao parâmetro `xen_blkfront.max` (para versões de kernel do Linux abaixo de 4.6) ou o parâmetro `xen_blkfront.max_indirect_segments` (para a versão de kernel do Linux 4.6 e acima). O parâmetro apropriado pode ser definido na linha de comando de inicialização do sistema operacional. 

Por exemplo, em uma AMI do Amazon Linux com um kernel mais antigo, é possível adicioná-lo ao final da linha de kernel na configuração de GRUB encontrada em `/boot/grub/menu.lst`:

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

Para um kernel mais recente, o comando será semelhante ao seguinte:

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

Reinicialize sua instância para que essa configuração seja implementada.

Para obter mais informações, consulte [Configurar o GRUB para AMIs paravirtual](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html#configuringGRUB). Outras distribuições do Linux, especialmente aquelas que não usam o carregador de inicialização de GRUB, podem exigir uma abordagem diferente para ajustar os parâmetros de kernel.

Para obter mais informações sobre I/O as características do EBS, consulte a apresentação [Amazon EBS: Designing for Performance](https://www.youtube.com/watch?v=2wKgha8CZ_w) re:Invent sobre este tópico.

### Usar o RAID 0 para maximizar a utilização de recursos de instância
<a name="RAID"></a>

Alguns tipos de instância podem gerar mais I/O taxa de transferência do que você pode provisionar para um único volume do EBS. É possível adicionar vários volumes juntos em uma configuração de RAID 0 para usar a largura de banda disponível para essas instâncias. Para obter mais informações, consulte [Configuração do Amazon EBS e RAID](raid-config.md).

### Monitore a performance de volumes do Amazon EBS
<a name="cloudwatch"></a>

Você pode monitorar e analisar o desempenho de seus volumes do Amazon EBS usando a Amazon CloudWatch, verificações de status e estatísticas detalhadas de desempenho do EBS. Para obter mais informações, consulte [CloudWatch Métricas da Amazon para Amazon EBS](using_cloudwatch_ebs.md) e [Estatísticas detalhadas de desempenho do Amazon EBS](nvme-detailed-performance-stats.md).

# Otimização para o Amazon EBS
<a name="ebs-optimization"></a>

Uma instância otimizada para Amazon EBS usa uma pilha de configuração otimizada e fornece capacidade adicional dedicada para o Amazon EBS I/O. This optimization provides the best performance for your EBS volumes by minimizing contention between Amazon EBS I/O e outros tráfegos da sua instância.

Instâncias otimizadas para o EBS oferecem largura de banda dedicada para o Amazon EBS. Quando anexado a uma instância otimizada para EBS:
+ `io2`Os volumes Block Express foram projetados para oferecer uma latência média de menos de 500 microssegundos para operações de 16 I/O KiB. `io2` Os volumes Block Express também oferecem melhor latência discrepante em comparação aos volumes de uso geral, reduzindo a frequência de mais de I/Os 800 microssegundos em mais de 10 vezes. `io1`e `io2` os volumes são projetados para fornecer pelo menos 90% de seu desempenho de IOPS provisionado 99,9% do tempo em um determinado ano.
+ Os volumes `gp2` e `gp3` são projetados para oferecer ao menos 90% de sua performance de IOPS provisionadas, 99% do tempo em um determinado ano.
+ Os volumes `st1` e `sc1` oferecem ao menos 90% da performance esperada de throughput, 99% do tempo em um determinado ano.

Períodos não compatíveis são distribuídos com uniformidade aproximada, destinando 99% da throughput total esperada a cada hora. Para obter mais informações, consulte [Tipos de volume do Amazon EBS](ebs-volume-types.md).

O I/O tamanho da sua carga de trabalho afetará a latência média observada à medida que a latência aumenta com o tamanho. I/O Por exemplo, os volumes do `io2` Block Express foram projetados para fornecer uma latência média de menos de 500 microssegundos para operações de 16 I/O KiB.

Para obter mais informações, consulte [Instâncias otimizadas para o Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) no *Guia do usuário do Amazon EC2*.

# Inicializar volumes de Amazon EBS
<a name="initalize-volume"></a>

Quando você cria um volume do Amazon EBS, a partir de um snapshot do EBS ou de outro volume do EBS (cópia do volume), os blocos de dados devem ser gravados no volume antes que você possa acessá-los. Para volumes criados a partir de snapshots, os blocos de dados devem ser baixados do Amazon S3 para o novo volume. Para cópias de volume, os blocos de dados devem ser copiados do volume de origem para a cópia do volume. Esse processo é chamado de *inicialização de volume*. Durante esse período, o volume que está sendo inicializado pode apresentar maior I/O latência e menor desempenho. A performance de volume máximo é obtido apenas depois que todos os blocos de armazenamento foram baixados e gravados no volume.

**nota**  
Os volumes vazios oferecem a performance máxima imediatamente após a criação do e não exigem inicialização.

A taxa padrão de inicialização do volume varia durante todo o processo de inicialização, o que pode tornar os tempos de conclusão imprevisíveis. Para minimizar os impactos na performance associados à inicialização do volume, você pode usar as seguintes opções:

**nota**  
A taxa de inicialização do volume e a restauração rápida de instantâneos não são suportadas para cópias de volume. Para obter mais informações, consulte [Inicialização de cópia de volume](ebs-copying-volume.md#copy-volume-initialization).

**Topics**
+ [Use uma taxa provisionada do Amazon EBS para inicialização de volume](#volume-initialization-rate)
+ [Usar um snapshot que esteja habilitado para restauração rápida de snapshots](#volume-initialization-fsr)
+ [Inicialize volumes manualmente](#ebs-initialize)
+ [Monitore a inicialização do volume](ebs-initialize-monitor.md)

## Use uma taxa provisionada do Amazon EBS para inicialização de volume
<a name="volume-initialization-rate"></a>

Ao criar um volume do Amazon EBS a partir de um snapshot, você pode, opcionalmente, especificar uma taxa provisionada do Amazon EBS para inicialização de volume (taxa de inicialização de volume) que varia de 100 a 300 MiB/s. Se você especificar uma taxa de inicialização de volume, os blocos de snapshot serão baixados do Amazon S3 e gravados no volume na taxa especificada após a criação. Isso permite que você crie volumes que se tornam totalmente inicializados e com performance total em um período de tempo previsível.

Usar uma taxa de inicialização de volume é especialmente útil quando você cria vários volumes simultaneamente e precisa que todos sejam inicializados em um período de tempo previsível.

**nota**  
A taxa provisionada do Amazon EBS para inicialização de volume é compatível com todos os tipos de volumes do Amazon EBS e todos os tipos de instâncias do Amazon EC2, incluindo instâncias do Amazon EC2 do Mac.

É possível especificar uma taxa de inicialização de volume:
+ Para solicitações individuais de criação de volume
+ Para mapeamentos de dispositivos de blocos de volumes do EBS em solicitações de inicialização de instância
+ Para mapeamentos de dispositivos de blocos de volumes do EBS em modelos de inicialização
+ Para volumes do EBS criados por tarefas de substituição do volume raiz
+ Para volumes do EBS em clusters do Amazon EKS (criados pelo EBS CSI Driver) e clusters do Amazon ECS

**Topics**
+ [Como funciona](#consistent-rate-how)
+ [Considerações](#consistent-rate-considerations)
+ [Cotas](#consistent-rate-quota)
+ [Faturamento](#consistent-rate-billing)

### Como funciona
<a name="consistent-rate-how"></a>

Quando você cria um volume com uma taxa de inicialização de volume, os blocos de snapshot são baixados do Amazon S3 para o volume na taxa especificada.

O tempo necessário para inicializar o volume depende do seguinte:
+ O tamanho dos dados do snapshot, não o tamanho do volume que está sendo criado.
**dica**  
Para descobrir o tamanho dos dados de um snapshot, verifique o campo `FullSnapshotSizeInBytes` na saída do comando [describe-snapshots](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html) ou o campo **Tamanho total do snapshot** no console.
+ A taxa de inicialização do volume que você especifica

Por exemplo, se você criar um volume de 20 GiB usando um snapshot com 10 GiB de dados e especificar uma taxa de inicialização do volume de 300 = 34,1 segundos). MiB/s, the volume will be fully initialized in approximately 34.1 seconds (10 GiB / 300 MiB/s Da mesma forma, se você criar 10 volumes com o mesmo snapshot e taxa de inicialização de volume simultaneamente, todos os 10 volumes serão totalmente inicializados em 34,1 segundos.

### Considerações
<a name="consistent-rate-considerations"></a>
+ É possível especificar uma taxa de inicialização de volume entre 100 e 300 MiB/s.
+ Quando você especifica uma taxa de inicialização de volume, as cobranças e o tempo de conclusão são baseados no tamanho dos dados do snapshot (não no tamanho do volume) e na taxa especificada. Para obter mais informações, consulte [Faturamento](#consistent-rate-billing).
+ O Amazon EBS fornece uma taxa média que está dentro de 10 por cento da taxa de inicialização de volume que você especifica em 99 por cento do tempo.
+ Se você especificar uma taxa de inicialização de volume e usar um snapshot que está habilitado para restauração rápida de snapshots, o Amazon EBS usa a taxa especificada em vez da restauração rápida de snapshots. Para usar a restauração rápida de snapshots em vez disso, não especifique uma taxa de inicialização de volume.
+ Se o Amazon EBS não conseguir inicializar o volume na taxa de inicialização de volume especificada devido a restrições de capacidade ou porque você excedeu sua [cota](#consistent-rate-quota), a solicitação falhará.
+ Você não pode especificar uma taxa de inicialização de volume para volumes criados em AWS Outposts, ou em Zonas Locais ou Zonas de Wavelength.

### Cotas
<a name="consistent-rate-quota"></a>

Há um limite de 5.000 MiB/s na taxa cumulativa de inicialização de volume que você pode solicitar em todas as solicitações simultâneas de criação de volumes. Por exemplo, você pode fazer 50 solicitações simultâneas de criação de volume com uma taxa de 100 MiB/s (50 solicitações simultâneas \$1 MiB/s taxa de 100) ou 25 solicitações simultâneas com uma taxa de 200 MiB/s (25 solicitações simultâneas \$1 taxa de 200). MiB/s Esse limite se aplica por região. Se uma solicitação exceder esse limite, ela falhará. Aguarde a conclusão de algumas das solicitações em andamento ou solicite um aumento de cota. Para obter mais informações, consulte [Cotas do Amazon EBS](ebs-resource-quotas.md).

### Faturamento
<a name="consistent-rate-billing"></a>

Quando você cria um volume com uma taxa de inicialização de volume, é cobrada uma taxa por GiB de dados de snapshot, por MiB da taxa de inicialização especificada. A taxa varia com base na região. Para obter mais informações, consulte [Definição de preço do Amazon EBS](https://aws.amazon.com/ebs/pricing/).

Você é cobrado com base no tamanho dos dados do snapshot, não no tamanho do volume. Por exemplo, se você criar um snapshot de um volume com 100 GiB de tamanho, mas com apenas 50 GiB de dados, o snapshot terá um tamanho de volume de 100 GiB, mas o tamanho dos dados do snapshot será de 50 GiB. Se você usar esse snapshot para criar um volume e especificar uma taxa de inicialização de volume, suas cobranças serão baseadas nos 50 GiB de dados do snapshot.

**dica**  
Para descobrir o tamanho dos dados de um snapshot, verifique o campo `FullSnapshotSizeInBytes` na saída do comando [describe-snapshots](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html) ou o campo **Tamanho total do snapshot** no console.

A fórmula é a seguinte:

```
rate for Region x snapshot data size x volume initialization rate
```

Você receberá a cobrança do valor total quando o volume entrar no estado `active`. Solicitações com falha não são cobradas.

Se você excluir um volume antes da conclusão da inicialização do volume, você ainda será cobrado pela taxa de inicialização do volume solicitada.

## Usar um snapshot que esteja habilitado para restauração rápida de snapshots
<a name="volume-initialization-fsr"></a>

Se você criar um volume a partir de um snapshot habilitado para restauração rápida de snapshots, o volume será totalmente inicializado na criação e fornecerá imediatamente sua performance total. Para obter mais informações sobre como usar a restauração rápida de snapshots, consulte [Restauração rápida de snapshots do Amazon EBS](ebs-fast-snapshot-restore.md).

## Inicialize manualmente o volume após a criação
<a name="ebs-initialize"></a>

É possível inicializar manualmente um volume do Amazon EBS após a criação para ajudar a minimizar os impactos na performance de inicialização do volume. 

É possível usar os procedimentos a seguir para inicializar manualmente um volume do Amazon EBS após a criação.

**Importante**  
Durante a inicialização dos volumes de Provisioned IOPS SSD que foram criados de snapshots, a performance do volume pode ser reduzida para menos de 50% de seu nível esperado, o que faz com que o volume exiba um estado de `warning` na verificação do status de **I/O Performance** (Performance de E/S). Isso é esperado, e é possível ignorar o estado de `warning` em volumes de Provisioned IOPS SSD enquanto estiver inicializando esses volumes. Para obter mais informações, consulte [Verificações de status de volume do Amazon EBS](monitoring-volume-checks.md).

### Instâncias do Linux
<a name="ebs-initialize-linux"></a>

**Como inicializar um volume criado de um snapshot no Linux**

1. Anexe o volume recentemente restaurado à sua instância do Linux.

1. Use o comando **lsblk** para relacionar os dispositivos de blocos em sua instância.

   ```
   $ lsblk
   NAME  MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   xvdf  202:80   0  30G  0 disk
   xvda1 202:1    0   8G  0 disk /
   ```

   Aqui é possível ver que o volume novo `/dev/xvdf`, está anexado, mas não montado (porque não há caminho listado na coluna `MOUNTPOINT`).

1. <a name="initialize-snapshot-step"></a>Use os utilitários **dd** ou **fio** para ler todos os blocos do dispositivo. O comando **dd** é instalado por padrão em sistemas Linux, mas **fio** é consideravelmente mais rápido porque permite leituras encadeadas várias vezes.
**nota**  
Essa etapa pode levar de vários minutos a várias horas, dependendo da largura de banda da instância do EC2, das IOPS provisionadas para o volume e do tamanho do volume.

   [**dd**] O parâmetro `if` (arquivo de entrada) deve ser configurado na unidade que você deseja inicializar. O parâmetro `of` (arquivo de saída) deve ser definido no dispositivo virtual nulo do Linux, `/dev/null`. O parâmetro `bs` define o tamanho do bloco da operação de leitura. Para a performance ideal, ele deve ser definido como 1 MB.
**Importante**  
O uso incorreto de **dd** pode destruir facilmente os dados de um volume. Não deixe de seguir precisamente o comando de exemplo abaixo. Somente o parâmetro `if=/dev/xvdf` irá variar dependendo do nome do dispositivo que você está lendo.

   ```
   $ sudo dd if=/dev/xvdf of=/dev/null bs=1M
   ```

   [**fio**] Se o **fio** estiver instalado em seu sistema, use o seguinte comando para inicializar seu volume. O parâmetro `--filename` (arquivo de entrada) deve ser configurado na unidade que você deseja inicializar.

   ```
   $ sudo fio --filename=/dev/xvdf --rw=read --bs=1M --iodepth=32 --ioengine=libaio --direct=1 --name=volume-initialize
   ```

   Use o comando a seguir para instalar o **fio** em Amazon Linux:

   ```
   sudo yum install -y fio
   ```

   Para instalar **fio** no Ubuntu, use o seguinte comando:

   ```
   sudo apt-get install -y fio
   ```

   Quando a operação for concluída, você verá um relatório da operação de leitura. Seu volume agora está pronto para uso. Para obter mais informações, consulte [Disponibilizar um volume do Amazon EBS para uso](ebs-using-volumes.md).

### Instâncias do Windows
<a name="ebs-initialize-windows"></a>

Antes de usar uma ou outra ferramenta, colete informações sobre os discos no sistema como se segue:

**Para reunir informações sobre os discos do sistema**

1. Use o comando **wmic** para listar os discos disponíveis no sistema:

   ```
   wmic diskdrive get size,deviceid
   ```

   A seguir está um exemplo de saída:

   ```
   DeviceID            Size
   \\.\PHYSICALDRIVE2  80517265920
   \\.\PHYSICALDRIVE1  80517265920
   \\.\PHYSICALDRIVE0  128849011200
   \\.\PHYSICALDRIVE3  107372805120
   ```

1. Identifique o disco para inicializar usando **dd** ou **fio**. A unidade `C:` está em `\\.\PHYSICALDRIVE0`. É possível usar o utilitário `diskmgmt.msc` para comparar letras de unidades com números de unidades de disco, se não tiver certeza de que número de unidade usar. 

------
#### [ Use the dd utility ]

Conclua os seguintes procedimentos para instalar e usar **dd** para inicializar um volume.

**Considerações importantes**
+ A inicialização do volume leva de vários minutos a várias horas, dependendo da largura de banda da instância do EC2, das IOPS provisionadas para o volume e do tamanho do volume.
+ O uso incorreto de **dd** pode destruir facilmente os dados de um volume. Certifique-se de seguir este procedimento com precisão.

**Instalar dd para Windows**

O programa **dd** para Windows fornece uma experiência semelhante ao programa **dd** que é geralmente disponível para sistemas Linux e Unix, e permite que você inicialize volumes do Amazon EBS que foram criados de snapshots. As versões beta mais recentes aceitam o dispositivo `/dev/null` virtual. Se você instalar uma versão anterior, é possível usar o dispositivo `nul` virtual em vez disso. A documentação completa está disponível em [http://www.chrysocome.net/dd](http://www.chrysocome.net/dd).

1. Faça download da versão binária mais recente do **dd** para Windows em [http://www.chrysocome.net/dd](http://www.chrysocome.net/dd).

1. (Opcional) Crie uma pasta para utilitários de linha de comando que seja fácil de localizar e recordar, como `C:\bin`. Se você já tiver uma pasta designada para utilitários de linha de comando, poderá usar essa pasta na etapa a seguir.

1. Descompacte o pacote binário e copie o arquivo `dd.exe` para sua pasta de utilitários de linha de comando (por exemplo, `C:\bin`).

1. Adicione a pasta de utilitários de linha de comando à variável de ambiente de caminho para que você possa executar os programas nessa pasta de qualquer lugar.

   1. Escolha **Iniciar**, abra o menu de contexto (clique com o botão direito) de **Computador** e escolha **Propriedades**.

   1. Escolha **Configurações avançadas de sistema**, **Variáveis de Ambiente**.

   1. Em **Variáveis de Sistema**, selecione a variável **Caminho** e escolha **Editar**.

   1. Em **Valor da variável**, adicione um ponto e vírgula e o local de sua pasta de utilitário de linha de comando (**;C:\$1bin\$1)**) no final do valor existente.

   1. Escolha **OK** para fechar a janela **Editar Variável de Sistema**.

1. Abra uma nova janela do prompt de comando. As seguintes etapas não atualizam as variáveis ambientais nas janelas de prompt de comando atuais. As janelas de prompt de comando que você abre agora que você concluiu a etapa anterior são atualizadas.
<a name="prewarm_snapshot_command"></a>
**Inicializar um volume usando dd para Windows**  
Execute o seguinte comando para ler todos os blocos no dispositivo especificado (e envie a saída para o dispositivo virtual `/dev/null`). Este comando inicializa com segurança os dados existentes.

```
dd if=\\.\PHYSICALDRIVEn of=/dev/null bs=1M --progress --size
```

Pode haver um erro se **dd** tentar ler além do fim do volume. É possível ignorar isso com segurança.

Se você usou uma versão anterior do comando **dd**, ele não suporta o dispositivo `/dev/null`. Em vez disso, é possível usar o dispositivo `nul` da seguinte forma.

```
dd if=\\.\PHYSICALDRIVEn of=nul bs=1M --progress --size
```

------
#### [ Use the fio utility ]

Conclua os seguintes procedimentos para instalar e usar **fio** para inicializar um volume.

**Como instalar **fio** para Windows**

O programa **fio** para Windows fornece uma experiência semelhante ao programa **fio** que é geralmente disponível para sistemas Linux e Unix, e permite que você inicialize volumes do Amazon EBS criados de snapshots. Para obter mais informações, consulte [https://github.com/axboe/fio](https://github.com/axboe/fio).

1. Faça o download do instalador [**fio** MSI](https://github.com/axboe/fio/releases) ao expandir **Ativos** para a versão mais recente e selecionando o instalador MSI.

1. Instalar o **fio**.

**Como inicializar um volume usando **fio** para Windows**

1. Execute um comando semelhante ao seguinte para inicializar um volume:

   ```
   fio --filename=\\.\PHYSICALDRIVEn  --rw=read --bs=1M --iodepth=32 --direct=1 --name=volume-initialize
   ```

1. Quando a operação for concluída, você estará pronto para usar o novo volume. Para obter mais informações, consulte [Disponibilizar um volume do Amazon EBS para uso](ebs-using-volumes.md).

------

# Monitore o status de inicialização do volume do Amazon EBS
<a name="ebs-initialize-monitor"></a>

Ao criar um volume, a partir de um snapshot ou de outro volume (cópia do volume), você pode monitorar o status da inicialização do volume para saber se o processo de inicialização foi concluído. É possível monitorar a inicialização do volume usando as seguintes opções:

**Topics**
+ [AWS CLI e console Amazon EC2](#ebs-initialize-monitor-ec2)
+ [Amazon EventBridge](#ebs-initialize-monitor-ev)

## AWS CLI e console Amazon EC2
<a name="ebs-initialize-monitor-ec2"></a>

Você pode usar o console AWS CLI e o Amazon EC2 para verificar o status da inicialização do volume a qualquer momento após a criação do volume. As seguintes informações são fornecidas:
+ **Tipo de inicialização** (AWS CLI somente) — Indica o tipo de inicialização do volume usado. `default`para restauração rápida de snapshots e inicialização de volume padrão, para `provisioned-rate` Amazon EBS Provisioned Rate for Volume Initialization e para inicialização de cópias em volume. `volume-copy`
+ **Tempo estimado até a conclusão** (AWS CLI somente) — Somente para volumes criados usando uma taxa provisionada do Amazon EBS para inicialização de volume. O tempo restante estimado, em segundos, para que a inicialização do volume seja concluída.
+ **Progresso**: o progresso, como uma porcentagem (0-100), do processo de inicialização do volume. Para volumes inicializados com restauração rápida de snapshots, o progresso passa para 100% imediatamente após a criação.
+ **Estado de inicialização**: o estado geral da inicialização do volume (`initializing` ou `completed`). Para volumes inicializados com restauração rápida de snapshots, o estado passa para `completed` imediatamente após a criação.

**nota**  
Pode levar até cinco minutos para que as informações de inicialização do volume sejam atualizadas.

------
#### [ Console ]

**Para monitorar o status da inicialização do volume**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Volumes**.

1. Selecione o volume para o qual verificar o status de inicialização do volume.

1. O campo **Estado da inicialização** na grade e a guia **Detalhes** fornecem informações sobre o andamento no seguinte formato: *Estado da inicialização (porcentagem de progresso)*. Por exemplo, *Inicializando (75%).*

   Os possíveis estados de inicialização incluem: *Inicializando* e *Concluído*.

------
#### [ AWS CLI ]

**Para monitorar o status da inicialização do volume**  
Use o [ describe-volume-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-volume-status.html) AWS CLI comando para visualizar o status de inicialização. `EstimatedTimeToCompleteInSeconds`é retornado somente para volumes criados com uma taxa provisionada do Amazon EBS para inicialização de volume.

Por exemplo, o comando a seguir verifica o status de inicialização do volume `vol-11111111111111111`, que foi criado com uma taxa provisionada do Amazon EBS para inicialização de volume.

```
aws ec2 describe-volume-status --volume-id vol-01111111111111111
```

O seguinte é um exemplo de saída.

```
{
    "VolumeStatuses": [
        {
            "Actions": [],
            "AvailabilityZone": "us-east-1a",
            "Events": [],
            "VolumeID": "vol-11111111111111111",
            "VolumeStatus": {
                "Details": [
                    {
                        "Name": "io-enabled",
                        "Status": "passed"
                    },
                    {
                        "Name": "io-performance",
                        "Status": "not-applicable"
                    },
                    {
                        "Name": "initialization-state",
                        "Status": "completed"
                    }
                ],
                "Status": "ok"
            },
            "InitializationStatusDetails": {
                "InitializationType": "provisioned-rate",
                "Progress": 75,
                "EstimatedTimeToCompleteInSeconds": 850
            }
        }
    ]
}
```

------

## Amazon EventBridge
<a name="ebs-initialize-monitor-ev"></a>

Um EventBridge evento da Amazon é enviado para sua conta em até cinco minutos **após** a conclusão da inicialização do volume. É possível criar regras que acionam ações programáticas em resposta a esses eventos.

**nota**  
Os eventos são emitidos com base no melhor esforço.
Se você excluir o volume antes da conclusão da inicialização ou dentro de 5 minutos após a conclusão da inicialização, talvez você não receba o evento.

Para obter mais informações sobre o evento, consulte [Evento de inicialização de volume do EBS](ebs-cloud-watch-events.md#volume-initialization-events).

**Para monitorar o status da inicialização do volume usando EventBridge**

1. Abra o EventBridge console da Amazon em [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Escolha **Regras**, **Criar regra**.

1. Para a **Etapa 1**, faça o seguinte:

   1. Especifique um nome e uma descrição para a regra.

   1. Para **Barramento de eventos**, escolha o barramento para receber os eventos. Se você não criou um barramento de eventos personalizado, mantenha o **padrão** ou consulte [Criação de um barramento de eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-event-bus.html).

   1. Para **Tipo de regra**, mantenha **Regra com um padrão de evento**.

   1. Escolha **Próximo**.

1. Para a **Etapa 2**, faça o seguinte:

   1. Para **fonte de eventos**, mantenha **AWS eventos ou eventos de EventBridge parceiros**.

   1. Para **Método de criação**, escolha **Padrão personalizado (editor JSON)**.

   1. Em **Padrão de evento**, faça o seguinte:

      ```
      {
          "detail-type": ["EBS Volume Notification"],
          "source": ["aws.ec2"],
          "detail": {
              "event": ["initializeVolume"],
              "result": ["succeeded"]
          }
      }
      ```

      Para obter um evento de exemplo, consulte [Evento de inicialização de volume do EBS](ebs-cloud-watch-events.md#volume-initialization-events).

   1. Escolha **Próximo**.

1. Para a **Etapa 3**, faça o seguinte:

   1. Em **Tipos de destino**, escolha **Serviço da AWS **.

   1. Em **Selecionar destino**, escolha o **tópico SNS** e, em **Tópico**, selecione o tópico necessário. Se você não criou nenhum tópico, consulte [Criação de um tópico](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html).

   1. Em **Permissões**, mantenha a opção **Usar função de execução (recomendada)** selecionada.

   1. Em **Perfil de execução**, mantenha a opção **Criar uma nova função para este recurso específico** selecionada e o nome de função padrão.

   1. Escolha **Próximo**.

1. Para a **Etapa 4**, especifique as etiquetas para a regra, se necessário, e, em seguida, escolha **Avançar**.

1. Para a **Etapa 5**, revise a regra e escolha **Criar regra**.

# Ponderação configurável de largura de banda da instância
<a name="instance-bandwidth-configuration"></a>

A configuração de largura de banda da instância (IBC) é um atributo que permite ajustar a alocação da largura de banda da rede entre o Amazon EBS e a rede VPC para uma instância do Amazon EC2. Esse atributo pode ajudá-lo a otimizar a performance de workloads com requisitos específicos de largura de banda. A configuração da largura de banda da instância é aceita somente em algumas instâncias. Para obter mais informações, consulte [Configuração de ponderação de largura de banda da instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-bandwidth-weighting.html#config-bw-support).

Para a performance do EBS, o uso da ponderação da largura de banda `ebs-1` aumenta a largura de banda básica do EBS em 25%, enquanto reduz a largura de banda da rede VPC na mesma quantidade absoluta. Isso pode ser benéfico para workloads com uso intenso de E/S que exigem maior throughput do EBS.

Ao planejar sua carga de trabalho, considere cuidadosamente seu I/O tamanho e padrões. I/O Tamanhos menores geralmente são menos afetados pelas limitações de largura de banda, enquanto I/O tamanhos maiores ou cargas de trabalho sequenciais podem sofrer impactos mais significativos das mudanças na largura de banda. É fundamental testar minuciosamente seu workload específico para garantir a performance ideal com a ponderação de largura de banda escolhida.

**Considerações**
+ A largura de banda configurável da instância é aceita em tipos de instância selecionados. Para obter mais informações, consulte [Tipos de instância compatíveis](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-bandwidth-weighting.html#config-bw-support).
+ O uso da ponderação da largura de banda `ebs-1` aumenta a largura de banda do EBS em até 25%, o que pode melhorar a performance de aplicações com uso intenso de E/S. No entanto, lembre-se de que a largura de banda da rede VPC será reduzida na mesma quantidade absoluta (a especificação de largura de banda combinada entre o EBS e a rede não muda).
+ Mudanças na ponderação da largura de banda podem afetar significativamente o I/O desempenho. Com a ponderação da largura de banda `vpc-1`, a largura de banda da rede aumenta, mas você pode ter um IOPS menor do que o esperado para volumes do EBS. Isso ocorre porque você pode atingir o limite de largura de banda do EBS antes do limite de IOPS, especialmente com tamanhos maiores. I/O Por exemplo, um tipo de instância que normalmente suporta 240.000 IOPS com I/O tamanho de 16 KiB pode atingir menos IOPS ao usar o peso da largura de banda devido à diminuição `vpc-1` da largura de banda do EBS.
+ Sempre teste seu workload específico para garantir que a ponderação de largura de banda escolhida atenda às suas necessidades de performance.
+ Modificar uma instância interrompida Para obter mais informações, consulte [Configuração de ponderação de largura de banda da sua instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-bandwidth-weighting.html#config-bw-how-to).
+ É possível configurar a ponderação da largura de banda da instância sem custos adicionais.

# I/O Características e monitoramento do Amazon EBS
<a name="ebs-io-characteristics"></a>

Em uma determinada configuração de volume, certas I/O características orientam o comportamento de desempenho de seus volumes do EBS.
+ Volumes baseados em SSD, SSD de uso geral (`gp2`e`gp3`) e SSD de IOPS provisionada (`io1`e`io2`) oferecem desempenho consistente, independentemente de uma operação ser aleatória ou sequencial. I/O 
+ Volumes baseados em HDD, HDD com taxa de transferência otimizada (`st1`) e HDD frio (`sc1`), oferecem desempenho ideal somente quando I/O as operações são grandes e sequenciais.

Para entender o desempenho dos volumes SSD e HDD em seu aplicativo, é importante conhecer a conexão entre a demanda no volume, a quantidade de IOPS disponível, o tempo necessário para a conclusão de uma I/O operação e os limites de taxa de transferência do volume.

**Topics**
+ [IOPS](#ebs-io-iops)
+ [Comprimento e latência da fila de volume](#ebs-io-volume-queue)
+ [Limites de throughput de tamanho e volume de E/S](#ebs-io-size-throughput-limits)
+ [Monitore I/O as características usando CloudWatch](#ebs-io-metrics)
+ [Monitore estatísticas de I/O desempenho em tempo real](#monitor-io-nvme)
+ [Recursos relacionados](#ebs-io-resources)

## IOPS
<a name="ebs-io-iops"></a>

O IOPS é uma unidade de medida que representa input/output as operações por segundo. As operações são medidas em KiB, e a tecnologia de drive subjacente determina a quantidade máxima de dados que um tipo de volume considera único com I/O. I/O size is capped at 256 KiB for SSD volumes and 1,024 KiB for HDD volumes because SSD volumes handle small or random I/O muito mais eficiência do que os volumes de HDD. 

Quando pequenas I/O operações são fisicamente sequenciais, o Amazon EBS tenta mesclá-las em uma única I/O operação até o tamanho máximo. I/O Da mesma forma, quando I/O as operações são maiores que o I/O tamanho máximo, o Amazon EBS tenta dividi-las em I/O operações menores. A tabela a seguir mostra alguns exemplos.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/ebs/latest/userguide/ebs-io-characteristics.html)

Consequentemente, quando você cria um volume baseado em SSD com suporte a 3.000 IOPS (provisionando um `io2` volume `io1` ou com 3.000 IOPS, dimensionando um volume `gp2` em 1.000 GiB ou usando um `gp3` volume) e o anexa a uma instância otimizada para EBS que pode fornecer largura de banda suficiente, você pode transferir até 3.000 dados por segundo, com a taxa de transferência determinada pelo tamanho. I/Os I/O 

## Comprimento e latência da fila de volume
<a name="ebs-io-volume-queue"></a>

O tamanho da fila de volume é o número de I/O solicitações pendentes para um dispositivo. A latência é o tempo real de uma I/O operação para o end-to-end cliente, em outras palavras, o tempo decorrido entre o envio de uma I/O para o EBS e o recebimento de uma confirmação do EBS de que a leitura ou gravação foi concluída. I/O O comprimento da fila deve ser calibrado corretamente com o I/O tamanho e a latência para evitar a criação de gargalos no sistema operacional convidado ou no link de rede com o EBS.

O tamanho ideal da fila varia para cada workload, dependendo da sensibilidade de sua aplicação específica em relação à IOPS e à latência. Se sua carga de trabalho não estiver entregando I/O solicitações suficientes para usar totalmente o desempenho disponível para seu volume do EBS, talvez seu volume não forneça o IOPS ou a taxa de transferência que você provisionou. 

Os aplicativos com uso intenso de transações são sensíveis ao aumento da I/O latência e são adequados para volumes baseados em SSD. É possível manter a IOPS alta e, ao mesmo tempo, a latência baixa mantendo uma fila de comprimento pequeno e um alto número de IOPS disponíveis para o volume. Direcionar consistentemente mais IOPS para um volume do que ele tem disponível pode causar maior I/O latência. Para obter máxima consistência, um volume deve manter uma profundidade média de fila (arredondada para o número inteiro mais próximo) de uma para cada 1.000 IOPS provisionadas em um minuto. Por exemplo, para um volume provisionado com 3.000 IOPS, a média da profundidade da fila deve ser 3.

Os aplicativos que consomem muita taxa de transferência são menos sensíveis ao aumento da I/O latência e são adequados para volumes baseados em HDD. É possível manter alta throughput para volumes baseados em HDD mantendo uma fila de comprimento maior ao executar E/S grande e sequencial.

## Limites de throughput de tamanho e volume de E/S
<a name="ebs-io-size-throughput-limits"></a>

Para volumes baseados em SSD, se seu I/O tamanho for muito grande, você poderá ter um número menor de IOPS do que o provisionado porque está atingindo o limite de taxa de transferência do volume. Por exemplo, um `gp2` volume abaixo de 1.000 GiB com créditos de pico disponíveis tem um limite de IOPS de 3.000 e um limite de taxa de transferência de volume de 250 não MiB/s. If you are using a 256 KiB I/O size, your volume reaches its throughput limit at 1000 IOPS (1000 x 256 KiB = 250 MiB). For smaller I/O sizes (such as 16 KiB), this same volume can sustain 3,000 IOPS because the throughput is well below 250 MiB/s. (These examples assume that your volume's I/O está atingindo os limites de taxa de transferência da instância.) Para obter mais informações sobre os limites de throughput para cada tipo de volume do EBS, consulte [Tipos de volume do Amazon EBS](ebs-volume-types.md). 

Para I/O operações menores, você pode ver um valor de higher-than-provisioned IOPS medido de dentro da sua instância. Isso acontece quando o sistema operacional da instância funde operações pequenas de E/S em uma operação maior antes de passá-las ao Amazon EBS.

Se sua carga de trabalho usa sequenciais I/Os em HDD `st1` e `sc1` volumes, você pode ter um número de IOPS maior do que o esperado, conforme medido de dentro da sua instância. Isso acontece quando o sistema operacional da instância mescla sequencialmente I/Os e as conta em unidades do tamanho de 1.024 KiB. Se sua carga de trabalho for pequena ou aleatória I/Os, you may experience a lower throughput than you expect. This is because we count each random, non-sequential I/O em relação à contagem total de IOPS, isso pode fazer com que você atinja o limite de IOPS do volume mais cedo do que o esperado.

Seja qual for o tipo de volume do EBS, se a IOPS ou a throughput não forem conforme o esperado de acordo com a configuração, garanta que a largura de banda da instância do EC2 não seja o fator limitante. Você deve sempre usar uma instância otimizada para EBS da geração atual (ou uma que inclua 10 conexões de Gb/s rede) para obter um desempenho ideal. Outra causa possível para não experimentar o IOPS esperado é que você não está direcionando o suficiente I/O para os volumes do EBS.

## Monitore I/O as características usando CloudWatch
<a name="ebs-io-metrics"></a>

Você pode monitorar essas I/O características com as [métricas de volume de cada CloudWatch volume](using_cloudwatch_ebs.md#ebs-volume-metrics).

**Monitorar E/S paralisado**  
`VolumeStalledIOCheck` monitora o status dos volumes do EBS para determinar quando eles estão danificados. A métrica é um valor binário que retornará um status `0` (aprovado) ou `1` (reprovado) com base na capacidade ou não do volume do EBS concluir I/O as operações. 

Se a `VolumeStalledIOCheck` métrica falhar, você pode esperar AWS para resolver o problema ou tomar medidas, como substituir o volume afetado ou interromper e reiniciar a instância à qual o volume está conectado. Na maioria dos casos, quando essa métrica falha, o EBS diagnostica e recupera automaticamente o volume em alguns minutos. Você pode usar a ação [Pausar I/O](ebs-fis.md) AWS Fault Injection Service para executar experimentos controlados para testar sua arquitetura e monitoramento com base nessa métrica para melhorar sua resiliência a falhas de armazenamento.

**Monitore a I/O latência de um volume**  
É possível monitorar a latência média das operações de leitura e gravação de um volume do Amazon EBS usando as métricas `VolumeAvgReadLatency` e `VolumeAvgWriteLatency`, respectivamente. Você pode usar a ação de [injeção de latência](ebs-fis-latency-injection.md) AWS Fault Injection Service para executar experimentos controlados para testar sua arquitetura e monitoramento com base nessa métrica para melhorar sua resiliência à degradação do desempenho do armazenamento.

Se sua I/O latência for maior do que a necessária, certifique-se de que seu aplicativo não esteja tentando gerar mais IOPS ou taxa de transferência do que você provisionou para seu volume. É possível usar as métricas `VolumeAvgIOPS` e `VolumeAvgThroughput` para monitorar a média de IOPS e o throughput direcionados ao seu volume em um minuto e, em seguida, compará-los com as IOPS provisionadas e o throughput do volume. Se o volume não conduzir nenhuma operação durante o minuto, as métricas reportarão um valor de zero (`0`). Se surtos de IOPS ou throughput elevados ocorrerem por um período menor do que o intervalo de um minuto, o volume experimentará um microssurto, mas as métricas médias de IOPS e de throughput podem indicar que você está gerando uma performance inferior às IOPS provisionadas ou aos limites de throughput do seu volume. Para identificar se seu volume apresenta surtos de performance em um determinado minuto, você pode usar as métricas `VolumeIOPSExceededCheck` e `VolumeThroughputExceededCheck`. É possível monitorar essas métricas para saber se seu workload tentou consistentemente gerar IOPS ou throughput maiores do que a performance provisionada do seu volume em um determinado minuto. Se as IOPS geradas em qualquer segundo dentro de um minuto exceder consistentemente a performance de IOPS provisionada do seu volume, a métrica `VolumeIOPSExceededCheck` retornará `1`. Se o throughput gerado em qualquer segundo dentro de um minuto exceder consistentemente a performance de throughput provisionada do seu volume, a métrica `VolumeThroughputExceededCheck` retornará `1`. Se as IOPS e o throughput gerados estiverem dentro da performance provisionada do seu volume, as métricas retornarão `0`.

Se a aplicação exigir um número de IOPS maior do que seu volume pode fornecer, será necessário considerar usar um dos seguintes:
+ Um volume `gp3`, `io2` ou `io1` que seja provisionado com IOPS suficientes para atingir a latência necessária
+ Um volume `gp2` maior que forneça performance de IOPS de base suficiente

Os `sc1` volumes `st1` e suportados por HDD foram projetados para ter o melhor desempenho com cargas de trabalho que aproveitam o tamanho máximo de 1.024 KiB. I/O Para determinar o I/O tamanho médio do seu volume, divida `VolumeWriteBytes` por`VolumeWriteOps`. O mesmo cálculo se aplica a operações de leitura. Se o I/O tamanho médio for inferior a 64 KiB, aumentar o tamanho das I/O operações enviadas para um `sc1` volume `st1` or deve melhorar o desempenho.

**Monitorar o saldo de bucket de intermitência para volumes `gp2`, `st1` e `sc1`**  
`BurstBalance` exibe o saldo do bucket de intermitência para os volumes `gp2`, `st1` e `sc1` como um porcentual do saldo restante. Quando seu burst bucket se esgota, o volume I/O (para `gp2` volumes) ou a taxa de transferência do volume (para `st1` e `sc1` volumes) são reduzidos para a linha de base. Verifique o valor `BurstBalance` para determinar se seu volume está sendo limitado por esse motivo. Para obter uma lista completa das métricas do Amazon EBS disponíveis, consulte [CloudWatch Métricas da Amazon para Amazon EBS](using_cloudwatch_ebs.md) e [Métricas do Amazon EBS para instâncias baseadas Nitro](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html#ebs-metrics-nitro).

## Monitore estatísticas de I/O desempenho em tempo real
<a name="monitor-io-nvme"></a>

É possível acessar, em tempo real, estatísticas de performance detalhadas de volumes do Amazon EBS que estão anexados a instâncias baseadas no Nitro do Amazon EC2.

Você pode combinar essas estatísticas para obter a latência média e o IOPS ou para verificar se I/O as operações estão sendo concluídas. Você também pode visualizar o tempo total em que sua aplicação excedeu os limites de IOPS ou de throughput provisionados do volume do EBS ou da instância anexada. Ao monitorar os aumentos dessas estatísticas ao longo do tempo, você pode identificar se precisa aumentar as IOPS provisionadas ou os limites de throughput para otimizar a performance da sua aplicação. As estatísticas detalhadas de desempenho também incluem histogramas para I/O operações de leitura e gravação, que fornecem uma distribuição de sua I/O latência ao acompanhar o número total de I/O operações concluídas dentro de uma faixa de latência.

Para obter mais informações, consulte [Estatísticas detalhadas de desempenho do Amazon EBS](nvme-detailed-performance-stats.md).

## Recursos relacionados
<a name="ebs-io-resources"></a>

Para obter mais informações sobre as I/O características do Amazon EBS, consulte a seguinte apresentação do re:Invent: [Amazon EBS](https://www.youtube.com/watch?v=2wKgha8CZ_w): Designing for Performance.

# Configuração do Amazon EBS e RAID
<a name="raid-config"></a>

Com o Amazon EBS, é possível usar qualquer uma das configurações padrão RAID que é possível usar com um servidor bare metal tradicional, desde que essa configuração RAID específica tenha suporte no sistema operacional para sua instância. A razão disso é que todo o RAID é realizado no nível do software. 

Os dados dos volumes do Amazon EBS são replicados em vários servidores em uma zona de disponibilidade para evitar perdas de dados causadas por falha em qualquer componente único. Essa replicação torna os volumes do Amazon EBS 10 vezes mais confiável do que as unidades de disco típicas. Para obter mais informações, consulte [Atributos do Amazon EBS](https://aws.amazon.com/ebs/features/).

**Topics**
+ [Opções de configuração de RAID](#raid-config-options)
+ [Criar uma matriz RAID 0](#create-raid-array)
+ [Criar snapshots de volumes em uma matriz RAID](#ebs-snapshots-raid-array)

## Opções de configuração de RAID
<a name="raid-config-options"></a>

Criar uma matriz de RAID 0 permite atingir um nível de performance para um sistema de arquivos maior do que é possível provisionar em um único volume Amazon EBS. Use RAID 0 quando a performance de E/S for da máxima importância. Com o RAID 0, a E/S é distribuída entre os volumes em uma distribuição. Se você adicionar um volume, obterá a adição direta de throughput e IOPS. No entanto, lembre-se de que a performance da distribuição é limitada ao volume de pior performance do conjunto e que a perda de um único volume do conjunto resulta em perda de dados completa para a matriz.

O tamanho resultante de uma matriz de RAID 0 é a soma dos tamanhos dos volumes nela, e a largura de banda é a soma da largura de banda dos volumes nela. Por exemplo, dois volumes `io1` de 500 GiB, com 4.000 IOPS provisionadas cada, criarão uma matriz RAID 0 de 1.000 GiB com uma largura de banda disponível de 8.000 IOPS e 1.000 MiB/s de throughput.

**Importante**  
O RAID 5 e o RAID 6 não são recomendados para o Amazon EBS porque as operações de gravação de paridade desses modos de RAID consomem um pouco do IOPS disponível para os seus volumes. Dependendo da configuração de sua matriz de RAID, esses modos de RAID fornecem de 20 a 30% menos IOPS útil do que uma configuração de RAID 0. O maior custo também é um fator nesses modos de RAID; ao usar tamanhos e velocidades idênticos de volume, uma matriz de RAID 0 de 2 volumes pode superar uma matriz de RAID 6 de 4 volumes que custa duas vezes mais.  
Também não se recomenda o uso do RAID 1 com o Amazon EBS. O RAID 1 exige mais largura de banda do Amazon EC2 para o Amazon EBS do que nas configurações sem RAID, pois os dados são gravados em vários volumes simultaneamente. Além disso, o RAID 1 não fornece nenhuma melhoria na performance de gravação. 

## Criar uma matriz RAID 0
<a name="create-raid-array"></a>

Use o procedimento a seguir para criar a matriz RAID 0.

**Considerações**
+ Antes de executar esse procedimento, é necessário decidir o tamanho que sua matriz RAID 0 deve ter e quantas IOPS você deseja provisionar.
+ Crie volumes com valores de performance de IOPS e tamanho idênticos para sua matriz. Certifique-se de não criar uma matriz que exceda a largura de banda disponível de sua instância do EC2.
+ É necessário evitar inicializar a partir de um volume RAID. Se uma falha em um dos dispositivos ocorrer, talvez você não consiga iniciar o sistema operacional.

### Instâncias do Linux
<a name="create-raid-array-linux"></a>

**Para criar uma matriz de RAID 0 no Linux**

1. Crie os volumes do Amazon EBS para sua matriz. Para obter mais informações, consulte [Crie um volume do Amazon EBS.](ebs-creating-volume.md).

1. Anexe os volumes do Amazon EBS à instância na qual você deseja hospedar a matriz. Para obter mais informações, consulte [Anexar um volume do Amazon EBS a uma instância do Amazon EC2](ebs-attaching-volume.md).

1. Use o comando **mdadm** para criar um dispositivo RAID lógico dos volumes do Amazon EBS anexados recentemente. Substitua o número de volumes em sua matriz por *number\$1of\$1volumes* e os nomes dos dispositivos para cada volume na matriz (como `/dev/xvdf`) por *device\$1name*. Também é possível substituir *MY\$1RAID* pelo seu próprio nome exclusivo para a matriz.
**nota**  
É possível relacionar os dispositivos em sua instância com o comando **lsblk** para encontrar os nomes dos dispositivos.

   Para criar uma matriz de RAID 0, execute o seguinte comando (observe a opção `--level=0` para distribuir a matriz):

   ```
   [ec2-user ~]$ sudo mdadm --create --verbose /dev/md0 --level=0 --name=MY_RAID --raid-devices=number_of_volumes device_name1 device_name2
   ```
**dica**  
Se você receber o erro `mdadm: command not found`, use o seguinte comando para instalar o mdadm:`sudo yum install mdadm`.

1.  Reserve tempo para a matriz de RAID ser inicializada e sincronizada. É possível acompanhar o progresso dessas operações com o seguinte comando:

   ```
   [ec2-user ~]$ sudo cat /proc/mdstat
   ```

   A seguir está um exemplo de saída:

   ```
   Personalities : [raid0]
   md0 : active raid0 xvdc[1] xvdb[0]
         41910272 blocks super 1.2 512k chunks
   
   unused devices: <none>
   ```

   Em geral, é possível exibir informações detalhadas sobre sua matriz de RAID com o seguinte comando:

   ```
   [ec2-user ~]$ sudo mdadm --detail /dev/md0
   ```

   A seguir está um exemplo de saída:

   ```
   /dev/md0:
              Version : 1.2
        Creation Time : Wed May 19 11:12:56 2021
           Raid Level : raid0
           Array Size : 41910272 (39.97 GiB 42.92 GB)
         Raid Devices : 2
        Total Devices : 2
          Persistence : Superblock is persistent
   
          Update Time : Wed May 19 11:12:56 2021
                State : clean
       Active Devices : 2
      Working Devices : 2
       Failed Devices : 0
        Spare Devices : 0
   
           Chunk Size : 512K
   
   Consistency Policy : none
   
                 Name : MY_RAID
                 UUID : 646aa723:db31bbc7:13c43daf:d5c51e0c
               Events : 0
   
       Number   Major   Minor   RaidDevice State
          0     202       16        0      active sync   /dev/sdb
          1     202       32        1      active sync   /dev/sdc
   ```

1. Crie um sistema de arquivos em sua matriz de RAID e forneça a esse sistema de arquivos uma identificação para usar quando ao montá-lo posteriormente. Por exemplo, para criar um sistema de arquivos ext4 com a identificação *MY\$1RAID*, execute o seguinte comando:

   ```
   [ec2-user ~]$ sudo mkfs.ext4 -L MY_RAID /dev/md0
   ```

   Dependendo dos requisitos da aplicação ou das limitações do sistema operacional, é possível usar um tipo diferente de sistema de arquivos, como ext3 ou XFS (consulte a documentação do sistema de arquivos para saber o comando de criação de sistema de arquivos correspondente).

1. Para garantir que a matriz de RAID seja remontada automaticamente na inicialização, crie um arquivo de configuração para conter informações de RAID:

   ```
   [ec2-user ~]$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
   ```
**nota**  
Se você estiver usando uma distribuição do Linux que não seja o Amazon Linux, talvez seja necessário modificar esse comando. Por exemplo, talvez seja necessário colocar o arquivo em outro local, ou talvez seja necessário adicionar o parâmetro `--examine`. Para obter mais informações, execute **man mdadm.conf** em sua instância do Linux.

1. Crie uma nova imagem de ramdisk para pré-carregar corretamente os módulos de dispositivo de bloco para sua nova configuração de RAID:

   ```
   [ec2-user ~]$ sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
   ```

1. Crie um ponto de montagem para sua matriz RAID.

   ```
   [ec2-user ~]$ sudo mkdir -p /mnt/raid
   ```

1. Finalmente, monte o dispositivo RAID no ponto de montagem que você criou:

   ```
   [ec2-user ~]$ sudo mount LABEL=MY_RAID /mnt/raid
   ```

   O dispositivo RAID agora está pronto para uso.

1. (Opcional) Para montar esse volume do Amazon EBS em cada reinicialização do sistema, adicione uma entrada para o dispositivo ao arquivo `/etc/fstab`.

   1. Crie um backup do seu arquivo `/etc/fstab` para usar se você destruir ou excluir acidentalmente esse arquivo quando for editar.

      ```
      [ec2-user ~]$ sudo cp /etc/fstab /etc/fstab.orig
      ```

   1. Abra o arquivo `/etc/fstab` usando seu editor de texto favorito, como **nano** ou **vim**.

   1. Comente todas as linhas que começam com "`UUID=`" e, no final do arquivo, adicione uma nova linha para o volume de RAID usando o seguinte formato:

      ```
      device_label mount_point file_system_type fs_mntops fs_freq fs_passno
      ```

      Os três últimos campos dessa linha são as opções de montagem do sistema de arquivos, a frequência de despejo do sistema de arquivos e a ordem das verificações do sistema de arquivos feitas no momento da inicialização. Se você não souber quais valores devem ser, use os valores no exemplo abaixo (`defaults,nofail 0 2)`. Para obter mais informações sobre `/etc/fstab`, consulte a página **fstab** do manual (inserindo **man fstab** na linha de comando). Por exemplo, para montar o sistema de arquivos ext4 no dispositivo com a identificação MY\$1RAID no ponto de montagem `/mnt/raid`, adicione a seguinte entrada a `/etc/fstab`.
**nota**  
Se você pretende inicializar sua instância sem esse volume anexado (por exemplo, para que esse volume possa ser movido entre instâncias diferentes), adicione a opção de montagem `nofail` que permite à instância ser inicializada mesmo se houver erros na montagem do volume. Os derivados de Debian, como o Ubuntu, também devem adicionar a opção de montagem `nobootwait`.

      ```
      LABEL=MY_RAID       /mnt/raid   ext4    defaults,nofail        0       2
      ```

   1. Depois de adicionar a nova entrada a `/etc/fstab`, você precisa verificar se a sua entrada funciona. Execute o comando **sudo mount -a** para montar todos os sistemas de arquivos em `/etc/fstab`.

      ```
      [ec2-user ~]$ sudo mount -a
      ```

      Se o comando anterior não produzir um erro, o arquivo `/etc/fstab` será válido e o sistema de arquivos será montado automaticamente na próxima inicialização. Se o comando produzir erros, examine-os e tente corrigir seu `/etc/fstab`.
**Atenção**  
Erros no arquivo `/etc/fstab` podem impedir a inicialização de um sistema. Não encerre um sistema que tenha erros no arquivo `/etc/fstab`.

   1. (Opcional) Se você não souber corrigir os erros no `/etc/fstab`, sempre poderá restaurar seu arquivo `/etc/fstab` de backup com o seguinte comando.

      ```
      [ec2-user ~]$ sudo mv /etc/fstab.orig /etc/fstab
      ```

### Instâncias do Windows
<a name="create-raid-array-windows"></a>

**Para criar uma matriz de RAID 0 no Windows**

1. Crie os volumes do Amazon EBS para sua matriz. Para obter mais informações, consulte [Crie um volume do Amazon EBS.](ebs-creating-volume.md).

1. Anexe os volumes do Amazon EBS à instância na qual você deseja hospedar a matriz. Para obter mais informações, consulte [Anexar um volume do Amazon EBS a uma instância do Amazon EC2](ebs-attaching-volume.md).

1. Conecte-se à sua instância do Windows. Para obter mais informações, consulte [Conectar-se à sua instância do Windows](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html).

1. Abra um prompt de comando e digite o comando **diskpart**.

   ```
   diskpart
   
   Microsoft DiskPart version 6.1.7601
   Copyright (C) 1999-2008 Microsoft Corporation.
   On computer: WIN-BM6QPPL51CO
   ```

1. No prompt `DISKPART`, liste os discos disponíveis com o seguinte comando.

   ```
   DISKPART> list disk
   
     Disk ###  Status         Size     Free     Dyn  Gpt
     --------  -------------  -------  -------  ---  ---
     Disk 0    Online           30 GB      0 B
     Disk 1    Online            8 GB      0 B
     Disk 2    Online            8 GB      0 B
   ```

   Identifique os discos que deseja usar em sua matriz e anote os números dos discos.

1. <a name="windows_raid_disk_step"></a>Cada disco que deseja usar em sua matriz deve ser um disco dinâmico online que não contenha nenhum volume existente. Use as seguintes etapas para converter discos básicos em discos dinâmicos e excluir todos os volumes existentes.

   1. Selecione um disco que deseja usar em sua matriz com o seguinte comando, substituindo *n* pelo número do disco.

      ```
      DISKPART> select disk n
      
      Disk n is now the selected disk.
      ```

   1. Se o disco selecionado estiver listado como `Offline`, deixe-o online executando o comando **online disk**.

   1. Se o disco selecionado não tiver um asterisco na coluna `Dyn` na saída do comando **list disk** anterior, você precisará convertê-lo em um disco dinâmico.

      ```
      DISKPART> convert dynamic
      ```
**nota**  
Se você receber um erro de que o disco é protegido contra gravação, desmarque o sinalizador de somente leitura no comando **ATTRIBUTE DISK CLEAR READONLY** e tente novamente a conversão do disco dinâmico.

   1. Use o comando **detail disk** para verificar se há volumes existentes no disco selecionado.

      ```
      DISKPART> detail disk
      
      XENSRC PVDISK SCSI Disk Device
      Disk ID: 2D8BF659
      Type   : SCSI
      Status : Online
      Path   : 0
      Target : 1
      LUN ID : 0
      Location Path : PCIROOT(0)#PCI(0300)#SCSI(P00T01L00)
      Current Read-only State : No
      Read-only  : No
      Boot Disk  : No
      Pagefile Disk  : No
      Hibernation File Disk  : No
      Crashdump Disk  : No
      Clustered Disk  : No
      
        Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
        ----------  ---  -----------  -----  ----------  -------  ---------  --------
        Volume 2     D   NEW VOLUME   FAT32  Simple      8189 MB  Healthy
      ```

      Anote todos os números de volumes no disco. Neste exemplo, o número do volume é 2. Se não houver volumes, ignore a próxima etapa.

   1. (Necessário somente se foram encontrados volumes na etapa anterior) Selecione e exclua todos os volumes existentes no disco que você identificou na etapa anterior.
**Atenção**  
Isso destrói todos os dados existentes no volume. 

      1. Selecione o volume, substituindo *n* pelo número do volume.

         ```
         DISKPART> select volume n
         Volume n is the selected volume.
         ```

      1. Exclua o volume.

         ```
         DISKPART> delete volume
         
         DiskPart successfully deleted the volume.
         ```

      1. Repita essas subetapas para cada volume que você precisa excluir no disco selecionado.

   1. Repita [Step 6](#windows_raid_disk_step) para cada disco que deseja usar em sua matriz.

1. Verifique se os discos que você deseja usar agora são dinâmicos. Nesse caso, estamos usando discos 1 e 2 para o volume RAID.

   ```
   DISKPART> list disk
   
     Disk ###  Status         Size     Free     Dyn  Gpt
     --------  -------------  -------  -------  ---  ---
     Disk 0    Online           30 GB      0 B
     Disk 1    Online            8 GB      0 B   *
     Disk 2    Online            8 GB      0 B   *
   ```

1. Crie a matriz de RAID. No Windows, um volume de RAID 0 é referido como um volume distribuído.

   Para criar uma matriz de volume distribuído nos discos 1 e 2, use o seguinte comando (observe a opção `stripe` para distribuir a matriz):

   ```
   DISKPART> create volume stripe disk=1,2
   DiskPart successfully created the volume.
   ```

1. Verifique seu novo volume.

   ```
   DISKPART> list volume
   
     DISKPART> list volume
   
     Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
     ----------  ---  -----------  -----  ----------  -------  ---------  --------
     Volume 0     C                NTFS   Partition     29 GB  Healthy    System
     Volume 1                      RAW    Stripe        15 GB  Healthy
   ```

   Observe que a coluna `Type` agora indica que o Volume 1 é um volume `stripe`.

1. Selecione e formate seu volume para que você possa começar a usá-lo.

   1. Selecione o volume que você deseja formatar, substituindo *n* pelo número do volume.

      ```
      DISKPART> select volume n
      
      Volume n is the selected volume.
      ```

   1. Formate o volume.
**nota**  
Para executar uma formatação completa, omita a opção `quick`.

      ```
      DISKPART> format quick recommended label="My new volume"
      
        100 percent completed
      
      DiskPart successfully formatted the volume.
      ```

   1. Atribua uma letra de unidade disponível ao seu volume.

      ```
      DISKPART> assign letter f
      
      DiskPart successfully assigned the drive letter or mount point.
      ```

   Seu novo volume agora está pronto para uso.

## Criar snapshots de volumes em uma matriz RAID
<a name="ebs-snapshots-raid-array"></a>

Se você deseja fazer backup dos dados nos volumes do EBS em um array RAID usando snapshots, verifique se os snapshots estão consistentes. Isso ocorre porque os snapshots desses volumes são criados de maneira independente. Restaurar os volumes do EBS em uma matriz RAID de snapshots que não estão sincronizados prejudicaria a integridade da matriz.

Para criar um conjunto consistente de snapshots para a matriz RAID, use [snapshots de vários volumes do EBS](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshots.html). Com os snapshots de vários volumes, é possível tirar snapshots de momentos específicos, coordenados por dados e consistentes com falhas em vários volumes do EBS associados a uma instância do EC2. Não é necessário interromper a instância para coordenar entre volumes a fim de garantir consistência, pois os snapshots são tirados automaticamente em vários volumes do EBS. Para obter mais informações, consulte as etapas para criar snapshots multivolumes em [Criar snapshots do Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-snapshot.html).

# Avaliar a performance de volumes do Amazon EBS
<a name="benchmark_procedures"></a>

Você pode testar o desempenho dos volumes do Amazon EBS simulando I/O cargas de trabalho. O processo é o seguinte:

1. Execute uma instância otimizada para EBS.

1. Crie novos volumes do EBS.

1. Anexe os volumes à sua instância otimizada para EBS.

1. Configure e monte o dispositivo de blocos.

1. Instale uma ferramenta para avaliar o I/O desempenho.

1. Compare o I/O desempenho de seus volumes.

1. Exclua os volumes e encerre sua instância para não continuar a ser cobrado.

**Importante**  
Alguns procedimentos resultam na destruição de dados existentes em volumes do EBS que você compara. Os procedimentos de comparação são destinados ao uso em volumes criados especialmente para fins de teste, não volumes de produção.

## Configurar a instância
<a name="set_up_instance"></a>

Para obter a performance ideal em volumes do EBS, recomendamos que você use uma instância otimizada para EBS. As instâncias otimizadas para EBS fornecem largura de banda dedicada entre o Amazon EC2 e o Amazon EBS, com especificações que dependem do tipo de instância.

Para criar uma instância otimizada para EBS, escolha **Iniciar como instância otimizada para EBS** ao executar a instância usando o console do Amazon EC2 ou especifique **--ebs-optimized** ao utilizar a linha de comando. Certifique-se de selecionar um tipo de instância que ofereça suporte a essa opção.

### Configurar volumes de Provisioned IOPS SSD ou Finalidade geral (SSD)
<a name="setupPIOPS"></a>

Para criar volumes SSD de IOPS provisionadas (`io1` e `io2`) ou SSD de uso geral (`gp2` e `gp3`) usando o console do Amazon EC2, em **Volume type** (Tipo de volume), escolha **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 geral (gp2)) ou **General Purpose SSD (gp3)** (SSD de uso geral (gp3). Na linha de comando, especifique `io1`, `io2`, `gp2` ou `gp3` para o parâmetro **--volume-type**. Para `io1``io2`, e `gp3` volumes, especifique o número de I/O operações por segundo (IOPS) para o **--iops** parâmetro. Para obter mais informações, consulte [Tipos de volume do Amazon EBS](ebs-volume-types.md) e [Crie um volume do Amazon EBS.](ebs-creating-volume.md).

(*Somente para instâncias do Linux*) Para os testes de exemplo, recomendamos criar uma matriz RAID 0 com 6 volumes para garantir um alto nível de performance. Como você será cobrado por gigabytes provisionados (e pelo número de IOPS provisionadas para volumes de io1, io2 e gp3), e não pelo número de volumes, não há nenhum custo adicional para criar vários volumes menores e utilizá-los para criar um conjunto de stripes. Se você estiver utilizando o Oracle Orion para comparar seus volumes, ele poderá simular a segmentação da mesma forma que o ASM do Oracle; portanto, recomendamos que você deixe a segmentação a cargo do Orion. Se você estiver usando uma ferramenta de comparação diferente, precisará fazer o stripe de volumes por conta própria.

Para obter mais informações sobre como criar uma matriz RAID 0, consulte [Criar uma matriz RAID 0](raid-config.md#create-raid-array).

### Configurar volumes HDD otimizado para throughput (`st1`) ou HDD a frio (`sc1`)
<a name="set_up_hdd"></a>

Para criar um volume `st1`, escolha **Throughput Optimized HDD** (HDD otimizado para throughput) ao criar o volume usando o console do Amazon EC2 ou especifique **--type `st1`** ao usar a linha de comando. Para criar um volume `sc1`, escolha Cold HDD (HDD a frio) ao criar o volume usando o console do Amazon EC2 ou especifique **--type `sc1`** ao usar a linha de comando. Para obter informações sobre a criação de volumes do EBS, consulte [Crie um volume do Amazon EBS.](ebs-creating-volume.md). Para obter informações sobre como anexar esses volumes à sua instância, consulte [Anexar um volume do Amazon EBS a uma instância do Amazon EC2](ebs-attaching-volume.md).

(*somente instâncias Linux*) AWS fornece um modelo JSON para uso CloudFormation que simplifica esse procedimento de configuração. Acesse o [modelo](https://s3.amazonaws.com/cloudformation-examples/community/st1_cloudformation_template.json) e salve-o como um arquivo JSON. CloudFormation permite que você configure suas próprias chaves SSH e oferece uma maneira mais fácil de configurar um ambiente de teste de desempenho para avaliar `st1` volumes. O modelo cria uma instância de geração atual e um volume `st1` de 2 TiB e anexa o volume à instância em `/dev/xvdf`. 

**(*Somente instâncias do Linux*) Para criar um volume de HDD usando o modelo**

1. Abra o CloudFormation console em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Selecione **Criar Stack**.

1. Escolha **Upload a Template to Amazon S3** e selecione o modelo JSON que você obteve anteriormente.

1. Dê à sua pilha um nome como “ebs-perf-testing” e selecione um tipo de instância (o padrão é r3.8xlarge) e uma chave SSH.

1. Selecione **Next** duas vezes e, em seguida, escolha **Create Stack**.

1. Depois que o status da sua nova pilha passar de **CREATE\$1IN\$1PROGRESS** para **COMPLETE**, escolha **Saídas** para obter a entrada de DNS público da sua nova instância, que terá um volume `st1` de 2 TiB anexado a ela.

1. Usando SSH, conecte-se à nova pilha como usuário **ec2-user**, com o nome de host obtido da entrada de DNS na etapa anterior. 

1. Vá para [Instalar ferramentas de comparação](#install_tools).

## Instalar ferramentas de comparação
<a name="install_tools"></a>

A tabela a seguir lista algumas das ferramentas que é possível usar para comparar a performance de volumes do EBS.

### Instâncias do Linux
<a name="install_tools-linux"></a>


| Ferramenta | Descrição | 
| --- | --- | 
|  fio  |  Para avaliar o I/O desempenho. Observe que **fio** tem uma dependência sobre `libaio-devel`. Execute o comando a seguir para instalar o **fio** no Amazon Linux: <pre>$ sudo yum install -y fio</pre> Para instalar **fio** no Ubuntu, execute o seguinte comando: <pre>sudo apt-get install -y fio</pre>  | 
|  [Ferramenta de calibração do Oracle Orion](https://docs.oracle.com/cd/E18283_01/server.112/e16638/iodesign.htm#BABFCFBC)  |  Para calibrar o I/O desempenho dos sistemas de armazenamento a serem usados com bancos de dados Oracle.  | 

### Instâncias do Windows
<a name="install_tools-windows"></a>


| Ferramenta | Description | 
| --- | --- | 
| [DiskSpd](https://github.com/microsoft/diskspd/releases) | DiskSpd é uma ferramenta de desempenho de armazenamento das equipes de engenharia de infraestrutura do Windows, Windows Server e Cloud Server da Microsoft. Ele está disponível para download em [https://github.com/Microsoft/diskspd/releases](https://github.com/Microsoft/diskspd/releases). Depois de fazer download do arquivo executável `diskspd.exe`, abra um prompt de comando com direitos administrativos (escolhendo “Executar como administrador”) e navegue até o diretório onde você copiou o arquivo `diskspd.exe`.  Copie o arquivo executável `diskspd.exe` desejado da pasta executável apropriada, `amd64fre`, `armfre` ou `x86fre)` para um caminho curto e simples, como `C:\DiskSpd`. Na maioria dos casos, você desejará a versão de 64 bits DiskSpd do da `amd64fre` pasta.  O código-fonte do DiskSpd está hospedado GitHub em: [https://github.com/Microsoft/diskspd](https://github.com/Microsoft/diskspd). | 
|  CrystalDiskMark  | CrystalDiskMark é um software simples de benchmark de disco. Ele está disponível para download em [https://crystalmark. info/en/software/crystaldiskmark](https://crystalmark.info/en/software/crystaldiskmark/)/. | 

Essas ferramentas de avaliação oferecem suporte a uma ampla variedade de parâmetros de teste. Use os comandos que aproximam workloads às quais seus volumes oferecerão suporte. Os comandos fornecidos abaixo servem como exemplos para ajudá-lo a começar a usar.

## Escolha o comprimento da fila de volume
<a name="UnderstandingQueueLength"></a>

Escolha do melhor comprimento da fila de volume com base em sua workload e tipo de volume.

### Tamanho da fila em volumes baseados em SSD
<a name="SSD_queue"></a>

Para determinar o tamanho ideal da fila para sua workload em volumes baseados em SSD, recomendamos focar em um tamanho da fila de 1 para cada 1.000 IOPS disponíveis (linha de base para volumes de Finalidade geral (SSD) e a quantidade provisionada para volumes de Provisioned IOPS SSD). Depois, é possível monitorar a performance da aplicação e ajustar o valor com base nos requisitos da aplicação.

Aumentar o comprimento da fila é benéfico até que você atinja as IOPS provisionadas, a throughput ou o valor ideal de comprimento da fila de sistema, que é atualmente configurado como 32. Por exemplo, para um volume com 3.000 IOPS provisionadas deve-se ter como meta um comprimento de fila 3. É necessário experimentar ajustar esses valores para cima ou para baixo para ver qual funciona melhor para sua aplicação.

### Tamanho da fila em volumes baseados em HDD
<a name="HDD_queue"></a>

Para determinar o tamanho ideal da fila para sua workload em volumes baseados em HDD, recomendamos que você foque em um comprimento da fila pelo menos 4 ao executar operações de E/S sequenciais de 1 MiB. Depois, é possível monitorar a performance de seu aplicativo e ajustar esse valor com base nos requisitos do aplicativo. Por exemplo, um `st1` volume de 2 TiB com taxa de transferência intermitente de 500 MiB/s e IOPS de 500 deve ter como alvo um tamanho de fila de 4, 8 ou 16 enquanto executa 1.024 KiB, 512 KiB ou 256 KiB sequencialmente, respectivamente. I/Os É necessário experimentar ajustar esses valores para cima ou para baixo para ver qual funciona melhor para sua aplicação.

## Desabilitar estados C
<a name="cstates"></a>

Antes de executar a referência, desative os estados C do processador. Desativar os núcleos temporariamente em uma CPU compatível pode entrar em um estado C para economizar energia. Quando o núcleo é chamado para retomar o processamento, leva um determinado tempo até o núcleo voltar a funcionar por completo. Esta latência pode interferir nas rotinas de comparação do processador. Para obter mais informações sobre estados C e quais tipos de instância do EC2 são compatíveis a eles, consulte [Controle de estado do processador para sua instância do EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html).

### Instâncias do Linux
<a name="cstates-linux"></a>

É possível desativar os estados C no Amazon Linux, RHEL e CentOS da seguinte maneira:

1. Obtenha o número de estados C.

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

1. Desative os estados C de c1 a cN. De preferência, os núcleos devem estar no estado c0.

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

### Instâncias do Windows
<a name="cstates-windows"></a>

É possível desativar os estados C no Windows da seguinte maneira:

1. Em PowerShell, obtenha o esquema de energia ativa atual.

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

1. Obtenha o GUID do esquema de energia.

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

1. Obtenha o GUID da configuração de energia.

   ```
   (Get-WmiObject -class Win32_PowerSetting -Namespace "root\cimv2\power" -Filter "ElementName='Processor idle disable'").InstanceID                  
   ```

1. Obtenha o GUID do subgrupo da configuração de energia.

   ```
   (Get-WmiObject -class Win32_PowerSettingSubgroup -Namespace "root\cimv2\power" -Filter "ElementName='Processor power management'").InstanceID
   ```

1. Desative os estados C definindo o valor do índice como 1. Um valor igual a 0 indica que os estados C estão desativados.

   ```
   powercfg /setacvalueindex <power_scheme_guid> <power_setting_subgroup_guid> <power_setting_guid> 1
   ```

1. Defina o esquema ativo para garantir que as configurações sejam salvas.

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

## Benchmarking de performance
<a name="perform_benchmarking"></a>

Os seguintes procedimentos descrevem comandos de comparação para vários tipos de volumes do EBS. 

Execute os seguintes comandos em uma instância otimizada para EBS com volumes do EBS anexados. Se os volumes do EBS tiverem sido criados de snapshots, inicialize-os antes do benchmarking. Para obter mais informações, consulte [Inicialize manualmente o volume após a criação](initalize-volume.md#ebs-initialize).

**dica**  
Você pode usar os histogramas de I/O latência fornecidos pelas estatísticas detalhadas de desempenho do EBS para comparar a distribuição do I/O desempenho em seus testes de benchmarking. Para obter mais informações, consulte [Estatísticas detalhadas de desempenho do Amazon EBS](nvme-detailed-performance-stats.md).

Após terminar de testar seus volumes, consulte os seguintes tópicos para obter ajuda para limpar: [Excluir um volume de Amazon EBS](ebs-deleting-volume.md) e [Encerrar a instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html).

### Avalie a performance dos volumes de Provisioned IOPS SSD e Finalidade geral (SSD)
<a name="piops_benchmarking"></a>

#### Instâncias do Linux
<a name="piops_benchmarking-linux"></a>

Execute **fio** na matriz RAID 0 que você criou.

O seguinte comando executa operações de gravação aleatórias 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
```

O seguinte comando executa operações de leitura aleatórias 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 obter mais informações sobre como interpretar os resultados, consulte este tutorial: [Inspeção de performance de E/S de disco com fio](https://www.linux.com/training-tutorials/inspecting-disk-io-performance-fio/).

#### Instâncias do Windows
<a name="piops_benchmarking-windows"></a>

Execute **DiskSpd** no volume que você criou.

O comando a seguir executará um I/O teste aleatório de 30 segundos usando um arquivo de teste de 20 GB localizado na `C:` unidade, com uma taxa de gravação de 25% e 75% de leitura e um tamanho de bloco de 8K. Ele usará oito threads de operador, cada um com quatro operações de E/S pendentes, e uma semente de valor de entropia de gravação de 1 GB. Os resultados do teste serão salvos em um arquivo de texto chamado `DiskSpeedResults.txt`. Esses parâmetros simulam uma workload OLTP do SQL Server.

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

Para obter mais informações sobre como interpretar os resultados, consulte este tutorial: [Inspecionando o desempenho de E/S do disco com](https://sqlperformance.com/2015/08/io-subsystem/diskspd-test-storage) o Disk. SPd

### Benchmark de volumes `st1` e `sc1` (instâncias do Linux)
<a name="hdd_benchmarking"></a>

Execute **fio** em seu volume do `st1` ou `sc1`.

**nota**  
Antes de executar esses testes, defina o buffer I/O em sua instância conforme descrito em. [Aumentar a leitura antecipada para workloads com muitas operações de leitura e alta throughput em `st1` e `sc1` (*somente instâncias do Linux*)](ebs-performance.md#read_ahead) 

O seguinte comando executa operações de leitura sequenciais de 1 MiB em um dispositivo de blocos `st1` anexado (por exemplo, `/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
```

O seguinte comando executa operações de gravação sequenciais de 1 MiB em um dispositivo de blocos `st1` anexado:

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

Algumas workloads executam uma combinação de leituras e gravações sequenciais para diferentes partes de dispositivo de blocos. Para comparar essa workload, recomendamos que você use trabalhos de **fio** separados, simultâneos, para leituras e gravações, e use a opção **fio** `offset_increment` para focar em locais diferentes de dispositivo de blocos para cada trabalho. 

Executar essa workload é um pouco mais complicado do que uma workload de gravação ou leitura sequenciais. Use um editor de texto para criar um arquivo de trabalho de fio, chamado de `fio_rw_mix.cfg` neste exemplo, que contém o seguinte:

```
[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
```

Em seguida, execute o seguinte comando:

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

Para obter mais informações sobre como interpretar os resultados, consulte este tutorial: [Inspecionando o I/O desempenho do disco com fio](https://www.linux.com/training-tutorials/inspecting-disk-io-performance-fio/).

Vários trabalhos de **fio** para E/S direta, mesmo que usando operações de leitura ou gravação sequenciais, podem resultar em uma throughput mais baixa do que o esperado para volumes `st1` e `sc1`. Recomendamos que você use uma I/O tarefa direta e use o `iodepth` parâmetro para controlar o número de I/O operações simultâneas.