Características e monitoramento de E/S - Amazon Elastic Compute Cloud

Características e monitoramento de E/S

Em uma determinada configuração de volume, certas características de E/S controlam a performance dos volumes do EBS. Volumes baseados em SSD – SSD de uso geral (gp2 e gp3) e SSD de IOPS provisionados (io1 e io2) – geram performance consistente quando uma operação de E/S for aleatória ou sequencial. Volumes baseados em HDD – HDD otimizado para throughput (st1) e HDD a frio (sc1) – geram performance ideal somente quando as operações de E/S são grandes e sequenciais. Para entender como os volumes de SSD e HDD serão executados em sua aplicação, é importante saber sobre as conexões entre a demanda no volume, a quantidade de IOPS disponível para ele, o tempo necessário para que uma operação de E/S seja concluída e os limites de throughput do volume.

IOPS

IOPS é uma unidade de medida que representa operações de entrada/saída por segundo. As operações são medidas em KiB, e a tecnologia de disco subjacente determina a quantidade máxima de dados que um tipo de volume conta como uma única E/S. O tamanho de E/S é limitado a 256 KiB para volumes SSD e 1.024 KiB para volumes HDD porque os volumes SSD lidam com E/S pequena ou aleatória de forma muito mais eficiente do que os volumes HDD.

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

Tipo de volume Tamanho máximo de E/S Operações de E/S da sua aplicação Número de IOPS Observações
SSD 256 KiB 1 x operação de E/S de 1024 KiB 4 (1.024 ÷ 256 = 4) O Amazon EBS divide a operação de E/S de 1.024 em quatro operações menores de 256 KiB.
8 x operações de E/S sequenciais de 32 KiB 1 (8 x 32 = 256) O Amazon EBS mescla as oito operações sequenciais de E/S de 32 KiB em uma única operação de 256 KiB.
8 operações de E/S aleatórias de 32 KiB 8 O Amazon EBS conta as operações de E/S aleatórias separadamente.
HDD 1.024 KiB 1 x operação de E/S de 1024 KiB 1 A operação de E/S já é igual ao tamanho máximo de E/S. Ela não é mesclada ou dividida.
8 x operações de E/S sequenciais de 128 KiB 1 (8 x 128 = 1.024) O Amazon EBS mescla as oito operações sequenciais de E/S de 128 KiB em uma única operação de E/S de 1024 KiB.
8 operações de E/S aleatórias de 32 KiB 8 O Amazon EBS conta as operações de E/S aleatórias separadamente.

Portanto, quando você cria um volume baseado em SSD com suporte a 3.000 IOPS (provisionando um volume de Provisioned IOPS SSD com 3.000 IOPS ou dimensionando um volume de Finalidade geral (SSD) com 1,000 GiB), e você o anexa a uma instância otimizada para EBS que pode fornecer largura de banda suficiente, é possível transferir até 3.000 E/S de dados por segundo, com a throughput determinada pelo tamanho de E/S.

Comprimento e latência da fila de volume

A fila de volume é o número de solicitações de E/S pendentes para um dispositivo. A latência é o tempo real, de ponta a ponta, do cliente para uma operação de E/S, ou seja, o tempo decorrido entre o envio de um E/S para o EBS e o recebimento de uma confirmação do EBS de que a leitura ou a gravação de E/S foram concluídas. O comprimento da fila deve ser adequadamente calibrado com o tamanho e a latência de E/S para evitar criar gargalos no sistema operacional convidado ou no link de rede para 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 workload não estiver fornecendo solicitações de E/S suficientes para usar integralmente a performance disponível para seu volume do EBS, o volume pode não fornecer a IOPS ou a throughput que você provisionou.

As aplicações com transações intensivas são sensíveis ao aumento de latência de E/S e são adequadas 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. Se você gerar consistentemente mais IOPS para um volume do que ele dispõe, poderá causar o aumento da latência de E/S.

As aplicações com throughput intensiva são menos sensíveis ao aumento da latência de E/S e são bem adequadas 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

Para volumes baseados em SSD, se o tamanho de E/S for muito grande, será possível ter um número menor de IOPS do que provisionou, porque você está chegando ao limite de throughput do volume. Por exemplo, um volume gp2 com menos de 1.000 GiB com créditos de expansão disponíveis tem um limite de IOPS de 3.000 e um limite de volume de throughput de 250 MiB/s. Se você estiver usando um tamanho de E/S de 256 KiB, o volume atingirá o limite da throughput a 1000 IOPS (1000 x 256 KiB = 250 MiB). Para E/S de tamanhos menores (por exemplo, 16 KiB), esse mesmo volume pode sustentar 3.000 IOPS porque a throughput está bem abaixo de 250 MiB/s. Estes exemplos supõem que a E/S do volume não atinge os limites de throughput 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.

Para operações menores de E/S, poderá surgir um valor de IOPS mais alto do que provisionado conforme medido dentro de 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 workload usar E/S sequenciais em volumes st1 e sc1 baseados em HDD, será possível ter um número de IOPS superior ao esperado conforme medido dentro de sua instância. Isso acontece quando o sistema operacional da instância funde operações de E/S sequenciais e as conta em unidades de 1.024 KiB. Se sua workload usar operações de E/S pequenas ou aleatórias, será possível ter uma throughput menor do que o esperado. Isso porque nós contamos cada E/S aleatória, não sequencial, para a contagem total de IOPS, que podem levá-lo a atingir o limite de volume de IOPS mais cedo do que o esperado.

Importante

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ê sempre deve usar uma instância otimizada para EBS da geração atual (ou uma que inclua a conectividade de rede 10 Gb/s) para a performance ideal. Para obter mais informações, consulte Instâncias otimizadas para Amazon EBS. Outra causa possível para a ausência da IOPS prevista é que você não está conduzindo E/S suficientes para volumes do EBS.

Monitorar as características de E/S usando o CloudWatch

É possível monitorar essas características de E/S com as métricas de volume do CloudWatch de cada volume. Métricas importantes a serem consideradas incluem o seguinte:

  • BurstBalance

  • VolumeReadBytes

  • VolumeWriteBytes

  • VolumeReadOps

  • VolumeWriteOps

  • VolumeQueueLength

BurstBalance exibe o saldo do bucket de intermitência para os volumes gp2, st1 e sc1 como um porcentual do saldo restante. Quando seu bucket de intermitência é esgotado, a E/S de volume (para volumes gp2) ou a throughput de volume (para volumes st1 e sc1) são limitadas à 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 Métricas do Amazon EBS e Métricas do Amazon EBS para instâncias baseadas em Nitro.

Os volumes st1 e sc1 baseados em HDD são projetados para ter performance melhor com workloads que aproveitam o tamanho de E/S máximo de 1.024 KiB. Para determinar o tamanho médio de E/S de seu volume, divida VolumeWriteBytes por VolumeWriteOps. O mesmo cálculo se aplica a operações de leitura. Se o tamanho de E/S médio ficar abaixo de 64 KiB, aumentando o tamanho de operações de E/S enviadas para um volume st1 ou sc1 o volume deve melhorar a performance.

nota

Se o tamanho médio de E/S for igual ou próximo de 44 KiB, será possível usar uma instância ou um kernel sem suporte para descritores indiretos. Qualquer kernel do Linux versão 3.8 ou posterior tem esse suporte, bem como qualquer instância da geração atual.

Se a latência de E/S for maior de que você precisa, verifique VolumeQueueLength para se assegurar de que a aplicação não está tentando gerar mais IOPS do que você provisionou. Se a aplicação exigir um número maior de IOPS do que seu volume pode fornecer, será necessário considerar usar um volume de gp2 maior com um nível de performance básica superior ou um volume de io1 ou io2 com mais IOPS provisionadas para atingir latências mais rápidas.

Recursos relacionados

Para obter mais informações sobre as características de E/S do Amazon EBS, consulte a seguinte apresentação re:Invent: Amazon EBS: Como projetar visando a performance.