Que programa no Linux pode medir I / O ao longo do tempo?

5

Estou tentando medir a quantidade total de gravação e leitura em disco que é feita em um determinado volume por um processo específico em uma duração especificada.

Eu encontrei o iotop, que pode gerar IO a cada segundo para um processo específico como este:

iotop --batch --pid $(pidof my_process)

Onde você pode especificar x iterações com -n x .

Mas então eu tenho que filtrar o número real e registrá-lo sozinho.

Existe uma maneira mais fácil de fazer isso?

    
por Neil 07.10.2009 / 19:38

3 respostas

6

Não conheço um caminho mais fácil, mas este snippet bash pode ajudá-lo a analisar o que você precisa do iotop:

iotop --batch --pid 1 > log
line_num=0
while read line; do 
    line_num=$(($line_n+1)) 
    if [[ $(($line_num % 3)) -eq 0 ]]; then 
        #print Column 3
        echo $line | awk '{print $3}'
    fi 
done < log > processed_file
#Get total of column three:
cat processed_file | (tr '\n' +; echo 0) | bc

Na verdade, pode ser mais fácil ler / proc / $ PID / io a cada x segundos:

val=0
total=0
counter=0
pid=2323
while [[ $counter < 100 ]]; do 
    counter=$(($counter +1 ))
    #Change the sed number for different line, 5 is read_bytes
    val=$(cat /proc/$pid/io | sed -n '5p' | awk '{ print $2 }')
    total=$(($total + $val))
    echo $total 
    sleep 1 
done

Na verdade, parece que o script acima está errado, porque parece que /proc/<pid>/io é apenas o total, então, realmente, pegue-o uma vez, espere o tempo, pegue de novo, encontre a diferença e não há sua resposta . Você pode querer olhar para o código-fonte e descobrir seu tipo de dados para ver se ele eventualmente se envolve. Provavelmente não é um problema para um pequeno tablet.

    
por 07.10.2009 / 20:38
4

Pode ser mais de matar, e você pode precisar personalizar um plugin, mas você pode tentar " Munin ", que é um aplicativo gráfico que faz exatamente o que você precisa.

Ele não tem um plugin para IO por processo, mas tenho certeza que hackear um deles não é muito difícil. Você então obterá todo o valor agregado de munin / rrdtool com médias durante o dia / semana / ano, gráficos, limites, avisos, etc.

    
por 07.10.2009 / 19:43
0

Você pode instalar o sysstat com o apt-get na maioria das distribuições baseadas no Debian, incluindo o Maemo, e executar iostat para monitorar os totais de leitura / gravação do disco.

Apenas certifique-se de que nada mais esteja gravando no disco, o que pode ou não ser possível em sua situação.

iostat imprime o total de Blocos lidos e escritos desde a inicialização, ou algum outro ponto arbitrário no tempo. Você tem que descobrir o tamanho de um bloco para saber quantos dados são gravados.

Eu fiz isso com dd escrevendo uma quantidade conhecida de dados e dividindo os blocos.

    
por 13.10.2009 / 18:44