Original article: http://kb.redhat.com/faq/docs/DOC-7888.pdf
Translated by Ivan Pesin, June 2009
Команда iostat предоставляет статистику операций ввода/вывода, но иногда администраторам требуется более детальная информация. В таких случаях может оказаться полезным файл /proc/diskstats. Ниже приведён пример выполнения команды cat /proc/diskstats
:
123456789101112 # cat /proc/diskstats1 0 ram0 0 0 0 0 0 0 0 0 0 0 0.........................................1 15 ram15 0 0 0 0 0 0 0 0 0 0 08 0 sda 13707 12045 788079 251532 3517 6016 76252 184444 077704 4359768 1 sda1 834 1670 2 48 2 sda2 23606 784578 9531 762488 3 sda3 1267 1431 0 022 0 hdc 9 9 144 544 0 0 0 0 0 468 5442 0 fd0 0 0 0 0 0 0 0 0 0 0 09 0 md0 0 0 0 0 0 0 0 0 0 0 0
Рассмотрим приведённый вывод:
Первые две колонки — это старший и младший номер устройства.
Третья колонка содержит имя устройства, после которого идут ещё 11 колонок.
Поле 1: количество выполненных операций чтения. Это общее число успешно завершённых операций чтения.
Поле 2: количество объединённых операций чтения.
Поле 3: количество считанных секторов. Это общее число успешно прочитанных секторов.
Поле 4: количество миллисекунд, затраченных на чтение. Это общее число миллисекунд, затраченных на операции чтения (измеряется от вызова __make_request() до end_that_request_last()).
Поле 5: количество выполненных операций записи. Это общее число успешно завершённых операций записи.
Поле 6: количество объединённых операций записи. Последовательные операции чтения и записи могут объединяться для повышения эффективности. Потому две операции считывания по 4K, могут стать одной операцией по считыванию 8K непосредственно перед передачей запроса диску. Таким образом, эти операции будут посчитаны (и выполнены) как одна операция ввода/вывода. Это поле показывает насколько часто происходит такая ситуация.
Поле 7: количество записанных секторов. Это общее число успешно записанных секторов.
Поле 8: количество миллисекунд, затраченных на запись. Это общее число миллисекунд, затраченных на операции записи (измеряется от вызова __make_request() до end_that_request_last()).
Поле 9: количество выполняемых операций ввода/вывода в текущий момент. Единственное поле, значение которого может уменьшаться до нуля. Увеличивается при передаче запросов соответствующей request_queue_t и уменьшается при их завершении.
Поле 10: количество миллисекунд, затраченных на выполнение операций ввода/вывода. Это значение возрастает, пока значение поля 9 не равно нулю.
Поле 11: взвешенное число миллисекунд, затраченных на выполнение операций ввода/вывода. При каждом начале, завершении,или объединении операций ввода/вывода, или при считывании этой статистики, это поле увеличивается на число выполняемых в текущий момент операций ввода/вывода (поле 9), умноженное на количество миллисекунд, затраченных на выполнение операций ввода/вывода, с момента последнего обновления данного поля. Это позволяет получить простую статистику как времени выполнения операций ввода/вывода, так и количества незавершённых операций, число которых может возрастать.
Прим.пер.: здесь рассматривается формат записи, относящийся к диску, не разделу. Для разделов представлены только 4 поля, аналоги описанных полей 1,3,5,7. Начиная с ядра 2.6.25 у разделов появился полный набор полей статистики.