Linux мониторинг дисковой активности

Как отследить, какой процесс создаёт нагрузку на диск

Чрезмерная нагрузка на диск может быть вызвана такой причиной как заражение вирусом либо неправильная настройка программ. В любом случае, необходимо начать с идентификации процесса (программы), которая больше всего делает операций чтения и записи на диск.

iotop — аналог top для отслеживания нагрузки на диск в реальном времени

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

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

Для установки iotop в Debian, Linux Mint, Kali Linux, Ubuntu и их производные выполните команду:

Для установки iotop в Arch Linux, BlackArch, Manjaro и их производные выполните команду:

Программа требует повышенных привилегий для запуска:

В выводе программы присутствуют следующие столбцы:

  • TID — идентификатор процесс
  • PRIO — приоритет процесса
  • USER — пользователь, который является владельцем процесса
  • DISK READ — скорость чтения диска
  • DISK WRITE — скорость записи на диск
  • SWAPIN — процент использования файла подкачки
  • IO> — процент от всех операций ввода-вывода
  • COMMAND — запустившая процесс команда

С помощью курсорных клавиш вправо () и влево () вы можете переключаться между столбцами, одновременно выбирая, по какому из них будет выполнятся сортировка.

С помощью кнопок «Home» и «End» вы можете переключаться между крайними столбцами.

Нажатие любой клавиши обновит окно.

Для выхода нажмите «q».

Нажав клавишу «o» вы переключитесь на показ только активных процессов, то есть только процессов, которые записывают и считывают данные с постоянного хранилища. Такой же результат вы можете получить запустив программу с опцией -o:

Повторное нажатие клавиши «o» вернёт показ всех процессов.

По умолчанию используется сортировка по убыванию, с помощью кнопки «r» вы можете переключаться между сортировкой по убыванию и по возрастанию.

Кнопка «p» переключает между показами процессов и потоков.

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

У iotop имеется несколько опций, которые позволяют управлять поведением программы, например следующая команда будет работать в пакетном режиме (-b), показывая общее количество записанных и прочитанных данных (-a) только для активных процессов (-o), к выводимым данным будет добавляться метка времени (-t), из всех процессов будет отфильтрована только информация о systemd-journald (grep ‘systemd-journald’):

iotop -b -a -o -t | grep 'systemd-journald'

pidstat — вывод статистики для задач Linux

Пакет sysstat содержит сразу две утилиты с помощью которых можно собрать статистику использования диска процессами:

Читайте также:  There is no wlan0 in kali linux

Для установки pidstat в Debian, Linux Mint, Kali Linux, Ubuntu и их производные выполните команду:

Для установки pidstat в Arch Linux, BlackArch, Manjaro и их производные выполните команду:

Следующая команда будет выводить накопленную статистику за каждые 20 секунд, будут показаны только активные процессы (сделавшие операции чтения и записи на диск за указанный интервал), также будет показана полная команда, запустившая процесс. Для более полной статистики запустите программу с повышенными привилегиями:

Каждая строка будет иметь следующие столбцы:

  • Метка времени
  • UID — числовой идентификатор пользователя
  • PID — идентификатор процесса
  • kB_rd/s — количество килобайт в секунду которые были прочитаны по инициативе указанной задачи
  • kB_wr/s — количество килобайт в секунду которые были (или должны были быть) записаны по инициативе указанной задачи
  • kB_ccwr/s — количество килобайт, запись которых на диск была отменена задачей. Это может произойти, когда задача усекает грязный кэш страниц. В этом случае некоторые операции ввода-вывода, для которых была учтена другая задача, не будут выполняться
  • iodelay — задержка ввода-вывода
  • Command — команда, запустившая задачу

iostat — статистика использования устройств и разделов дисков

Утилита iostat также включена в пакет sysstat. Как можно догадаться из названия программы, она создаёт отчёты по статистике ввода/вывода для устройств и разделов. Её особенностью является то, что она показывает обобщённую статистику для всей системы, а также для отдельных носителей, не разбивая её на процессы. Программа iostat может пригодиться когда необходимо ответить на вопрос: «какой из постоянных носителей подвергается наибольшей нагрузке?».

Запуск программы без опций

выведет два блока информации:

Раздел со статистикой использований устройств содержит следующие разделы:

  • Device — имя устройства или раздела, как оно указано в /dev
  • tps — указывает количество передач в секунду, отправленных на устройство. Передача — это запрос ввода-вывода к устройству. Несколько логических запросов можно объединить в один запрос ввода-вывода к устройству. Размер перевода является неопределённой величиной
  • kB_read/s — указывает объём данных, считанных с устройства, выраженный в количестве блоков (килобайт, мегабайт) в секунду. Блоки эквивалентны секторам и поэтому имеют размер 512 байт
  • kB_wrtn/s — указывает объём данных, записываемых на устройство, выраженный в количестве блоков (килобайт, мегабайт) в секунду
  • kB_dscd/s — указывает количество данных, отбрасываемых устройством, выраженное в количестве блоков (килобайт, мегабайт) в секунду
  • kB_read — общее количество прочитанных блоков (килобайт, мегабайт)
  • kB_wrtn — общее количество записанных блоков (килобайт, мегабайт)
  • kB_dscd — общее количество отброшенных блоков (килобайт, мегабайт)

Отчёт выводит для всей системы с момента её загрузки.

Поскольку по умолчанию данные выводятся в килобайтах, а современные объёмы информации, записываемой на диск, обычно кратны гигабайтом, что цифры трудны для восприятия. Для вывода чисел в удобных для восприятия единицах используйте опцию -h:

Читайте также:  What is inodes in linux

Опция -h является эквивалентом указания сразу двух опций —human и —pretty, поэтому если вы не в полной мере довольны видом выводимого отчёта, то попробуйте использовать эти опции по отдельности.

Для вывода максимальной полной информации, укажите опцию -x:

Если вам нужна информация только об устройствах, то используйте опцию -d:

Вы можете запустить команду указав время интервала (в секундах) и счётчик (количество отчётов) — в этом случае программа будет выводить информацию через заданный интервал:

iostat ИНТЕРВАЛ iostat ИНТЕРВАЛ СЧЁТЧИК

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

Для поиска проблем, вы можете использовать следующую команду, которая непрерывно будет выводить информацию:

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

Связанные статьи:

Источник

Кунг-фу стиля Linux: мониторинг дисковой подсистемы

Если, работая в Linux, нужно быстро взглянуть на сведения о работающих процессах — можно воспользоваться командой top , или — что немного лучше — командой htop . А как быть, если надо получить данные о состоянии дисковой подсистемы? Решить эту задачу помогут специализированные инструменты, некоторые из которых распространены далеко не так широко, как top .

Утилита iotop

Утилита iotop очень сильно похожа на top . Она выводит сведения об общем и текущем количестве операций обращения к диску для файловой системы. Кроме того, она сообщает о том, что именно интенсивнее всего нагружает диск. Экран iotop , на первый взгляд, переполнен информацией.

Вот совет по работе с этой утилитой. Если взглянуть на нижнюю часть экрана — там можно найти некоторые команды, вызываемые нажатиями на клавиши клавиатуры. Например, клавиша O скрывает (или отображает) все неактивные процессы. Это позволяет немного улучшить внешний вид сведений, выводимых iotop .

Сведения об использовании дисковой подсистемы активными процессами

Того же эффекта можно добиться, запустив iotop с ключом -o . Обратите внимание на то, что другие клавиатурные команды позволяют, например, выводить сведения о потоках, а не о процессах, менять режим вывода данных, задавать классы и приоритеты ввода-вывода процессов ( ionice ).

Утилита iostat

Если вас больше интересуют данные, относящиеся к самим дискам, а не к процессам или потокам, можете попробовать команду iostat . Она тоже выводит некоторые данные о процессах, но они представлены в обобщённом виде.

Эта команда запускается, собирает данные и выводит их, не обновляя в режиме реального времени. Если нужно периодически её перезапускать — можно, при её запуске, указать промежуток времени между получениями новых отчётов, и, что необязательно, общее количество перезапусков. При этом, если нужно, можно воспользоваться ключом командной строки -t для получения сведений о времени.

Правда, это приводит к прокрутке выходных данных программы. Если вы занимаетесь мониторингом дисковой активности, то, возможно, вам лучше подойдёт такой вариант запуска iostat :

Читайте также:  Linux как поставить время

Если запустить утилиту с ключом -x — можно получить более подробные сведения о дисках. Флаг -z позволяет отключить вывод сведений об устройствах, на которых нет данных.

Утилита duf

Вы, вероятно, не найдёте в своей системе утилиту duf . Если это так — можете установить её с GitHub. Те же результаты, правда, можно получить, воспользовавшись df и ещё некоторыми командами, но преимущество duf заключается в том, что эта программа представляет данные в удобном для просмотра виде.

При запуске этой утилиты можно воспользоваться опциями командной строки, которые позволяют скрывать устройства, задавать ширину таблиц, выводимых на экране, по-разному сортировать выводимые данные. Ещё можно указать максимальную ширину таблиц, генерируемых программой. Подробности о работе с duf можно узнать, запустив утилиту с ключом —help .

Вывод сведений об открытых файлах с помощью lsof

Если нужно узнать о том, какие именно файлы открыты в системе, сделать это можно с помощью команды lsof . Она выводит подробную информацию, а в работающих системах обычно открыто очень много файлов. Поэтому lsof обычно используют, указывая имя файла, или комбинируя этот приём с grep . Это позволяет узнать сведения только о том, что нужно.

При использовании lsof нужно помнить о том, что шаблоны тут, по умолчанию, не работают. Поэтому следующая команда выведет лишь сведения о директории /home/alw . А вот, например, сведения о процессах, которые открыли какие-нибудь файлы в этой директории, такая команда не выведет.

Для того чтобы это изменить, можно запустить lsof с ключом -d или -D . Ключ, представленный буквой в нижнем регистре, приводит к поиску директорий и файлов на верхнем уровне. Ключ -D выполняет рекурсивный поиск. Эта команда поддерживает и много других опций, которые можно применять, например, для поиска файлов, открытых пользователем с заданным ID, или для поиска по заданному имени команды.

Дополнительный инструмент: atop

Одной из замен команды top является atop . Хотя эта команда и не нацелена исключительно на мониторинг дисковых операций, она даёт сведения о том, как процессы пользуются дисками, и, кроме того, предоставляет некоторые сводные сведения. Обычно после запуска atop в верхней части формируемого ей вывода имеется строка DSK , в которой присутствуют сведения о диске. Эти данные, по мере приближения уровня использования диска к 100%, выделяются красным цветом. Данные, выводимые в нижней части, похожи на те, что даёт команда top .

Для сортировки процессов по уровню использования дисков можно воспользоваться клавишей D . Это — полезный инструмент.

Итоги

Для того чтобы получить сведения о дисках в Linux можно применить десятки различных инструментов. Собственно говоря, нечто подобное справедливо и для решения многих других задач. Если вам интересны подробности о том, что именно выводит htop (похожие данные формируют, кроме того, top и atop ) — взгляните на этот материал.

Как вы мониторите дисковую подсистему в Linux?

Источник

Оцените статью
Adblock
detector