Linux iostat disk utilization

5 useful commands to check disk performance in Linux

Analyzing disk issues is an important task for Linux admins. Disk I/O bottlenecks can bring down applications. In this tutorial, we will learn how to check disk space usage, disk load usage, disk iops, disk latency.

Hope this post can give you more ideas on how to troubleshoot disk problems.

  • Check Disk Space Usage with df
  • Check Disk Utilization In Linux
  • Check Disk IOPS and Bandwidth In Linux
  • Check IO usage by Process
  • Check Disk Latency On Storage Side

Check Disk Space Usage with df command in Linux

With df command in Linux, we can get the disk space usage. The commonly used option is -h. It displays disk usage in a more human-readable format. The df command only targets a full filesystem. Even if we specify an individual directory, df will read the space of the whole disk.

The following options are commonly used.

  • -h, –human-readable print sizes in human readable format (e.g., 1K 234M 2G)
  • -i, –inodes list inode information instead of block usage
  • -t, –type=TYPE limit listing to file systems of type TYPE
  • -T, –print-type print file system type

Check Disk Utilization with iostat command in Linux

From iostat command, we can get the disk utilization. Disk utilization is the disk load usage. From this metric, we can see that the disk is busy or not. It is used to calculate the time percent that a disk was busy actively performing work during an interval.

A disk at 0% utilization is “idle,” and a disk at 100% utilization is continually busy performing I/O (and other disk commands). If they remain at 100% for some time, there should be a performance issue.

If your backend is a storage system, the %util doesn’t mean anything with the workload. You can add more workload even the disk utilization is 100%.

Note that disk utilization is an interval summary. Disk I/O can occur in bursts, especially due to write flushing, which can be disguised when summarizing over longer intervals.

Check Disk IOPS and Bandwidth with iostat command in Linux

With the iostat command, we can get IOPS data and disk bandwidth data from r/s w/s rkB/s wkB/s columns. Troubleshoot high iowait issue on Linux

Workload spike could cause IO performance problems. The underlying disk can not support this workload during that time and it leads to a very high disk utilization issue.

Читайте также:  Coding editor for linux

Check disk IO usage by Process with iotop command in Linux

The iotop command is top-like utility for looking at disk I/O. It provides an easy way to monitor Linux Disk I/O usage details and prints a table of existing I/O utilization by process or threads on the systems.

The following are some important iotop usage and keyboard shortcuts.

  • Move left or right arrow key to change the sorting.
  • Use –version option to see version number and exit.
  • Use -h option to see information of usage.
  • Use -r option to reverse the sorting order.
  • Use -o option to check processes or thread.
  • Use -b option to Turn On non-interactive mode to enable logging I/O usage.

Check Disk Latency On Storage Side

High storage latency is another important factor for disk performance issues. In this case, we need to check the LUN response time from the storage dashboard. High response time definitely impacts the disk utilization on the host side. Engaging your storage vendor in a timely manner is a good solution for this.

David is a Cloud & DevOps Enthusiast. He has years of experience as a Linux engineer. He had working experience in AMD, EMC. He likes Linux, Python, bash, and more. He is a technical blogger and a Software Engineer. He enjoys sharing his learning and contributing to open-source.

howtouselinux.com is dedicated to providing comprehensive information on using Linux.

We hope you find our site helpful and informative.

Источник

Sysadminium

Утилита iostat, также как iotop показывает информацию о нагрузке на дисковую подсистему. Но iostat показывает лишь общую нагрузку.

Об утилите

Утилита iostat используется для мониторинга нагрузки на дисковую подсистему. Она создает отчеты, первый отчет генерируется статистикой с момента загрузки системы и до выполнения команды. Но каждый последующий отчет охватывает время с момента предыдущего отчета.

Отчет состоит из статистики по CPU, и статистики для каждого диска или раздела. Эта утилита входит в пакет sysstat, который вначале нужно установить:

Работа с iostat

Если выполнить эту команду без дополнительных опций, то вы увидите 1 отчет:

$ iostat Linux 5.15.0-48-generic (ubu-22) 17.10.2022 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0,02 0,01 0,03 0,02 0,00 99,93 Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd loop0 0,00 0,01 0,00 0,00 2634 0 0 loop1 0,00 0,00 0,00 0,00 930 0 0 loop2 0,00 0,00 0,00 0,00 1148 0 0 loop3 0,00 0,00 0,00 0,00 1139 0 0 loop4 0,00 0,00 0,00 0,00 360 0 0 loop5 0,00 0,11 0,00 0,00 40389 0 0 loop6 0,00 0,09 0,00 0,00 30395 0 0 loop7 0,00 0,00 0,00 0,00 14 0 0 sda 1,10 7,65 12,90 55,45 2698466 4548696 19560200 sr0 0,00 0,00 0,00 0,00 1 0 0

Так как этот пример был выполнен на Ubuntu 11, то здесь много устройств loop, которые монтируются в различные подкаталоги /snap/. Я, в этом курсе, ничего про пакеты приложений snap не рассказываю. Но если коротко, это такие пакеты приложений, которые распространяются как файловые системы. Поэтому, когда вы устанавливаете snap пакет, то у вас скачивается пакет (файл в виде файловой системы). И затем, этот пакет монтируется в определённую точку монтирования. В Debian 11 вы не увидите таких разделов, так как там snap по умолчанию не используется.

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

Теперь возвратимся к выводу iostat. Эта утилита отображает информацию в разных строках. Каждая строка имеет свой набор полей.

Выводимая информация

В первой строке вы увидите информацию об установленной системе:

Linux 5.15.0-48-generic (ubu-22) 17.10.2022 _x86_64_ (2 CPU)

Здесь мы видим версию ядра, hostname, текущую дату, архитектуру и количество ядер.

Во второй строке мы видим информацию об использовании процессора:

avg-cpu: %user %nice %system %iowait %steal %idle 0,02 0,01 0,03 0,02 0,00 99,93
  • %user — процент времени когда процессор обрабатывал пользовательские процессы;
  • %nice — процент времени когда процессор был занят процессами с пониженным приоритетом;
  • %system — процент времени когда процессор был занят процессами ядра;
  • %iowait — процент времени в течении которого процессор ожидал систему ввода вывода;
  • %steal — процент времени в течении которого процессор не был доступен виртуальной машине, будет расти если виртуальной машине выделить больше ядер, чем есть физически есть у гипервизора;
  • %idle — процент времени когда процессор простаивал.

В следующих строках показана нагрузка на все смонтированные файловые системы. Например, вот строка показывающая нагрузку на реальный диск (sda):

Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd sda 1,10 7,65 12,90 55,45 2698466 4548696 19560200
  • Device — имя устройства.
  • tps — транзакций в секунду. Несколько логических транзакций могут быть объединены в одну.
  • Blk_read/s (kB_read/s, MB_read/s) — объем данных, считываемых с устройства. Может измеряться в блоках (512 байт), килобайтах или мегабайтах.
  • Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s) — объем данных, записываемых на устройство.
  • Blk_read (kB_read, MB_read) — общее количество прочитанных блоков (килобайтов, мегабайтов);
  • Blk_wrtn (kB_wrtn, MB_wrtn) — общее количество записанных блоков (килобайтов, мегабайтов).

Если запустить iostat с опцией -x, то увидим больше информации:

  • r/s — число запросов на чтение.
  • w/s — число запросов на запись.
  • rsec/s (rkB/s, rMB/s) — число секторов (kB, MB), считываемых в секунду.
  • wsec/s (wkB/s, wMB/s) — число секторов (kB, MB), записываемых в секунду.
  • rrqm/s — число запросов на чтение, которые были поставлены в очередь за секунду.
  • wrqm/s — число запросов на запись, которые были поставлены в очередь за секунду.
  • %rrqm — процент запросов на чтение перед отправкой на устройство.
  • %wrqm — процент запросов на запись перед отправкой на устройство.
  • r_await — среднее время (в миллисекундах) для запросов на чтение. Включает время, потраченное в очереди и на обслуживание.
  • w_await — среднее время (в миллисекундах) для запросов на запись. Включает время, потраченное в очереди, и на обслуживание.
  • aqu-sz — средняя длина очереди запросов, отправленных устройству.
  • rareq-sz — средний размер (в килобайтах) запросов на чтение, отправленных устройству.
  • wareq-sz — средний размер (в килобайтах) запросов на запись, отправленных устройству.
  • avgqu-sz — средняя длина очереди запросов.
  • %util — использование полосы пропускания для устройства. Для RAID и SSD не актуально.
Читайте также:  Linux монтирование usb дисков

Дополнительные опции

Как вы поняли, без опций утилита iostat показывает статистику за период, от времени включения сервера и до выполнения этой команды.

Двумя числами, после команды, мы можем указать интервал повторения и количество повторений выполнения этой команды. Также мы можем указать конкретный диск, чтобы не получать информацию по всем.

Например, каждые 2 секунды, 4 отчета для устройства sda:

$ iostat 2 4 sda Linux 5.15.0-48-generic (ubu-22) 17.10.2022 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0,02 0,01 0,03 0,02 0,00 99,93 Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd sda 1,10 7,61 12,84 55,15 2698878 4555096 19560200 avg-cpu: %user %nice %system %iowait %steal %idle 0,00 0,00 0,00 0,00 0,00 100,00 Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd sda 0,00 0,00 0,00 0,00 0 0 0 avg-cpu: %user %nice %system %iowait %steal %idle 0,00 0,00 0,00 0,25 0,00 99,75 Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd sda 1,00 0,00 6,00 0,00 0 12 0 avg-cpu: %user %nice %system %iowait %steal %idle 0,00 0,00 0,00 0,00 0,00 100,00 Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd sda 0,00 0,00 0,00 0,00 0 0 0

Если не указать количество отчетов, то вывод будет бесконечным.

Также мы можем использовать дополнительные опции:

  • — информация только по cpu;
  • -d — информация только по дискам;
  • -h — информация в удобном для человеке формате;
  • -k — информация в килобайтах;
  • -m — информация в мегабайтах;
  • -p — показать разделы диска;
  • p — выводить информацию только по определенному устройству (sda1);
  • -t — выводить время в которое сформировался отчет;
  • -x — вывести расширенную статистику;
  • -y — пропустить первый отчет, от начала загрузки системы;
  • -z — не выводить устройства на которых не было операций ввода вывода.

Например, будем получать информацию каждую секунду, в течении 6 раз. А также, получать информацию будем только по дискам, в удобном для человека виде, и пропустим первый отчет. И выводить информацию будет только по диску sda:

$ iostat 1 6 -dhy sda Linux 5.15.0-48-generic (ubu-22) 17.10.2022 _x86_64_ (2 CPU) tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd Device 0,00 0,0k 0,0k 0,0k 0,0k 0,0k 0,0k sda tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd Device 0,00 0,0k 0,0k 0,0k 0,0k 0,0k 0,0k sda tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd Device 0,00 0,0k 0,0k 0,0k 0,0k 0,0k 0,0k sda tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd Device 0,00 0,0k 0,0k 0,0k 0,0k 0,0k 0,0k sda tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd Device 2,00 0,0k 24,0k 0,0k 0,0k 24,0k 0,0k sda tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd Device 4,00 0,0k 16,0k 0,0k 0,0k 16,0k 0,0k sda

Итог

В этой статье мы познакомились с утилитой iostat. В отличии от iotop она не может показать информацию в разрезе процессов. Но зато iostat может показать больше информации о нагрузке на дисковую подсистему в целом.

Источник

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