Теоретически вы можете получить iowait
для каждого процесса из /proc/[pid]/stat
, так как из соответствующего блока PROC (5)мы читаем:
(42) delayacct_blkio_ticks %llu (since Linux 2.6.18)
Aggregated block I/O delays, measured in clock ticks (centiseconds).
Я понятия не имею, что delayacct_blkio_ticks
означает на практике. В любом случае, единственный man proc
будет вам полезен.
Есть связанный вопрос, проверьте его:Измерение задержек ввода/вывода блока с помощью proc FS
Кроме того, обратите внимание на примечания для /proc/stat
в блоке per CPU iowait
:
.
- The CPU will not wait for I/O to complete; iowait is the time that a task is waiting for I/O to complete. When a CPU goes into idle state for outstanding task I/O, another task will be scheduled on this CPU.
- On a multi-core CPU, the task waiting for I/O to complete is not running on any CPU, so the iowait of each CPU is difficult to calculate.
- The value in this field may decrease in certain conditions.
Вы можете получить iowait
данные для каждого процессора из /proc/stat
. На моей Ubuntu 18.04 в /proc/stat
есть такая часть:
cpu 2752162 16054 941158 49212025 789607 0 217089 0 0 0
cpu0 1397207 7767 500620 24623046 407078 0 70574 0 0 0
cpu1 1354955 8286 440538 24588978 382529 0 146515 0 0 0
Пятый столбец помимо столбца cpu
s — это iowait
значение в моем конкретном случае . Количество столбцов и их значение могут различаться в зависимости от используемого вами ядра.
Чтобы получить точное значение каждого столбца, вы должны посмотреть свою документацию. В Ubuntu сначала установите пакет linux-doc
:
sudo apt install linux-doc
и посмотрите наman proc
:
man proc
Для каждой колонки есть часть с точным /proc/stat
пояснением.
Прочтите дополнительно Как читать файл Linux /proc/stat , чтобы знать, как вычислять значения.
В CentOS необходимо установить пакет kernel-doc
:
yum install kernel-doc
затем прочитайте файл:
/usr/share/doc/kernel-doc/Documentation/filesystems/proc.txt