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 (
gp2egp3) e SSD de IOPS provisionadas (io1eio2) geram desempenho 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 desempenho 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.
Tópicos
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 KiB 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 compatível com 3.000 IOPS (seja provisionando um volume io1 ou io2 com 3.000 IOPS ou dimensionando um volume gp2 em 1.000 GiB, ou usando um volume gp3), e anexa-o 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 throughput determinado pelo tamanho da 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. 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.
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.
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.
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.
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) dependendo do volume do EBS poder ou não realizar as operações de E/S.
Se a métrica VolumeStalledIOCheck falhar, você poderá esperar a AWS resolver o problema ou pode tomar medidas, como substituir os volumes afetados ou parar e reiniciar a instância à qual o volume está anexado. 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 E/S 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.
Monitorar latência de E/S para um volume
Você pode 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 Injeção de latência no 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 degradações de desempenho de armazenamento.
Se a latência de E/S estiver maior do que o necessário, verifique se sua aplicação não está tentando gerar mais IOPS ou throughput do que o provisionado para o seu volume. Você pode 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 um desempenho inferior às IOPS provisionadas ou aos limites de throughput do seu volume. Para identificar se seu volume apresenta surtos de desempenho em um determinado minuto, você pode usar as métricas VolumeIOPSExceededCheck e VolumeThroughputExceededCheck. Você pode monitorar essas métricas para determinar se seu workload tentou consistentemente gerar IOPS ou throughput maiores do que o desempenho provisionado do seu volume em um determinado minuto. Se as IOPS geradas em qualquer segundo dentro de um minuto exceder consistentemente o desempenho de IOPS provisionado do seu volume, a métrica VolumeIOPSExceededCheck retornará 1. Se o throughput gerado em qualquer segundo dentro de um minuto exceder consistentemente o desempenho de throughput provisionado do seu volume, a métrica VolumeThroughputExceededCheck retornará 1. Se as IOPS e o throughput gerados estiverem dentro do desempenho provisionado 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,io2ouio1que seja provisionado com IOPS suficientes para atingir a latência necessária -
Um volume
gp2maior 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.
Monitorar o saldo de bucket de intermitência para volumes gp2, st1 e sc1
BurstBalance exibe o saldo do bucket de expansão 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 CloudWatch para o Amazon EBS e Métricas do Amazon EBS para instâncias baseadas Nitro.
Monitorar estatísticas de desempenho de E/S em tempo real
Você pode acessar, em tempo real, estatísticas de desempenho 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 as IOPS ou para verificar se as operações de E/S 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 o desempenho da sua aplicação. As estatísticas detalhadas de desempenho também incluem histogramas para operações de E/S de leitura e gravação, que fornecem uma distribuição de sua latência de E/S ao acompanhar o número total de operações de E/S concluídas dentro de uma faixa de latência.
Para obter mais informações, consulte Estatísticas detalhadas de desempenho do Amazon EBS.
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