Por que meu volume SC1 ou ST1 do EBS não atinge o desempenho de throughput nominal?
Meu volume ST1 ou SC1 do Amazon Elastic Block Store (Amazon EBS) não atinge o desempenho de throughput listado na documentação da AWS.
Breve descrição
Se você usa volumes HDD do Amazon EBS, como SC1 e ST1, analise os seguintes pontos:
- Esses volumes sempre usam um token de E/S de 1024 KiB, independentemente do tamanho real de E/S usado pela workload na instância. Se o tamanho real de E/S da workload do aplicativo for definido como 16 KiB, o volume ainda usa todo o tamanho de 1024 KiB do token de E/S. Isso desperdiça a maior parte do espaço do token. Para maximizar a eficiência, preencha os 1024 KiB inteiros.
- Quando o tamanho de E/S de uma workload sequencial é maior que 32 KiB, o Amazon EBS sempre mescla as E/S em uma única operação de E/S de 1024 KiB. Essa fusão preenche todo o tamanho do token.
- Quando o tamanho de E/S é menor que 32 KiB ou se a workload é aleatória, o Amazon EBS não mescla as E/S em 1024 KiB. No entanto, o Amazon EBS ainda usa todo o tamanho do token de 1024 KiB. Isso deixa a maior parte do espaço dentro do token vazia. Como as E/S não são mescladas, a instância usa mais IOPS para enviar a mesma quantidade de dados para o volume. Isso reduz o equilíbrio de expansão, mesmo que o throughput seja menor do que o valor da linha de base.
Resolução
Para permitir que seus volumes ST1 e SC1 do EBS atinjam o throughput nominal máximo, siga estas etapas:
- Configure seu aplicativo para usar um tamanho de E/S maior que 32 KiB.
- Verifique se seu aplicativo usa workload sequencial.
Exemplo
Ao calcular o throughput, use a seguinte fórmula:
Throughput = tamanho de E/S * IOPS
Se o tamanho de E/S for menor que 32 KiB, o volume atingirá seu limite de IOPS e irá controlar a utilização do throughput. Quando isso acontece, o volume nunca atinge seu desempenho nominal do throughput.
Por exemplo, suponha que você defina o tamanho de E/S para 16 KiB e envie 3 MiB/s de dados:
3 MiB/s/16KiB = 192 IOPS
Quando você define o tamanho de E/S para 32 KiB com uma workload sequencial/contígua, o Amazon EBS mescla até 1024 KiB. Nesse caso, a Amazon envia apenas 3 IOPS, conforme mostrado no cálculo a seguir:
3 MiB/s/1024 KiB = 3 IOPS
Mas suponha que você use 0,5 TiB (500 GiB) de um volume ST1. Nesse caso, o volume idealmente fornece um desempenho básico de throughput de 20 MiB/s e pode expandir até 125 MiB/s.
Se o volume expandir em 125 MiB/s e o tamanho de E/S do aplicativo for 1024 KiB, o máximo de IOPS teórico será igual a 125 IOPS.
Throughput / tamanho de E/S = 125 MiB/s / 1024 KiB = 125 IOPS.
No entanto, se o aplicativo usar um tamanho de E/S de 16 KiB, o envio de 3 MiB de dados usará 192 IOPS. Como o volume atinge apenas um máximo teórico de 125 IOPS, o aplicativo não pode enviar 192 IOPS. Nesse caso, o volume controla a utilização de IOPS para 125:
Throughput real = 16 KiB\ * 125 = 1,95 MiB/s
Conforme mostrado nos cálculos anteriores, o IOPS é limitado a 125 IOPS e o Amazon EBS controla a utilização do throughput em 1,95 MiB/s. Esse controle de utilização ocorre mesmo que o throughput teórico expansível do volume seja de 125 IOPS, já que o aplicativo usou um tamanho de E/S de 1024 KiB.
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano