Como verificar o desempenho do disco rígido

270

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.

    
por Luis Alvarado 12.12.2011 / 01:22

8 respostas

358

Método terminal

hdparm é um bom lugar para começar.

sudo hdparm -Tt /dev/sda

/dev/sda:
Timing cached reads:   12540 MB in  2.00 seconds = 6277.67 MB/sec
Timing buffered disk reads: 234 MB in  3.00 seconds =  77.98 MB/sec

sudo hdparm -v /dev/sda também fornecerá informações.

dd fornecerá informações sobre a velocidade de gravação.

Se a unidade não tiver um sistema de arquivos (e somente ), use of=/dev/sda .

Caso contrário, monte-o em / tmp e escreva e exclua o arquivo de saída de teste.

dd if=/dev/zero of=/tmp/output bs=8k count=10k; rm -f /tmp/output

10240+0 records in
10240+0 records out
83886080 bytes (84 MB) copied, 1.08009 s, 77.7 MB/s

Método gráfico

  1. Ir para o sistema - > Administração - > Utilitário de Disco.
    • Como alternativa, inicie o utilitário de disco Gnome na linha de comando executando gnome-disks
  2. Selecione seu disco rígido no painel esquerdo.
  3. Agora, clique no botão "Benchmark - Medir desempenho do Drive" no painel direito.
  4. Uma nova janela com gráficos é aberta. Você encontrará dois botões. Uma é para “Benchmark inicial somente leitura” e outra é “Benchmark inicial leitura / gravação”. Quando você clica em qualquer botão, começa o benchmarking do disco rígido.

ComofazerumbenchmarkdeE/Sdedisco

Artigo

Existe algo mais que você quer?

    
por Panther 12.12.2011 / 01:34
77

Suominen está certo, devemos usar algum tipo de sincronização; mas existe um método mais simples, conv = fdatasync fará o trabalho:

dd if=/dev/zero of=/tmp/output conv=fdatasync bs=384k count=1k; rm -f /tmp/output
1024+0records in
1024+0 records out
402653184 bytes (403 MB) copied, 3.19232 s, 126 MB/s
    
por Tele 18.08.2013 / 20:31
44

Eu não recomendaria usar /dev/urandom porque é baseado em software e lento como porco. Melhor tomar um monte de dados aleatórios no ramdisk. No teste de disco rígido aleatório não importa, porque cada byte é escrito como é (também no ssd com dd). Mas se testarmos o conjunto zfs desclassificado 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 o armazenamento em cache nas operações de arquivos.

Para realmente medir a velocidade do disco e não a memória, precisamos sincronizar o sistema de arquivos para nos livrarmos do efeito de armazenamento em cache. Isso pode ser feito facilmente por:

time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync"

com esse método, você obtém a saída:

sync ; time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k  && sync" ; rm testfile 
1024+0 records in
1024+0 records out
104857600 bytes (105 MB) copied, 0.270684 s, 387 MB/s

real    0m0.441s
user    0m0.004s
sys 0m0.124s

para que o datarate do disco seja apenas 104857600 / 0,441 = 237772335 B / s - > 237MB / s

Isso é mais de 100 MB / s abaixo do armazenamento em cache.

Benchmarking feliz,

    
por Pasi Suominen 07.12.2012 / 00:18
32

Se você quiser monitorar a velocidade de leitura e gravação em disco em tempo real, use a ferramenta iotop .

Isso é útil para obter informações exatas sobre o desempenho de um disco para um aplicativo ou tarefa específica. A saída mostrará a velocidade de leitura / gravação por processo e a velocidade total de leitura / gravação do servidor, muito semelhante a top .

Para instalar o iotop:

sudo apt-get install iotop  

Para executá-lo:

sudo iotop
    
por Lars 17.09.2013 / 16:24
24
O

bonnie ++ é o melhor utilitário de referência que eu conheço para o Linux.

(No momento, estou preparando um linux livedoc no trabalho com o bonnie ++ para testar nossa máquina baseada em windows com ele!)

Ele cuida do cache, sincronização, dados aleatórios, localização aleatória no disco, atualizações de tamanho pequeno, grandes atualizações, leituras, gravações, etc. Comparando um usbkey, um disco rígido (rotativo), um drive de estado sólido e um O sistema de arquivos baseado em RAM pode ser muito informativo para o novato.

Eu não tenho ideia se está incluído no Ubuntu, mas você pode compilá-lo facilmente a partir do código-fonte.

link

    
por Corto 03.02.2014 / 17:13
19

Velocidade de gravação

$ dd if=/dev/zero of=./largefile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s

O tamanho do bloco é realmente muito grande. Você pode experimentar tamanhos menores, como 64k ou até 4k.

Velocidade de leitura

Execute o seguinte comando para limpar o cache de memória

$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

Agora leia o arquivo que foi criado no teste de gravação:

$ dd if=./largefile of=/dev/null bs=4k
165118+0 records in
165118+0 records out
676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s
    
por Limon Monte 06.05.2016 / 00:12
13

algumas dicas sobre como usar o bonnie ++

bonnie++ -d [TEST_LOCATION] -s [TEST_SIZE] -n 0 -m [TEST_NAME] -f -b -u [TEST_USER] 
bonnie++ -d /tmp -s 4G -n 0 -m TEST -f -b -u james

Um pouco mais em: SIMPLES BONNIE ++ EXEMPLO .

    
por nyxee 28.09.2015 / 21:02
12

Se você deseja precisão, use fio . É necessário ler o manual ( man fio ), mas ele fornecerá resultados precisos. Note que para qualquer precisão, você precisa especificar exatamente o que você quer medir. Alguns exemplos:

Velocidade de leitura sequencial com grandes blocos (deve estar perto do número que você vê nas especificações da sua unidade):

fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Velocidade de GRAVAÇÃO sequencial com grandes blocos (deve estar perto do número que você vê nas especificações da sua unidade):

fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Aleatório 4K ler QD1 (esse é o número que realmente importa para o desempenho no mundo real, a menos que você tenha certeza disso):

fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Leitura aleatória mista 4K e gravação QD1 com sincronização (este é o pior número de caso que você deve esperar da sua unidade, geralmente 1-10% do número listado na folha de especificações):

fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Aumente o argumento --size para aumentar o tamanho do arquivo. Usar arquivos maiores pode reduzir os números que você obtém dependendo da tecnologia da unidade e do firmware. Arquivos pequenos darão resultados "muito bons" para mídia rotativa, porque a cabeça de leitura não precisa se mover muito. Se o seu dispositivo estiver quase vazio, o uso de um arquivo grande o suficiente para quase preencher a unidade fará com que você tenha o pior comportamento de cada teste. No caso de SSD, o tamanho do arquivo não importa muito.

Observe que fio criará o arquivo temporário necessário na primeira execução. Ele será preenchido com dados aleatórios para evitar números muito bons de dispositivos que trapaceiam ao compactar os dados antes de gravá-los em um armazenamento permanente. O arquivo temporário será chamado fio-tempfile.dat nos exemplos acima e armazenado no diretório de trabalho atual. Então você deve primeiro mudar para o diretório que está montado no dispositivo que você deseja testar.

    
por Mikko Rantalainen 01.01.2018 / 19:14