Команда Linux iotop
iotop — это инструмент мониторинга системы Linux, похожий на команду top, но он ориентирован на отображение использования дискового I/O. Он может отслеживать активность чтения/записи диска каждого процесса в системе в реальном времени, помогая системным администраторам выявлять процессы с интенсивным I/O.
В отличие от таких инструментов, как iostat, iotop обеспечивает мониторинг I/O на уровне процессов, что позволяет точно определять скорость чтения/записи и совокупный объем I/O каждого процесса.
Установка iotop
В большинстве дистрибутивов Linux iotop не устанавливается по умолчанию, поэтому его нужно установить вручную:
Примеры
sudo apt-get install iotop
# Системы RHEL/CentOS
sudo yum install iotop
# Системы Fedora
sudo dnf install iotop
# Arch Linux
sudo pacman -S iotop
Базовый синтаксис
Базовый формат команды iotop выглядит следующим образом:
sudo iotop [选项]
Примечание: для запуска iotop требуются права root, поскольку ему необходим доступ к статистике ввода-вывода ядра.
Общие параметры и
| Опция | Описание |
|---|---|
-oили--only |
Отображать только процессы, фактически выполняющие операции ввода-вывода |
-bили--batch |
Неинтерактивный режим, подходящий для использования в скриптах |
-n NUM |
Количество итераций для выполнения в неинтерактивном режиме |
-d SEC |
Задать интервал обновления (секунды) |
-p PID |
Отслеживать только процессы с указанным PID |
-u USER |
Отслеживать только процессы указанного пользователя |
-Pили--processes |
Отображать только процессы, а не потоки |
-aили--accumulated |
Отображать суммарный ввод-вывод вместо пропускной способности |
-kили--kilobytes |
Использовать KB/s вместо B/s в качестве единицы измерения |
-tили--time |
Добавлять временные метки в вывод |
-qили--quiet |
Уменьшить информацию в заголовке (автоматически включается в неинтерактивном режиме) |
Горячие клавиши в интерактивном режиме
В интерактивном режиме iotop поддерживает следующие операции с горячими клавишами:
| Сочетание клавиш | Функция |
|---|---|
| Клавиши со стрелками влево/вправо | Изменить поле сортировки |
| r | Обратная сортировка |
| o | Показывать только активные процессы ввода-вывода (эквивалентно опции -o) |
| p | Переключить режим отображения процессов/потоков |
| a | Переключить режим отображения накопительных/в реальном времени данных |
| q | Выйти из iotop |
| i | Изменить фильтрацию по приоритету (показывать только процессы с более высоким приоритетом) |
| Любая клавиша | Принудительно обновить отображение |
Пояснение полей вывода
Вывод iotop содержит несколько полей, и значение каждого поля следующее:
- TID/PID: ID потока / ID процесса
- PRIO: приоритет ввода-вывода (значение Linux ionice)
- USER: владелец процесса
- DISK READ: скорость чтения с диска
- DISK WRITE: скорость записи на диск
- SWAPIN: процент использования пространства подкачки
- IO>: процент использования ввода-вывода
- COMMAND: имя процесса
Примеры использования
Пример 1: Базовый мониторинг
sudo iotop
Это запустит интерактивный интерфейс, отображающий активность ввода-вывода всех процессов, отсортированных по использованию ввода-вывода.
Пример 2: Отображение только активных процессов ввода-вывода
sudo iotop -o
Или нажмитеoклавишу после запуска iotop, чтобы отображать только процессы, выполняющие операции ввода-вывода в данный момент.
Пример 3: Мониторинг процессов конкретного пользователя
sudo iotop -u apache
Отслеживайте только активность I/O процессов пользователя apache.
Пример 4: Вывод в неинтерактивном режиме
sudo iotop -b -n 3 -d 2
Запустите в неинтерактивном режиме с обновлением каждые 2 секунды и завершите работу после вывода результатов 3 раза.
Пример 5: Мониторинг конкретного процесса
sudo iotop -p 1234
Отслеживайте только активность I/O процесса с PID 1234.
Практические сценарии применения
Сценарий 1: Определение причины замедления системы
Когда система начинает медленно отвечать, выполните:
sudo iotop -o
Это позволяет быстро определить, какие процессы интенсивно читают/записывают диск, создавая узкое место I/O в системе.
Сценарий 2: Мониторинг производительности базы данных
Для серверов баз данных, таких как MySQL:
sudo iotop -u mysql -o
Целенаправленно отслеживайте активность I/O пользователя mysql для анализа дисковой нагрузки базы данных.
Сценарий 3: Периодическая запись активности ввода-вывода
sudo iotop -b -t -n 5 -d 10 > iotop_log.txt
Записывайте активность ввода-вывода каждые 10 секунд, всего 5 раз, и сохраняйте результаты в файл для последующего анализа.
Примечания
- iotop требует поддержки ядром функции учета ввода-вывода, которая обычно включена в новых ядрах Linux.
- В некоторых виртуализированных средах iotop может неточно отображать статистику ввода-вывода.
- Частое обновление (например, интервалы менее 1 секунды) может влиять на производительность системы.
- Накопительная статистика ввода-вывода (опция -a) будет сброшена после перезагрузки системы.
- Для устройств SSD высокое время ожидания ввода-вывода может указывать на то, что устройство достигло предела своей производительности.
Альтернативные инструменты
Если iotop недоступен, рассмотрите следующие альтернативы:
- dstat: Комплексный инструмент мониторинга производительности, включает статистику дискового ввода-вывода
- atop: Расширенный инструмент мониторинга системы, включает статистику ввода-вывода на уровне процессов
- nmon: Инструмент мониторинга производительности AIX/Linux
- pidstat: часть набора утилит sysstat, может сообщать о вводе-выводе процессов
Итог
iotop — мощный инструмент для системных администраторов Linux для мониторинга активности дискового ввода-вывода. Благодаря мониторингу ввода-вывода на уровне процессов он позволяет быстро выявлять узкие места производительности. Освоение использования iotop позволяет эффективно диагностировать и решать проблемы производительности системы, связанные с дисковым вводом-выводом.
Другие расширения
Энциклопедия команд Linux