кто-нибудь может сказать мне про 11-е поле в / proc / diskstats? В документации указано, что это взвешенное количество миллисекунд, затраченных на выполнение операций ввода-вывода. Это похоже на количество миллисекунд, потраченных на DiskIO за секунду?
Я регистрировал это значение каждые 200 мс после вычитания из него предыдущего и наблюдал значение до 7000. Мне нужно построить график, показывающий скорость ввода-вывода диска. Вот сценарий:
#!/bin/bash
PREV_TOTAL=0
echo "" >> $1
while true; do
numbers=( $(tail -3 < /proc/diskstats | head -2 | awk '{print $14}' ) ) ;
let "TOTAL=$((${numbers[0]} + ${numbers[1]}))"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
time=`date +%s%N`
echo "$time $DIFF_TOTAL" >> $1
PREV_TOTAL="$TOTAL"
# Wait before checking again.
sleep 0.2
done
Кто-нибудь может объяснить это поле?
Из документация:
Field 11 -- weighted # of milliseconds spent doing I/Os
This field is incremented at each I/O start, I/O completion, I/O
merge, or read of these stats by the number of I/Os in progress
(field 9) times the number of milliseconds spent doing I/O since the
last update of this field. This can provide an easy measure of both
I/O completion time and the backlog that may be accumulating.
Поле увеличивается на время, затраченное на выполнение операций ввода-вывода, умноженное на количество выполняемых запросов ввода-вывода, поэтому время взвешивается по количеству активных запросов. Учитывается размер очереди ввода-вывода.
Например, машина, постоянно выполняющая ввод-вывод в течение последней секунды, но очередь, никогда не превышающая 1 запроса, будет иметь значение 1000. Машина также постоянно выполняет ввод-вывод в течение последней секунды, но со средней длиной очереди 10 запросов будет иметь стоимость 10 000.
из: http://www.mjmwired.net/kernel/Documentation/iostats.txt
Поле 11 - взвешенное количество миллисекунд, потраченных на выполнение операций ввода-вывода:
This field is incremented at each I/O start, I/O completion, I/O
merge, or read of these stats by the number of I/Os in progress
(field 9) times the number of milliseconds spent doing I/O since the
last update of this field. This can provide an easy measure of both
I/O completion time and the backlog that may be accumulating.