Как просмотреть нагрузку на диск в Linux
Статистику по операциям ввода-вывода для дисков можно посмотреть при помощи команд iostat и pidstat. Это поможет понять какие процессы создают набольшую нагрузку на дисковую подсистему.
Для работы с этими утилитами придется установить дополнительные пакеты. Инструкция по установка:
1) Debian\Ubuntu:
Команда iostat
Просмотр общей статистики ввода-вывода по дискам можно осуществить командой:
$ iostat -xtc Linux 4.4.0-36-generic (ubuntu) 11/01/17 _x86_64_ (1 CPU) 11/01/17 17:12:42 avg-cpu: %user %nice %system %iowait %steal %idle 0.75 0.09 3.40 1.83 0.00 93.93 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util fd0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 60.00 60.00 0.00 60.00 0.00 sda 0.04 1.78 5.37 1.16 163.85 369.65 163.56 0.17 25.35 8.31 104.33 4.26 2.78 dm-0 0.00 0.00 5.02 2.91 156.09 369.65 132.48 0.20 25.26 8.56 54.04 3.39 2.69 dm-1 0.00 0.00 0.10 0.00 2.32 0.00 47.65 0.00 4.96 4.96 0.00 3.68 0.04
Важными столбцами являются:
- r/s Число операций чтения с диска в секунду
- w/s Число операций записи на диск в секунду
- rkB/s Число прочитанных килобайт за секунду
- wkB/s Число записанных килобайт за секунду
Команда pidstat
Просмотр статистики в разрезе процессов можно посмотреть в интерактивном режиме при помощи команды:
$ pidstat -dl 5 Linux 4.10.0-38-generic (mad) 01.11.2017 _x86_64_ (3 CPU) 17:28:03 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 17:28:08 1000 1248 0,00 0,80 0,00 0 /usr/bin/plasmashell —shut-up 17:28:08 1000 1336 0,00 0,80 0,00 0 /usr/lib/chromium-browser/chromium-browser —ppapi-flash-path=/usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so —ppapi-f 17:28:08 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 17:28:13 1000 1283 0,00 0,80 0,00 0 /usr/bin/yakuake 17:28:13 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 17:28:18 1000 1283 0,00 0,80 0,00 0 /usr/bin/yakuake 17:28:18 1000 1336 0,00 19,20 0,00 0 /usr/lib/chromium-browser/chromium-browser —ppapi-flash-path=/usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so —ppapi-f 17:28:18 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 17:28:23 1000 1283 0,00 3,20 0,00 0 /usr/bin/yakuake 17:28:23 1000 1336 0,00 13,60 0,00 0 /usr/lib/chromium-browser/chromium-browser —ppapi-flash-path=/usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so —ppapi-f 17:28:23 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 17:28:28 1000 1336 0,00 17,60 0,00 0 /usr/lib/chromium-browser/chromium-browser —ppapi-flash-path=/usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so —ppapi-f 17:28:28 1000 3353 0,00 22,40 0,00 0 /usr/lib/thunderbird/thunderbird
Важными столбцами являются:
- UID Идентификатор пользователя, от имени которого работает процесс
- PID Идентификатор процесса
- kB_rd/s Скорость в килобайтах в секунду, с которой процесс читает с диска
- kB_wr/s Скорость в килобайтах в секунду, с которой процесс записывает на диск
Кунг-фу стиля Linux: мониторинг дисковой подсистемы
Если, работая в Linux, нужно быстро взглянуть на сведения о работающих процессах — можно воспользоваться командой top , или — что немного лучше — командой htop . А как быть, если надо получить данные о состоянии дисковой подсистемы? Решить эту задачу помогут специализированные инструменты, некоторые из которых распространены далеко не так широко, как top .
Утилита iotop
Утилита iotop очень сильно похожа на top . Она выводит сведения об общем и текущем количестве операций обращения к диску для файловой системы. Кроме того, она сообщает о том, что именно интенсивнее всего нагружает диск. Экран iotop , на первый взгляд, переполнен информацией.
Вот совет по работе с этой утилитой. Если взглянуть на нижнюю часть экрана — там можно найти некоторые команды, вызываемые нажатиями на клавиши клавиатуры. Например, клавиша O скрывает (или отображает) все неактивные процессы. Это позволяет немного улучшить внешний вид сведений, выводимых iotop .
Сведения об использовании дисковой подсистемы активными процессами
Того же эффекта можно добиться, запустив iotop с ключом -o . Обратите внимание на то, что другие клавиатурные команды позволяют, например, выводить сведения о потоках, а не о процессах, менять режим вывода данных, задавать классы и приоритеты ввода-вывода процессов ( ionice ).
Утилита iostat
Если вас больше интересуют данные, относящиеся к самим дискам, а не к процессам или потокам, можете попробовать команду iostat . Она тоже выводит некоторые данные о процессах, но они представлены в обобщённом виде.
Эта команда запускается, собирает данные и выводит их, не обновляя в режиме реального времени. Если нужно периодически её перезапускать — можно, при её запуске, указать промежуток времени между получениями новых отчётов, и, что необязательно, общее количество перезапусков. При этом, если нужно, можно воспользоваться ключом командной строки -t для получения сведений о времени.
Правда, это приводит к прокрутке выходных данных программы. Если вы занимаетесь мониторингом дисковой активности, то, возможно, вам лучше подойдёт такой вариант запуска iostat :
Если запустить утилиту с ключом -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?
How to monitor disk activity?
How do I view my Disk Activity on Ubuntu? For example, How can I monitor what is being written and read from disk as well as the percentage of disk usage? I am looking for an application similar to the Resource Monitor in Windows.
6 Answers 6
You can use iotop. To install, open a terminal and execute the following command:
sudo apt-get install iotop
To use iotop, open a terminal and type the following command:
iotop features real-time display of all disk activity and also displays the command responsible for the activity and the user behind the command just like Resource Monitor.
Also similar to resource monitor is htop in it’s ability to identify and kill processes:
and to run htop in monitor mode:
or, for more features and permissions to fully debug and kill individual processes etc.:
Can you make iotop not list a certain process like peek which is recording iotop’s output into a .gif via ffmpg ?
@user25 For disk use, you will need to use a different command: df -h -t ext4 This prints in human readable format ( -h ) and assumes that you are using ext4 format ( -t ext4 ).
@WinEunuuchs2Unix sudo iotop $(echo $(ps -A | grep -v ffmpeg | grep -v peek | awk ‘
You can use htop.
Then open htop and configure it: F2 -> Columns -> Set IO_RATE (or IO_RATE_READ/IO_RATE_WRITE) -> F10
And you will see something like this:
Your screen shot shows DISK R/W, but I don’t see that in htop. What’s the difference between DISK R/W and IO_RATE, IO_RATE_READ/IO_RATE_WRITE?
DISK R/W appears when you choose IO_RATE column in setup . IO_RATE is a total I/O (read and write) in bytes per second.
Press d = Disk | Press c = CPU Info |Press r = RAM info | Press q = to exit
You can use dstat program. To install it, simply execute the command in a terminal
sudo apt-get install dstat
Using the dstat command, you will get a complete real time CPU/Network/Disk-Activity monitoring view like this
mas@mas-laptop:~ > dstat You did not select any stats, using -cdngy by default. ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 15 5 76 4 0 0| 181k 177k| 0 0 | 0 61B|1651 3609 5 0 95 0 0 0| 0 0 | 162B 1064B| 0 0 | 500 994 15 4 77 4 0 0| 0 292k| 302B 52B| 0 0 | 687 1919 6 1 92 1 0 0| 0 0 | 0 0 | 0 0 | 496 1089 5 1 94 1 0 1| 0 0 | 0 0 | 0 0 | 422 919 6 1 93 1 0 0| 0 0 | 0 0 | 0 0 | 517 1181 9 2 89 1 0 1| 0 0 | 0 0 | 0 0 | 494 1066
To only get the usage info for disk for load indicator upto most recent 15 mintues, use dstat —disk —fs —load command. A sample output is given below
$ dstat --disk --fs -dsk/total- --filesystem- ---load-avg--- read writ|files inodes| 1m 5m 15m 895k 186k|13728 100k|0.63 0.73 0.84 0 0 |13728 100k|0.63 0.73 0.84 0 0 |13728 100k|0.63 0.73 0.84 0 0 |13728 100k|0.63 0.73 0.84 0 12k|13728 100k|0.66 0.74 0.84 0 0 |13728 100k|0.66 0.74 0.84 0 0 |13728 100k|0.66 0.74 0.84 0 0 |13728 100k|0.66 0.74 0.84 0 0 |13728 100k|0.66 0.74 0.84^C
dstat —help has these info:
Usage: dstat [-afv] [options..] [delay [count]] Versatile tool for generating system resource statistics Dstat options: -c, --cpu enable cpu stats -C 0,3,total include cpu0, cpu3 and total -d, --disk enable disk stats -D total,hda include hda and total -g, --page enable page stats -i, --int enable interrupt stats -I 5,eth2 include int5 and interrupt used by eth2 -l, --load enable load stats -m, --mem enable memory stats -n, --net enable network stats -N eth1,total include eth1 and total -p, --proc enable process stats -r, --io enable io stats (I/O requests completed) -s, --swap enable swap stats -S swap1,total include swap1 and total -t, --time enable time/date output -T, --epoch enable time counter (seconds since epoch) -y, --sys enable system stats --aio enable aio stats --fs, --filesystem enable fs stats --ipc enable ipc stats --lock enable lock stats --raw enable raw stats --socket enable socket stats --tcp enable tcp stats --udp enable udp stats --unix enable unix stats --vm enable vm stats --plugin-name enable plugins by plugin name (see manual) --list list all available plugins -a, --all equals -cdngy (default) -f, --full automatically expand -C, -D, -I, -N and -S lists -v, --vmstat equals -pmgdsc -D total --float force float values on screen --integer force integer values on screen --bw, --blackonwhite change colors for white background terminal --nocolor disable colors (implies --noupdate) --noheaders disable repetitive headers --noupdate disable intermediate updates --output file write CSV output to file delay is the delay in seconds between each update (default: 1) count is the number of updates to display before exiting (default: unlimited)
For more information about this tool, look visit below links: