Описание iostat Linux
Утилита iostat позволяет проанализировать загруженность системы. Она выводит основные параметры ввода и вывода данных на диск, скорость записи и чтения данных, а также количество записанных или прочитанных данных. Кроме того, утилита выводит параметры загруженности процессора. Её можно использовать для оптимизации работы системы.
В этой статье мы рассмотрим как пользоваться iostat и что означают основные колонки в её выводе.
Описание iostat Linux
Синтаксис iostat очень простой. Вам достаточно выполнить:
$ iostat опции устройство интервал
Параметры устройство и интервал необязательные. Первый указывает по какому устройству показывать статистику, а второй, с каким интервалом обновлять данные. Давайте сначала рассмотрим опции программы, которые могут вам пригодится:
- -с — отобразить только информацию об использовании процессора;
- -d — отобразить только информацию об использовании устройств;
- -h — выводить данные в отчёте в удобном для чтения формате;
- -k — выводить статистику в килобайтах;
- -m — выводить статистику в мегабайтах;
- -o JSON — выводить статистику в формате JSON;
- -p — вывести статистику по устройству и всех его разделам;
- -x — вывести расширенную статистику;
- -y — отображать статистику с момента запуска утилиты, а не системы;
- -z — спрятать информацию о дисках, у которых нет активности.
Использование iostat в Linux
Самый простой пример использования утилиты, это запустить её без параметров. Она выведет отчёт с со средней статистикой с момента включения системы до момента запуска программы:
В первой части отчёта находится информация о загруженности процессора. Тут есть такие колонки:
- %user — процент использования процессора программами, запущенными на уровне пользователя;
- %nice — процент использования процессора программами запущенными тоже в пространстве пользователя, но только с изменённым приоритетом;
- %system — процент использования процессора ядром;
- %iowait — процент времени затраченного на ожидание завершения операций ввода/вывода;
- %steal — процент простоя виртуального процессора, пока гипервизор отдаёт мощность другому виртуальному процессору;
- %idle — процент времени пока процессор не занят ничем.
Если значение параметра %iowait слишком большое, то это может означать, что у вас проблема с производительностью диска и слишком много времени тратится на ожидание завершения ввода/вывода. Для устройств ввода/вывода тоже отображается ряд колонок с информацией. Разберемся что они означают:
- tps — означает количество запросов на чтение или запись к устройству в секунду;
- KB_read/s, MB_read/s — количество килобайт или мегабайт, прочитанных с устройства за секунду;
- KB_wrtn/s, MB_wrtn/s — количество килобайт или мегабайт записанных на устройство в секунду;
- KB_dscd/s, MB_dscd/s — скорость освобождения блоков данных на устройстве, килобайт или мегабайт в секунду;
- KB_read, MB_read — общее количество прочитанных данных с диска с момента загрузки системы;
- KB_wrtn, MB_wrtn — количество записанных данных с момента загрузки системы;
- KB_dscd, MB_dscd — количество освобождённых блоков на диске в результате выполнения операции trim в килобайтах или мегабайтах.
С чтением и записью, я думаю, что всё понятно. Освобождение блоков с данными с помощью операции trim или discard актуально для SSD дисков. Этой операцией файловая система сообщает какие блоки больше хранить физически не нужно и можно использовать для других целей. Утилита отображает с какой скоростью эти блоки освобождаются, а также сколько блоков или мегабайт данных было освобождено. Рассмотрим ещё несколько примеров. Для просмотра данных в удобном формате выполните:
Чтобы посмотреть данные по нужному устройству просто укажите это устройство:
Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p:
Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал. Например:
sudo iostat -p /dev/nvme0n1 1
Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал:
sudo iostat -y -p /dev/nvme0n1 1
Выводы
В этой статье была рассмотрена команда iostat Linux. Она позволяет понять почему зависает ваша система и действительно ли причина этому — жёсткий диск. Мы рассмотрели далеко не все опции утилиты и далеко не все колонки из возможного её вывода. Более подробную информацию вы можете найти выполнив:
Самая свежая и достоверная информация, как правило, заполняется разработчиками и находится на man — страницах.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Как просмотреть нагрузку на диск в 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 Скорость в килобайтах в секунду, с которой процесс записывает на диск
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: