Benchmarking NVMe Real: Como Testar IOPS 4K, Latência e Ignorar o Marketing
Pare de usar 'dd'. Aprenda a medir a performance real do seu NVMe com FIO. Entenda a importância crítica de 4K QD1, QD32 e latência p95 para bancos de dados e responsividade do sistema.
Você comprou um SSD NVMe Gen4 que prometia 7.000 MB/s na caixa. Instalou, clonou o sistema e esperou ver o Windows ou Linux iniciar instantaneamente. O resultado? O boot demorou praticamente o mesmo tempo que o seu antigo SSD SATA. O jogo carregou talvez um ou dois segundos mais rápido. A sensação de fraude é palpável.
Como investigador forense de sistemas, eu vejo essa cena de crime constantemente. O "suspeito" não é o hardware, mas a métrica usada para vendê-lo. O número na caixa é uma velocidade de pico em um cenário ideal que raramente ocorre no mundo real. Para entender o desempenho do seu armazenamento, precisamos deixar de lado o marketing e realizar uma autópsia técnica usando ferramentas de precisão.
Benchmarking NVMe Real não é sobre atingir a velocidade máxima sequencial estampada na caixa. É o processo de medir IOPS em leitura/escrita aleatória 4K e, crucialmente, a latência de cauda (p99) sob carga constante (steady state), simulando como sistemas operacionais e bancos de dados realmente acessam o armazenamento, ignorando o cache de RAM.
A Ilusão da Velocidade Sequencial no Benchmarking NVMe
Por que seu drive de 7.000 MB/s parece igual a um de 500 MB/s? Porque sistemas operacionais não leem arquivos gigantescos de uma só vez (acesso sequencial). Eles leem milhares de pequenos arquivos de configuração, bibliotecas e logs espalhados pelo disco (acesso aleatório).
Quando o marketing diz "7.000 MB/s", eles estão testando uma leitura contínua, como copiar um único arquivo de vídeo de 50GB. Mas o boot do seu sistema é composto por leituras de blocos de 4KB.
Se o seu NVMe consegue ler blocos de 4K a uma velocidade de 60 MB/s (o que é comum em QD1), não importa que ele tenha um teto de 7.000 MB/s. O gargalo é a latência, não a largura de banda. É como ter uma Ferrari (largura de banda alta) presa no trânsito do centro da cidade (latência alta por operação).
Arquitetura NVMe vs AHCI: Filas e Paralelismo
Para entender o que medir, precisamos entender a anatomia do dispositivo. O protocolo antigo, AHCI (usado em SATA), foi desenhado para discos rígidos mecânicos que tinham uma cabeça de leitura física. O NVMe foi desenhado para memória flash.
A diferença fundamental está nas filas (Queues).
Figura: Arquitetura de Filas: O gargalo do AHCI vs o paralelismo massivo do NVMe
O AHCI é como um supermercado com apenas um caixa (1 fila) que pode aceitar no máximo 32 pessoas (comandos) na fila. O NVMe é um hipermercado com 64.000 caixas, cada um aceitando 64.000 pessoas.
No entanto, a maioria dos benchmarks simplistas não explora esse paralelismo. Se você testar um NVMe usando os mesmos métodos de um HDD, você verá apenas uma fração do potencial. O segredo da performance NVMe é o paralelismo massivo.
FIO: Configurando o Teste Forense de Storage
Esqueça o CrystalDiskMark para diagnósticos sérios. Ele é ótimo para uma verificação rápida, mas esconde os detalhes sujos. A ferramenta de escolha do engenheiro de storage é o FIO (Flexible I/O Tester). Ele é o nosso bisturi.
Para um teste real, precisamos garantir duas coisas:
Ignorar o Cache da RAM (Direct I/O): Se o sistema operacional fizer cache, você estará testando a velocidade da sua memória DDR4/DDR5, não do SSD.
Tamanho do Bloco (Block Size): Usaremos 4k, o padrão da indústria para sistemas de arquivos.
Aqui está o comando base para um teste de leitura aleatória ("random read"):
fio --name=forensic_test \
--ioengine=libaio \
--rw=randread \
--bs=4k \
--direct=1 \
--size=4G \
--numjobs=1 \
--iodepth=1 \
--runtime=60 \
--time_based \
--group_reporting
Anatomia do comando:
--direct=1: A flag mais importante. Obriga os dados a irem direto ao disco, ignorando o buffer do OS.--rw=randread: Simula o caos real do sistema operacional (leitura aleatória).--bs=4k: O tamanho do bloco padrão de páginas de memória e NTFS/EXT4.
O Teste de Responsividade (QD1 4K)
A métrica mais subestimada é a performance em Queue Depth 1 (QD1).
--iodepth=1 significa que enviamos um pedido ao disco e esperamos a resposta antes de enviar o próximo. Isso representa 90% do uso desktop: abrir o Chrome, digitar um texto, abrir um menu.
O que medir aqui: Não olhe para os MB/s. Olhe para a Latência Média.
Excelente: < 30 microsegundos (µs)
Bom: < 60 µs
Sintoma de problema: > 100 µs em NVMe.
Se o seu NVMe tem latência alta em QD1, o sistema parecerá "lento" e "engasgado", não importa se ele atinge 10GB/s em cópias de arquivos.
O Teste de Carga (QD32+ 4K) e IOPS
Agora vamos estressar o controlador. Ao aumentar o iodepth para 32 ou mais (e usar numjobs maiores), estamos enchendo as filas do NVMe. É aqui que servidores de banco de dados e virtualização vivem.
Mude o comando anterior para --iodepth=32 e --numjobs=4.
Aqui, a métrica rei é o IOPS (Input/Output Operations Per Second). Um SSD SATA atinge cerca de 500-600 MB/s e trava em ~100.000 IOPS (sendo otimista). Um NVMe Gen4 de topo pode ultrapassar 1.000.000 IOPS.
Tabela Comparativa: O Que Importa Onde?
| Cenário | Tamanho do Bloco | Queue Depth (QD) | Métrica Crítica | Por que importa? |
|---|---|---|---|---|
| Boot / Desktop | 4K | 1 a 4 | Latência | Define a sensação de "snappiness" (rapidez de resposta). |
| Cópia de Arquivos | 128K - 1M | 32+ | Throughput (MB/s) | É o único momento onde a velocidade da caixa importa. |
| Banco de Dados | 8K - 16K | 64+ | IOPS & Latência p99 | Capacidade de transações simultâneas. |
| Jogos (Loading) | Misto | 1 a 32 | Leitura Aleatória | Descompactação de assets em tempo real. |
A Tirania da Média: Latência p95 e p99
Médias mentem. Se você fizer 100 operações de leitura, e 99 delas levarem 0.1ms, mas 1 delas levar 5 segundos (porque o controlador do SSD engasgou), a média ainda será baixa. Mas o seu servidor travou por 5 segundos.
Na análise forense, buscamos os "outliers". No FIO, procuramos as linhas de percentil (clat percentiles).
Figura: Leitura Forense do FIO: Onde encontrar a latência de cauda (p95) e ignorar o ruído
p95: 95% das requisições foram mais rápidas que este valor.
p99: 99% foram mais rápidas. O 1% restante é onde o problema mora.
p99.99: O "cisne negro". Travamentos raros que derrubam aplicações sensíveis.
Se o seu p99 for 10x maior que a média, seu SSD tem um controlador instável ou firmware ruim. SSDs enterprise se diferenciam dos "Gamer" exatamente aqui: consistência, não velocidade máxima.
Interpretando Resultados: SLC Cache e Steady State
Você rodou o teste por 10 segundos e obteve números incríveis. Parabéns, você testou o SLC Cache.
Quase todos os NVMes modernos (TLC e QLC) usam uma pequena porção da memória como cache ultra-rápido (modo SLC - 1 bit por célula). Quando esse cache enche, a velocidade cai drasticamente para a velocidade nativa da NAND.
O Teste da Verdade (Steady State):
Para validar um drive para uso profissional, execute o FIO com --runtime=1800 (30 minutos) em escrita.
Nos primeiros minutos: Velocidade máxima (Cache SLC).
Após encher o cache: Queda de performance (Velocidade TLC/QLC direta).
Após aquecimento: Possível Throttling Térmico. O controlador reduz a velocidade para não derreter.
Um drive "Gamer" de 7000MB/s pode cair para 800MB/s após 1 minuto de escrita contínua. Um drive Enterprise de 3000MB/s manterá 3000MB/s por anos.
Veredito Técnico Forense
Não aceite as especificações do fabricante como prova. Elas são álibis fabricados em condições ideais.
Use FIO com
direct=1.Teste QD1 para saber se seu PC ficará rápido.
Teste QD32 para saber se seu servidor aguenta carga.
Olhe para o p99, não para a média.
Só assim você saberá se comprou uma ferramenta de engenharia ou apenas um adesivo brilhante.
Referências & Leitura Complementar
NVM Express Base Specification - Documentação oficial da arquitetura de filas e comandos NVMe.
Gregg, Brendan. "Systems Performance: Enterprise and the Cloud" - A bíblia da análise de performance e metodologia de testes.
FIO (Flexible I/O Tester) Documentation - Manual técnico das flags e engines de I/O (
man fio).SNIA (Storage Networking Industry Association) - Whitepapers sobre metodologias de teste de estado sólido (Solid State Storage Performance Test Specification).
Ricardo Garcia
Especialista em Virtualização (VMware/KVM)
"Vivo na camada entre o hypervisor e o disco. Ajudo administradores a entenderem como a performance do storage define a estabilidade de datastores, snapshots e migrações críticas."