Existe um bom utilitário de linha de comando para monitorar a carga do disco rígido no linux? Algo como top
, mas monitorando o uso da CPU iso da atividade do disco.
Mais especificamente, suspeito que para alguns servidores (de carga pesada) após várias otimizações em várias partes do(s) programa(s) que são executados nele, agora o gargalo é simplesmente o registro em arquivos no disco. Mas acho muito difícil avaliar quanto tráfego os servidores podem suportar.
Minha ferramenta ideal seria algo que imprima "Você está usando 35% da largura de banda do disco agora". Alguma ideia?
Você pode obter uma boa medida disso usando a
iostat
ferramenta.A utilização do disco é listada na última coluna. Isso é definido como
iotop é uma versão do top que analisa a quantidade de IO que cada processo está usando. Está nos repositórios padrão do Ubuntu; Não sei se está no RHEL ou no Fedora, mas deveria estar.
Para kernels mais antigos (digamos, CentOS 5.x ou RHEL 5.x) que não suportam iotop, use topio (documentado aqui: http://yong321.freeshell.org/freeware/pio.html#linux . Ele se baseia em / proc//io para estatísticas de io e fornece funcionalidade semelhante ao iotop. Veja o link para mais detalhes.
Conforme sugerido por sastanin nos comentários, você pode processar diretamente os valores fornecidos 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 assim (no bash) deve fornecer o número de leituras por segundo:
Consulte https://www.kernel.org/doc/Documentation/iostats.txt e https://www.kernel.org/doc/Documentation/block/stat.txt para documentação.
Você deve dar uma olhada no atop , que combina o poder do iotop/top/iftop, tudo em um só lugar, e destaca as partes críticas do seu sistema.
Eu recomendaria dar uma olhada na ferramenta nmon. Ele mostrará a carga ao vivo em vários parâmetros do sistema, além de gravar dados em um arquivo para leitura posterior. É uma ferramenta gratuita disponível aqui :
para descobrir qual é sua largura de banda total, você pode usar
hdparm -T /dev/sda
para testar o desempenho do cache do buffer (fileio)hdparm -t /dev/sda
para testar o desempenho de leitura do dispositivoexemplos: meu laptop recebe 82 MB/s do disco SATA e 2 GB/s do cache. Meu dekstop obtém 12 GB/s do cache e 500 MB/s do array RAID HW. Suspeito que esses últimos números possam ser o dobro em hardware de classe de servidor.
definir readahead superior a 256, 4096 funciona melhor para mim
vezes lendo 1 GB em diferentes tamanhos de bloco e diferentes leituras antecipadas
A ferramenta padrão para mostrar a carga do disco rígido é
iostat
.Ele não informará quanto %age de largura de banda de disco você está usando, pois não sabe quanta largura de banda seu disco possui. De qualquer forma, seu disco tem apenas o valor cotado pelo fabricante para grandes transferências de dados contíguos.
Eu acho que o RRDtool deve fazer o que você quiser aqui , ele usa um daemon para despejar os dados do sistema e depois permite que você os processe como quiser. Eu o usei frequentemente para produzir gráficos etc. para medir a carga do sistema.
htop é uma boa ferramenta 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.