Я пытаюсь измерить общий объем записи и чтения с диска, выполняемой для определенного тома определенным процессом в течение определенного времени.
Я нашел 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
записать известный объем данных и разделить блоки.