Quando observo as opções de armazenamento em disco (dispositivo de bloco) de vários provedores de hospedagem em nuvem, geralmente vejo números como:
- Google Cloud ( SSD zonal ): 15.000 - 100.000 IOPS de leitura
- Nuvem OVH: ( Alta Velocidade /SSD): Até 3.000 IOPS
- AWS: ( io1 /SSD): Até 64.000 IOPS
Eu não sei nada sobre a tecnologia subjacente.
Mesmo que esses provedores de nuvem usem algumas das opções de SSD mais lentas disponíveis (ssds SATA de consumidor comuns), alguns desses discos vêm com especificações de IOPS para leituras e gravações na faixa de 90.0000 e superior (observando 860 EVO SSD 2.5). Um SSD NVMe daria uma taxa de transferência muito melhor. Mesmo que esses provedores de nuvem empilhassem esses discos SSD em algum tipo de cluster de armazenamento, ainda ficaria surpreso ao ver que o IOPS cairia de 90.000 para 3.000.
Tenho a sensação de que esses números não são comparáveis, embora a mesma métrica (IOPS) seja usada.
Como devo interpretar o IOPS de disco listado pelos provedores de nuvem versus o IOPS de disco listado pelos fabricantes de disco?
O Google especifica 900.000 a 2.700.000 IOPS para um SSD local . Isso mostra que o hardware deles é perfeitamente capaz. O "SSD zonal" tem um IOPS muito menor, mas é um disco acessível por todos os servidores na zona específica. Isso significa que é remoto para o servidor em que seu código está sendo executado e há software entre o servidor e o SSD para gerenciar o acesso simultâneo.
Sim, isso está custando muito IOPS. Isso não é inesperado. Basta olhar para a enorme diferença entre o SSD NVMe local (2.700.000 IOPS) e o não-NVMe (900.000 IOPS). Você já perde 66% do desempenho bruto apenas introduzindo um único barramento lento entre os chips flash e a CPU. Provavelmente são alguns centímetros de cabo SATA e os chips SATA em ambos os lados desse cabo. As velocidades brutas do SSD são tão altas que qualquer sobrecarga será enorme.
A Intel até considerou o NVMe muito lento para seu produto de armazenamento Optane e optou pelo DIMM, assim como a RAM. Isso faz sentido; As CPUs da Intel podem fazer vários bilhões de transferências de memória por segundo. (não milhões, são realmente três ordens de magnitude a mais). No entanto, o Optane parece estar falhando nesse aspecto: está preso bem abaixo de um milhão de IOPS e a interface DIMM parece um exagero ridículo. Mas a direção é clara; até mesmo o NVMe pode em breve se tornar muito lento para armazenamento local. A receita para a velocidade é o acesso direto sem sobrecarga. Os números que você cita apenas mostram o quanto o desempenho pode cair quando você adiciona sobrecarga.
Cotas. Múltiplos inquilinos. Contando IOPS do host após redundância. Limites de escalabilidade com sua pilha de armazenamento (provavelmente baseada em IP). Vendendo um disco SSD premium mais rápido. Realmente sendo honesto e conservador com o que é prático. A lista de possíveis razões é longa.
Se um disco for muito limitado, você pode anexar vários e usá-los todos em um host, digamos com LVM. Um pouco estranho ter que dimensionar SSDs para IOPS em vez de capacidade, mas talvez sejam essas as restrições desses tipos de disco.
Se você deseja executar sua própria matriz de armazenamento, faça isso. Claro, isso significa que você não pode usar o armazenamento gerenciado de, digamos, AWS ou GCP.
Quaisquer que sejam suas opções de armazenamento, você deve testar com algo semelhante à sua carga de trabalho. Carga realista se você puder, IOs sintéticos com
fio
oudiskspd
se precisar.Especialmente se você realmente precisa empurrar 100k IOPS. Esse nível de carga ainda é um exercício sério de uma pilha de armazenamento.