CrystalDiskMark: Como realmente funciona

CrystalDiskMark é um dos benchmarks de armazenamento mais populares, mas como ele determina o desempenho da unidade?

O CrystalDiskMark existe há mais de uma década e é uma das formas favoritas da comunidade de PC para avaliar o armazenamento, sejam discos rígidos, unidades de estado sólido (SSD) ou até mesmo unidades flash. É um benchmark simples com um clique que informa a velocidade do seu armazenamento. Mas o que exatamente ele está testando e o que os resultados significam para o seu hardware? Aqui está o que você precisa saber.

O que é CrystalDiskMark?

CrystalDiskMark é um benchmark de armazenamento do Windows lançado pela primeira vez em 2008 que tenta avaliar a velocidade de uma unidade sob condições de teste definidas. Há também um benchmark do macOS chamado AmorphousDiskMark, que supostamente funciona mais ou menos da mesma maneira e foi projetado (com a permissão do autor do CrystalDiskMark) para ter a mesma aparência. Basicamente, tudo o que o CrystalDiskMark faz é transferir arquivos e informar a velocidade com que a unidade foi capaz de transferir esses dados.

Antes de executar seus testes, você precisará definir um tamanho de arquivo funcional. Este é o tamanho do arquivo que o CrystalDiskMark cria para realizar testes de leitura e gravação e varia de 16 MB a 64 GB. Deixá-lo no padrão de 1 GB é perfeitamente aceitável, pois é um tamanho realista para muitos dados que você pode acessar em seu armazenamento.

O CrystalDiskMark vem com quatro benchmarks predefinidos, mas se você olhar nas configurações avançadas, poderá personalizar o que o benchmark testa e obter resultados diferentes. Os benchmarks do CrystalDiskMark se resumem a quatro parâmetros de teste importantes: sequencial vs. aleatório, tamanho do bloco, profundidade da fila e threads.

Sequencial vs. aleatório

Os dois tipos básicos de testes que o CrystalDiskMark usa são sequenciais e aleatórios, indicados por SEQ e RND respectivamente. A principal diferença entre esses dois tipos de cargas de trabalho é a forma como os dados são organizados. Em uma carga de trabalho sequencial, os dados que o SSD está acessando são fisicamente contíguos e podem ser acessados ​​um após o outro em uma sequência (portanto, sequencial). Cargas de trabalho aleatórias envolvem dados que não são sequenciais ou contíguos e podem estar espalhados por toda a unidade. Dependendo de outros fatores, a diferença de desempenho entre sequencial e aleatório pode variar de pequena a extremamente grande.

De modo geral, os SSDs são muito bons para lidar com cargas de trabalho aleatórias, enquanto os HDDs lutam com elas, e é por isso que você pode ver os HDDs obterem velocidades nominais inferiores a 10 MB/s nos testes aleatórios do CrystalDiskMark, mas acima de 100 MB/s em testes sequenciais uns. Isso se deve ao fato de que os HDDs precisam mover mecanicamente um componente que lê e grava no disco físico, e isso leva bastante tempo saltando de um lugar para outro. Embora os SSDs não sejam mecânicos, eles ainda processam cargas de trabalho aleatórias mais lentamente do que as sequenciais por motivos externos.

Tamanho do bloco

Os arquivos são compostos de blocos e são os maiores pedaços de dados que são movidos em uma operação de entrada/saída (ou E/S). Nos testes padrão apresentados pelo CrystalDiskMark, você verá alguns que usam um tamanho de bloco de 1 MiB (aproximadamente um megabyte), alguns que usam um tamanho de bloco de 4KiB (aproximadamente quatro kilobytes) e um que usa um tamanho de bloco de 128KiB (aproximadamente 128 quilobytes).

Quanto maior o tamanho do bloco, mais rápida será a velocidade de transferência

Isto pode parecer contra-intuitivo, mas quanto maior o tamanho do bloco, mais rápida será a velocidade de transferência. É basicamente a diferença entre mover um pedaço de papel de cada vez e mover uma pasta inteira para um arquivo. As transferências sequenciais de arquivos geralmente envolvem blocos grandes, enquanto cargas de trabalho aleatórias tendem a usar blocos menores. Embora o CrystalDiskMark use tamanhos de bloco grandes em testes sequenciais e tamanhos de bloco pequenos em testes aleatórios, o tamanho do bloco não é necessariamente indicativo de sequencialidade ou aleatoriedade.

Profundidade da fila

A profundidade da fila refere-se a quantas filas estão lidando com solicitações de E/S em um determinado momento e, com mais filas abertas para transferência de dados, há um potencial maior para velocidades de transferência mais rápidas. Por padrão, o CrystalDiskMark testa nas profundidades da fila de 1, 8 e 32, embora você possa aumentar manualmente a profundidade da fila e testar dessa forma, se desejar. Você pode imaginar uma fila como um trabalhador individual arquivando documentos e, obviamente, mais trabalhadores significam um arquivamento mais rápido.

Ter uma profundidade de fila maior geralmente resulta em velocidades de transferência mais altas, independentemente do tamanho do bloco ou da contagem de threads, mas uma profundidade de fila alta faz uma diferença especialmente grande em cargas de trabalho aleatórias. Para usar novamente a analogia do arquivo, duas pessoas arquivando papéis um por um serão muito mais rápidas do que uma pessoa fazendo isso sozinha. Ir de uma profundidade de fila de um para 32 pode resultar em velocidades de transferência 10 vezes maiores, o que é enorme.

Tópicos

Os threads são diferentes no tamanho do bloco e na profundidade da fila porque estão na CPU e não no armazenamento. Cada CPU possui uma certa quantidade de núcleos, e cada núcleo geralmente possui um ou dois threads, e eles são basicamente a versão da CPU das filas. Quanto mais threads, mais fácil será trabalhar em várias coisas ao mesmo tempo. Threads não são importantes no CrystalDiskMark, pois sete dos oito testes padrão usam apenas uma contagem de threads, com apenas um teste usando uma contagem de threads de 16.

Aquele teste que usa uma contagem de threads de 16, entretanto, deixa claro que ter muitos threads de CPU pode ajudar. Passar de um thread para 16 em uma carga de trabalho aleatória aumenta o desempenho em cerca de oito vezes, ou 700%. Isso ocorre porque a CPU também está envolvida na facilitação da transferência de dados em um nível muito importante. Mas a contagem de threads depende da CPU, e nem todo processador tem 16 threads, talvez seja por isso que o CrystalDiskMark mantém a contagem de threads em um para a maioria de seus testes padrão.

Juntando tudo

Agora que você conhece todos os componentes principais, vamos dar uma olhada no resultado real do CrystalDiskMark. Este é um dos nossos Análise do Samsung 990 Pro usando os testes padrão.

990 Pró

970 EVO Plus

SEQ1M, Q8T1

7465/6897

3575/3059

SEQ1M, Q1T1

3878/6046

3029/2725

RND4K, Q32T1

785/533

774/610

RND4K, Q1T1

72/248

53/240

As pontuações são organizadas por leitura/gravação e medidas em MB/s.

O primeiro benchmark é um benchmark sequencial otimizado que usa um tamanho de bloco grande e oito filas, e embora haja apenas um thread em uso, a velocidade de transferência é basicamente o que a Samsung avalia no 990 Pro no. O segundo benchmark difere apenas na profundidade da fila, que é um em vez de oito, e isso causa uma diminuição no desempenho de leitura e gravação (especialmente lido no 990 Pro).

O terceiro teste é uma carga de trabalho aleatória com um tamanho de bloco de apenas 4 KB e, embora uma profundidade de fila de 32 seja muito alto, as velocidades de leitura e gravação ainda são significativamente mais baixas do que aquelas observadas no sequencial cargas de trabalho. O último teste usa o mesmo tamanho de bloco de 4KiB, mas reduz a profundidade da fila para um, o que resulta em uma situação extremamente velocidade de leitura lenta de apenas 72 MB/s no 990 Pro (a velocidade de gravação também é bastante lenta, mas não é tão grande derrubar).

Há também o perfil de teste NVMe que vem com alguns testes diferentes, e você também pode configurar seus próprios parâmetros de teste. Basta clicar no menu suspenso Configurações, clicar na opção Configurações e você será saudado com muitas opções. O tamanho do bloco varia de 4KiB a 8MiB, a profundidade da fila pode ser definida de 1 a 512 e a contagem de threads pode ser de 1 a 64. No entanto, os valores de tamanho do bloco e profundidade da fila não podem ser literalmente nada; as opções de profundidade da fila vão de 1 a 2, de 4 a 8 e assim por diante.

Como baixar o CrystalDiskMark

CrystalDiskMark é um benchmark de armazenamento testado e comprovado, frequentemente usado para medir o melhores SSDs NVMe. Você pode baixá-lo em Site próprio do CrystalDiskMark, que também hospeda o CrystalDiskInfo, um aplicativo complementar que se concentra no monitoramento do armazenamento.