Como verificar o desempenho de um disco rígido (via terminal ou GUI). A velocidade de gravação. A velocidade de leitura. Tamanho e velocidade do cache. Velocidade aleatória.
hard-drive
performance
Luis Alvarado
fonte
fonte
Respostas:
Método terminal
hdparm
é um bom lugar para começar.sudo hdparm -v /dev/sda
também dará informações.dd
fornecerá informações sobre velocidade de gravação.Se a unidade não tiver um sistema de arquivos (e somente então ), use
of=/dev/sda
.Caso contrário, monte-o em / tmp e escreva e exclua o arquivo de saída de teste.
Método gráfico
gnome-disks
Como comparar E / S de disco
Artigo
Há algo mais que você quer?
fonte
/dev/urandom
e/dev/zero
entradas paradd
testar um SSD, pois a compressibilidade dos dados pode ter um efeito maciço na velocidade de gravação./tmp
sistema de arquivos está usando um ramdisk. Portanto, escrever para/tmp
parece estar testando sua memória, não seu subsistema de disco.Suominen está certo, devemos usar algum tipo de sincronização; mas existe um método mais simples, conv = fdatasync fará o trabalho:
fonte
Eu não recomendaria usar
/dev/urandom
porque é baseado em software e lento como porco. Melhor usar um pedaço de dados aleatórios no ramdisk. No teste do disco rígido, o acaso não importa, porque cada byte é gravado como está (também no ssd com dd). Mas se testarmos o pool zfs desduplicado com zero puro ou dados aleatórios, haverá uma enorme diferença de desempenho.Outro ponto de vista deve ser a inclusão do tempo de sincronização; todos os sistemas de arquivos modernos usam cache nas operações de arquivo.
Para realmente medir a velocidade do disco e não a memória, precisamos sincronizar o sistema de arquivos para se livrar do efeito do cache. Isso pode ser feito facilmente por:
com esse método, você obtém saída:
então o datarate do disco é apenas 104857600 / 0,441 = 237772335 B / s -> 237MB / s
Isso é mais de 100 MB / s menor do que com o cache.
Benchmarking feliz,
fonte
Se você deseja monitorar a velocidade de leitura e gravação do disco em tempo real, pode usar a ferramenta iotop .
Isso é útil para obter informações exatas sobre o desempenho de um disco para um aplicativo ou tarefa em particular. A saída mostrará a velocidade de leitura / gravação por processo e a velocidade total de leitura / gravação para o servidor, muito semelhante à
top
.Para instalar o iotop:
Para executá-lo:
fonte
Se você quer precisão, você deve usar
fio
. Requer a leitura do manual (man fio
), mas fornecerá resultados precisos. Observe que, para qualquer precisão, você precisa especificar exatamente o que deseja medir. Alguns exemplos:Velocidade de leitura sequencial com blocos grandes (isso deve ser próximo ao número que você vê nas especificações para sua unidade):
Velocidade de gravação seqüencial com blocos grandes (isso deve ser próximo ao número que você vê nas especificações para sua unidade):
QD1 de leitura aleatória em 4K (este é o número que realmente importa para o desempenho no mundo real, a menos que você saiba com certeza):
Leitura aleatória mista de 4K e gravação de QD1 com sincronização (este é o pior número esperado da sua unidade, geralmente menos de 1% dos números listados na folha de especificações):
Aumente o
--size
argumento para aumentar o tamanho do arquivo. O uso de arquivos maiores pode reduzir os números obtidos, dependendo da tecnologia e do firmware da unidade. Arquivos pequenos fornecerão resultados "muito bons" para mídia rotacional porque o cabeçote de leitura não precisa se mover muito. Se o seu dispositivo estiver quase vazio, usar um arquivo grande o suficiente para quase encher a unidade fornecerá o pior comportamento possível para cada teste. No caso de SSD, o tamanho do arquivo não importa muito.No entanto, observe que, para algumas mídias de armazenamento, o tamanho do arquivo não é tão importante quanto o total de bytes gravados durante um curto período de tempo. Por exemplo, alguns SSDs podem ter um desempenho significativamente mais rápido com blocos pré-apagados ou podem ter uma pequena área de flash do SLC usada como cache de gravação e o desempenho muda quando o cache do SLC está cheio. Como outro exemplo, os HDDs da Seagate SMR têm cerca de 20 GB de área de cache PMR com desempenho bastante alto, mas, quando ficar cheio, gravar diretamente na área SMR pode reduzir o desempenho para 10% do original. E a única maneira de ver essa degradação do desempenho é primeiro escrever mais de 20 GB o mais rápido possível. Obviamente, tudo isso depende da sua carga de trabalho: se o acesso de gravação estiver cheio de atrasos prolongados que permitem que o dispositivo limpe o cache interno, sequências de teste mais curtas refletirão melhor seu desempenho no mundo real. Se você precisar fazer muito IO, precisará aumentar os dois
--io_size
e--runtime
parâmetros. Observe que algumas mídias (por exemplo, a maioria dos dispositivos flash) terão desgaste extra com esses testes. Na minha opinião, se algum dispositivo é ruim o suficiente para não lidar com esse tipo de teste, ele não deve ser usado para armazenar dados valiosos em nenhum caso.Além disso, alguns dispositivos SSD de alta qualidade podem ter algoritmos de nivelamento de desgaste ainda mais inteligentes, em que o cache SLC interno tem inteligência suficiente para substituir os dados que estão sendo reescritos durante o teste se atingir o mesmo espaço de endereço (ou seja, arquivo de teste é menor que o cache total do SLC). Para esses dispositivos, o tamanho do arquivo começa a importar novamente. Se você precisar da sua carga de trabalho real, é melhor testar com tamanhos de arquivo que você realmente verá na vida real. Caso contrário, seus números podem parecer bons demais.
Observe que
fio
criará o arquivo temporário necessário na primeira execução. Ele será preenchido com dados aleatórios para evitar obter números muito bons de dispositivos que trapaceiam compactando os dados antes de gravá-los no armazenamento permanente. O arquivo temporário será chamadofio-tempfile.dat
nos exemplos acima e armazenado no diretório de trabalho atual. Portanto, você deve primeiro mudar para o diretório que está montado no dispositivo que deseja testar.Se você tem um bom SSD e deseja ver números ainda mais altos, aumente
--numjobs
acima. Isso define a simultaneidade para as leituras e gravações. Todos os exemplos acima foramnumjobs
configurados para1
que o teste seja sobre leitura e gravação de processo único de encadeamento (possivelmente com uma fila configurada comiodepth
). Os SSDs de ponta (por exemplo, Intel Optane) devem obter números altos mesmo sem aumentarnumjobs
muito (por exemplo,4
devem ser suficientes para obter os números de especificação mais altos), mas alguns SSDs "corporativos" precisam de32
-128
para obter os números de especificação porque a latência interna desses dispositivos é maior, mas a taxa de transferência geral é insana.fonte
max_sectors_kb
. Alterei os comandos de exemplo acima para usar um tamanho de bloco de 1 MB, porque isso parece funcionar com o hardware do mundo real. E eu também testei quefsync
não importa para a leitura.iodepth
a1
para acesso aleatório exatamente porque os programas do mundo real, muitas vezes executar algoritmos / lógica que não funciona com profundidade mais alto do que 1. Como resultado, se tal profundidade é "muito baixo" o dispositivo I / O é ruim. É verdade que alguns dispositivos SSD se beneficiarão de profundidade superior a 32. No entanto, você pode apontar para qualquer carga de trabalho do mundo real que exija acesso de leitura e seja capaz de manter a profundidade de iodo maior que 32? TL; DR: se você deseja reproduzir um número de referência de leitura incrivelmente alto com um dispositivo de alta latência, use,iodepth=256 --numjobs=4
mas nunca espere ver esses números reais.bonnie ++ é o utilitário de referência que eu conheço para o linux.
(Atualmente, estou preparando um livecd linux trabalhando com o bonnie ++ para testar nossa máquina baseada em janelas!)
Ele cuida do armazenamento em cache, sincronização, dados aleatórios, localização aleatória no disco, pequenas atualizações de tamanho, grandes atualizações, leituras, gravações etc. Comparando uma chave USB, um disco rígido (rotativo), uma unidade de estado sólido e uma ram O sistema de arquivos pode ser muito informativo para o novato.
Não tenho idéia se ele está incluído no Ubuntu, mas você pode compilá-lo da fonte facilmente.
http://www.coker.com.au/bonnie++/
fonte
Velocidade de escrita
O tamanho do bloco é realmente muito grande. Você pode tentar com tamanhos menores, como 64k ou até 4k.
Velocidade de leitura
Execute o seguinte comando para limpar o cache da memória
Agora leia o arquivo que foi criado no teste de gravação:
fonte
algumas dicas sobre como usar o bonnie ++
Um pouco mais em: EXEMPLO SIMPLES DE BONNIE ++ .
fonte
f3 - Combate à fraude em flash
Verifique a integridade, detecte unidades flash falsas e teste o desempenho, todos os três em um tiro.
Mais sobre esta resposta .
fonte