Если Вам повезло поймать следующий пиковый период использования, можно изучить статистику ввода-вывода для каждого процесса в интерактивном режиме, с помощью iotop.
Использовать btrace
. Это просто в использовании, например btrace /dev/sda
. Если команда не доступна, это, вероятно, доступно в пакете blktrace.
Править: Так как debugfs не включен в ядре, Вы могли бы попробовать date >>/tmp/wtf && ps -eo "cmd,pid,min_flt,maj_flt" >>/tmp/wtf
или подобный. Вход отсутствий страницы не, конечно, во все равно, чем использование btrace, но если Вы удачливы, это МОЖЕТ дать Вам некоторую подсказку о большей части диска голодные процессы. Я просто примерил тот из своих самых интенсивно использующих средства ввода-вывода серверов, и список включал процессы, которые я знаю, используют много ввода-вывода.
Ничто не сравнится с постоянным мониторингом, вы просто не можете получить обратно важные данные после события ...
Есть несколько вещей, которые вы могли бы сделать однако проверьте, чтобы выявить или исключить - / proc
- ваш друг.
sort -n -k 10 /proc/diskstats
sort -n -k 11 /proc/diskstats
Поля 10, 11 - это накопленные записанные сектора и суммарное время записи (мс). Это покажет ваши горячие разделы файловой системы.
cut -d" " -f 1,2,42 /proc/*/stat | sort -n -k +3
Это поля PID, command и кумулятивные тики ожидания ввода-вывода. Это покажет ваши горячие процессы, но только , если они все еще работают . (Вероятно, вы захотите проигнорировать потоки журналирования файловой системы.)
Полезность вышеизложенного зависит от времени безотказной работы, природы ваших длительных процессов и того, как используются ваши файловые системы.
Предостережения: не относится к предварительным версиям. -2.6 ядра, проверьте документацию, если не уверены.
Вы можно использовать pidstat для печати совокупной статистики io для каждого процесса каждые 20 секунд с помощью этой команды:
# pidstat -dl 20
Каждая строка будет иметь следующие столбцы:
Вывод выглядит следующим образом:
05:57:12 PM PID kB_rd/s kB_wr/s kB_ccwr/s Command
05:57:32 PM 202 0.00 2.40 0.00 jbd2/sda1-8
05:57:32 PM 3000 0.00 0.20 0.00 kdeinit4: plasma-desktop [kdeinit]
05:57:32 PM PID kB_rd/s kB_wr/s kB_ccwr/s Command
05:57:52 PM 202 0.00 0.80 0.00 jbd2/sda1-8
05:57:52 PM 411 0.00 1.20 0.00 jbd2/sda3-8
05:57:52 PM 2791 0.00 37.80 1.00 kdeinit4: kdeinit4 Running...
05:57:52 PM 5156 0.00 0.80 0.00 /usr/lib64/chromium/chromium --password-store=kwallet --enable-threaded-compositing
05:57:52 PM 8651 98.20 0.00 0.00 bash
05:57:52 PM PID kB_rd/s kB_wr/s kB_ccwr/s Command
05:58:12 PM 202 0.00 0.20 0.00 jbd2/sda1-8
05:58:12 PM 3000 0.00 0.80 0.00 kdeinit4: plasma-desktop [kdeinit]
Используйте поверх
. ( http://www.atoptool.nl/ )
Записать данные в сжатый файл, который поверх
может позже прочитать в интерактивном стиле. Снимайте показания (дельта) каждые 10 секунд. сделайте это 1080 раз (3 часа; поэтому, если вы забудете об этом, выходной файл не выйдет за пределы диска):
$ atop -a -w historical_everything.atop 10 1080 &
После того, как снова случится плохое:
(даже если он все еще работает в фоновом режиме, он просто добавляется каждые 10 секунд)
% atop -r historical_everything.atop
Поскольку вы сказали ввод-вывод, я бы нажал 3 клавиши: tdD
t - move forward to the next data gathering (10 seconds)
d - show the disk io oriented information per process
D - sort the processes based on disk activity
T - go backwards 1 data point (10 seconds probably)
h - bring up help
b - jump to a time (nearest prior datapoint) - e.g. b12:00 - only jumps forward
1 - display per second instead of delta since last datapiont in the upper half of the display