Назад | Перейти на главную страницу

Какая программа в Linux может измерять ввод-вывод с течением времени?

Я пытаюсь измерить общий объем записи и чтения с диска, выполняемой для определенного тома определенным процессом в течение определенного времени.

Я нашел iotop, который может выводить ввод-вывод каждую секунду для определенного процесса, например:

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

Где вы можете указать x итераций с помощью -n x.

Но затем мне нужно отфильтровать фактическое число и самому подсчитать его.

Есть ли более простой способ сделать это?

Не знаю более легкого пути, но этот фрагмент bash может помочь вам разобрать то, что вам нужно, из 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

На самом деле, может быть проще читать / proc / $ PID / io каждые x секунд:

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

На самом деле, похоже, что приведенный выше сценарий неверен, потому что похоже /proc/<pid>/io это всего лишь общая сумма, так что на самом деле, просто возьмите его один раз, подождите сколько угодно, возьмите его снова, найдите отличие и вот ваш ответ. Возможно, вы захотите взглянуть на исходный код и выяснить его тип данных, чтобы увидеть, будет ли он в конечном итоге завершен. Возможно, для маленького планшета это не проблема.

Возможно, это закончится, и вам может потребоваться настроить плагин, но вы можете попробовать "Мунин", графическое приложение, которое делает именно то, что вам нужно.

У него нет плагина для ввода-вывода для каждого процесса, но я уверен, что взломать его не так уж сложно. Затем вы получите всю добавленную стоимость munin / rrdtool со средними значениями за день / неделю / год, графиками, ограничениями, предупреждениями и т. Д.

Вы можете установить sysstat с помощью apt-get в большинстве дистрибутивов на основе Debian, включая Maemo, и запустите iostat для отслеживания общего количества чтения / записи на диск.

Просто убедитесь, что на диск больше ничего не записывается, что может быть или невозможно в вашей ситуации.

iostat выводит общее количество блоков, прочитанных и записанных с момента загрузки или в любой другой произвольный момент времени. Вы должны выяснить, насколько велик блок, чтобы знать, сколько данных записано.

Я сделал это, имея dd записать известный объем данных и разделить блоки.