С top
легко узнать, сколько CPU использует каждая работа. Тем не менее, я хочу выследить работу, которая вызывает высокий процессор ожидания. Есть ли способ узнать, какие рабочие места заблокированы при вводе-выводе?
Как узнать, какой процесс потребляет "wait CPU" (т.е. Заблокирован I/O)
Ответ 1
iotop и latencytop может быть полезно. Ни то, ни другое не дает точно "время ожидания процессора, вызванное процессом" - я не уверен, что это даже имеет смысл, потому что процессор может и может отключиться для обслуживания других процессов, ожидая ввода-вывода, - но эти два инструмента дают обзор ( соответственно) системный трафик ввода-вывода и задержки планирования.
Ответ 2
Процессы, заблокированные в IO, - это те, которые помечены как D
в столбце состояния (верхний столбец S
).
Ответ 3
Чтобы быть более точным, используйте эту команду, чтобы легко узнать, какие процессы "съедают" ваши циклы процессора:
while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done
Этот URL-адрес может быть полезен: Linux Подождите IO Проблема
Ответ 4
Сделайте верх, затем смените F, затем выберите m или n, отсортируйте список процессов с использованием времени процессора.