Вопрос или проблема
Пожалуйста, предложите лучший способ для отображения процессов, ограниченных вводом-выводом. Я знаю, что iotop
– лучший способ получить список, но мне нужен альтернативный вариант, так как в моей системе много процессов в состоянии D.
Дубликат: Linux – Как я могу увидеть, что ожидает операции с дисковым вводом-выводом, смотрите эту ссылку для простого решения.
Вы также можете включить журналирование дискового ввода-вывода, установив 1 в /proc/sys/vm/block_dump
. Затем tail -f /var/log/syslog
покажет вам чтения и записи (процесс, pid, операция, блоки и устройство). Не забудьте вернуть /proc/sys/vm/block_dump
в ноль, когда закончите.
Вы можете проверить использование ввода-вывода любого процесса, посмотрев на файл /proc/[pid]/io
. Пример:
$ cat /proc/1775/io
read_bytes: 4366336
write_bytes: 45056
cancelled_write_bytes: 229376
Ответ или решение
В отсутствие iotop, для списка процессов, связанных с использованием ввода-вывода (I/O), можно использовать несколько альтернативных методов. Ниже приведены наиболее эффективные команды и методы, которые помогут вам определить процессы с высокой нагрузкой на диск в вашем окружении.
1. Использование команды pidstat
Команда pidstat
из пакета sysstat предоставляет возможность отслеживать использование ресурсов, включая I/O. Она позволяет увидеть, какие процессы активно работают с диском. Для получения информации о процессе с I/O можно использовать следующую команду:
pidstat -d
Эта команда выводит сводную информацию об использовании I/O каждого PID на системе. В выводе будут поля kB_rd/s
и kB_wr/s
, которые показывают объем данных, считанных и записанных процессом в килобайтах в секунду.
2. Использование команды dstat
Если у вас установлен dstat, вы можете использовать его для мониторинга различных ресурсов системы, включая I/O. Запустите команду так:
dstat -cdngy
Эта команда предоставит вам стратегическую информацию о процессах, которые генерируют значительную нагрузку на ввод/вывод. Поле d
отвечает за I/O, а c
— за загрузку CPU.
3. Прямой доступ к файлам в /proc
Вы можете непосредственно проверить нагрузку процесса, обратившись к файлам в каталоге /proc
. Команда для отображения информации о I/O для конкретного процесса имеет следующий вид:
cat /proc/[pid]/io
Где [pid]
— это идентификатор процесса. Информация о read_bytes
, write_bytes
и cancelled_write_bytes
даст вам понимание о том, сколько данных процесс считывает и записывает.
4. Включение логирования дисковых операций
Как упоминалось в вашем запросе, можно также включить логирование операций с диском, установив значение 1 в файл /proc/sys/vm/block_dump
:
echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog
Эта команда будет выводить логи о том, какие процессы инициируют операции чтения и записи на диске. Не забудьте вернуть значение в 0 после завершения анализа:
echo 0 > /proc/sys/vm/block_dump
Заключение
При отсутствии iotop вы можете полагаться на команды pidstat
, dstat
или анализировать каталоги /proc
и включать логирование дисковых операций для того, чтобы выявить процессы с высокой зависимостью от I/O. Эти подходы обеспечивают гибкость в мониторинге и диагностике проблем, связанных с производительностью диска, и помогут вам выстраивать оптимизацию на основе полученных данных.