it-swarm-pt.tech

Como posso monitorar a carga do disco rígido no Linux?

Existe um bom utilitário de linha de comando para monitorar a carga do disco rígido no Linux? Algo como top, mas depois monitorando a atividade do disco i.s.o. utilização do CPU.

Mais especificamente, suspeito que, para alguns servidores (carga pesada) após várias otimizações em várias partes do (s) programa (s) executado (s), agora o gargalo é simplesmente o log de arquivos no disco. Mas acho muito difícil avaliar quanto tráfego os servidores podem suportar.

Minha ferramenta ideal seria algo que imprimisse "Você está usando 35% da largura de banda do seu disco agora". Alguma ideia?

105
Pieter

Você pode obter uma boa medida disso usando a ferramenta iostat.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

A utilização do disco está listada na última coluna. Isso é definido como

Porcentagem de tempo de CPU durante o qual as solicitações de E/S foram emitidas para o dispositivo (utilização de largura de banda para o dispositivo). A saturação do dispositivo ocorre quando esse valor é próximo a 100%.

85
Dave Cheney

iotop é uma versão do top que analisa quanto IO cada processo está usando. Está nos repositórios padrão do ubuntu; não sei se está no RHEL ou Fedora, mas deveria ser.

enter image description here

Para kernels mais antigos (por exemplo, CentOS 5.x ou RHEL 5.x) que não oferecem suporte ao iotop, use o topio (documentado aqui: http://yong321.freeshell.org/freeware/pio.html#linux) . Ele se baseia em/proc // io para estatísticas io e fornece funcionalidade semelhante ao iotop. Consulte o link para obter mais detalhes.

82
Tim Howland

Conforme sugerido por sastanin nos comentários, você pode processar diretamente os valores dados em /sys/block/sda/stat ou /proc/diskstats. Isso pode ser útil quando nenhuma das outras ferramentas mencionadas estiver disponível e você não puder instalá-las facilmente.

Por exemplo (IIUC), algo como isto (no bash) deve fornecer o número de leituras por segundo:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Consulte https://www.kernel.org/doc/Documentation/iostats.txt e https://www.kernel.org/doc/Documentation/block/stat.txt para documentação.

14
Skippy le Grand Gourou

Você deve dar uma olhada em atop , que combina o poder do iotop/top/iftop, tudo em um só lugar, e destaca as partes críticas do seu sistema.

8
Yvan

Eu recomendaria dar uma olhada na ferramenta nmon. Ele mostrará a carga ativa em vários parâmetros do sistema, bem como a gravação de dados em um arquivo para leitura posterior. É uma ferramenta gratuita disponível aqui :

6
MikeyB

para descobrir qual é a sua largura de banda total, você pode usar hdparm -T /dev/sda para testar o desempenho do cache de buffer (fileio) hdparm -t /dev/sda para testar o desempenho de leitura do dispositivo

exemplos: meu laptop obtém 82 MB/s no disco SATA e 2 GB/s no cache. Meu dekstop recebe 12 GB/s do cache e 500 MB/s da matriz HW RAID. Eu suspeito que esses últimos números possam ser o dobro no hardware da classe de servidor.

definir readahead maior que 256, 4096 funciona melhor para mim

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

vezes lendo 1 GB em diferentes tamanhos de bloco e diferentes leituras antecipadas

5
user2987

A ferramenta padrão para mostrar a carga do disco rígido é iostat.

Ele não informa quanto% de largura de banda de idade do disco você está usando, pois não sabe quanta largura de banda seu disco possui. De qualquer forma, seu disco possui apenas a citação do fabricante para grandes transferências de dados contíguos.

4
Alnitak

Eu acho que o RRDtool deve fazer o que você deseja aqui ele usa um daemon para despejar dados do sistema e, em seguida, permite que você processe como quiser. Eu sempre o usei para produzir gráficos, etc., para medir a carga do sistema.

3
PixelSmack

htop é uma ferramenta agradável para verificar as informações do processo. Você pode adicionar ou remover colunas e entre elas estão as velocidades de leitura e gravação dos processos.

0
inquam