Características e monitoramento de E/S do Amazon EBS - Amazon EBS

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

Características e monitoramento de E/S do Amazon EBS

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 do end-to-end cliente de uma operação de E/S, em outras palavras, o tempo decorrido entre o envio de uma E/S para o EBS e o recebimento de uma confirmação do EBS de que a leitura ou gravação de E/S foi concluída. 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 de E/S 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 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.

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. Outra causa possível para a ausência da IOPS prevista é que você não está conduzindo E/S suficientes para volumes do EBS.

Monitore as características de E/S usando CloudWatch

Você pode monitorar essas características de E/S com as métricas de volume de cada CloudWatch volume. Métricas importantes a serem consideradas incluem o seguinte:

  • VolumeStalledIOCheck

  • BurstBalance

  • VolumeReadBytes | VolumeWriteBytes

  • VolumeReadOps | VolumeWriteOps

  • VolumeQueueLength

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) dependendo do volume do EBS poder ou não realizar as operações de E/S. Essa verificação detecta problemas subjacentes na infraestrutura do Amazon EBS, como os seguintes:

  • Problemas de hardware ou software nos subsistemas de armazenamento subjacentes aos volumes do EBS

  • Problemas de hardware no host físico que afetam a acessibilidade dos volumes do EBS a partir da instância do EC2

  • Problemas de conectividade entre a instância e os volumes do EBS

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

Você pode medir a latência de E/S do armazenamento do Amazon EBS usando VolumeReadOps, VolumeWriteOps, VolumeTotalReadTime e VolumeTotalWriteTime. Você pode usar a expressão a seguir para monitorar a latência média de E/S do seu volume:

Average I/O latency in ms/op = (VolumeTotalReadTime + VolumeTotalWriteTime) / (VolumeReadOps + VolumeWriteOps)

Se a latência de E/S for maior de que você precisa, verifique o IOPS gerado para se certificar de que a aplicação não está tentando gerar mais IOPS do que você provisionou. Você pode usar a expressão a seguir para monitorar o IOPS médio gerado no volume:

Estimated average IOPS in ops/s = (Sum(VolumeReadOps) + Sum(VolumeWriteOps)) / (Period - Sum(VolumeIdleTime))

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

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 CloudWatch Métricas da Amazon para Amazon EBS e Métricas do Amazon EBS para instâncias baseadas Nitro.

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.