FIO: Quer saber quão rápidos são os seus discos?
FIO

Medir a velocidade geral de uma unidade de armazenamento não é complicado. Com uma cópia do CrystalDiskMark, a versão gratuita do HD Tune ou outro software similar já é suficiente. No entanto, há usuários que precisam avaliar o hardware sob condições mais específicas, com cargas de trabalho bem definidas. É aí que entra a ferramenta FIO. Ela não tem interface, sua documentação não é das melhores e não ensina nada pelo caminho, mas se você é um desses usuários, precisa dela.

Um ponto criticado com frequência entre os benchmarks mais populares é o perfil sintético. De certo ponto de vista, usar um benchmark fixo, repetitivo e invariável é útil porque permite estender o mesmo pacote de regras sobre múltiplas configurações de hardware, mas há ocasiões em que essa vantagem se desmorona. Por exemplo, não é a mesma coisa um disco rígido trabalhando em um sistema de desktop do que em um servidor com cargas de trabalho completamente diferentes.

Isso significa que, sob programas como CrystalDiskMark ou o clássico HD Tune, o que recebemos na verdade são «opiniões muito educadas» sobre o rendimento de um disco ou SSD, enquanto em segundo plano pode haver gargalos, bugs de drivers e outros erros de configuração prontos para arruinar tudo. Como detectá-los? Com um benchmark super-flexível, avançado e capaz de reproduzir quase qualquer carga de trabalho: FIO.

FIO: Quer saber quão rápidos são os seus discos?
Sim, o FIO é puro console e linhas de comando enormes. Sem GUI, sem assistentes.

Então... se é tão bom, por que não é mais famoso? A resposta é simples: não é um benchmark pensado para o usuário comum. Não possui interface gráfica, nem um assistente que explique cada parâmetro. Com o FIO você precisa saber exatamente o que deseja avaliar e não esperar ajuda para conseguir isso. O FIO se comporta como um simulador/curinga, uma 'canivete multiuso' que evitou ao seu desenvolvedor a dor de cabeça de criar um benchmark individual para cada carga de trabalho. Mas essa flexibilidade se reflete nos modificadores necessários para sua execução. Por exemplo:

fio --name=random-write --ioengine=windowsaio --rw=randwrite --bs=4k --numjobs=1 --size=4g --iodepth=1 --runtime=60 --time_based --end_fsync=1

  • «Name» é o nome que o arquivo gerado durante o benchmark terá.
  • «IOEngine» define o modo como o FIO interage com o sistema de arquivos (no Windows é «windowsaio», para o resto é «posixaio»).
  • «--rw=randwrite» indica que queremos avaliar operações aleatórias de escrita.
  • «--bs=4k» é o tamanho do bloco, 4K, uma verdadeira tortura para muitos meios de armazenamento.
  • «--size=4g» configura o tamanho do arquivo, 4 gigabytes.
  • «--numjobs=1» ordena a criação de um único arquivo e um único processo dentro desse arquivo.
  • «--iodepth=1» é a profundidade para empilhar comandos na fila do sistema operacional (equivale a uma operação por vez).
  • «--runtime=60» é o tempo de execução, 60 segundos.
  • «--end_fsync=1» mantém o contador ativo até que todas as operações tenham sido concluídas.

O resultado final aparece sob a legenda «Run Status Group»: no meu caso, o FIO levou 87.230 milissegundos para escrever um total de 6.307 «mebibytes» (ou seja, base 1.024), o que se traduz em cerca de 72.3 «mebibytes» por segundo, algo entre baixo e normal para um SSD comum.

Quer saber mais sobre o FIO? Se sim, a galera do Ars Technica publicou um excelente guia, mas a recomendação número um continua sendo ler a documentação oficial. Lembre-se: o FIO funciona muito bem, mas não ensina nem explica. Para dominá-lo, você vai ter que sujar as mãos.

Site oficial e downloads: clique aqui.

Fonte: Ars Technica.