Как узнать, какой процесс потребляет «ожидание ЦП» (т. Е. Блокировка ввода-вывода) - PullRequest
35 голосов
/ 20 марта 2009

С top легко узнать, сколько ЦП использует каждая работа. Тем не менее, я хочу найти работу, которая приводит к высокой загрузке процессора. Есть ли способ узнать, какие задания заблокированы при вводе-выводе?

Ответы [ 4 ]

58 голосов
/ 20 марта 2009

Процессы, заблокированные в IO, отмечены как D в столбце состояния (S столбец вверху).

39 голосов
/ 26 августа 2012

Чтобы быть более точным, используйте эту команду, чтобы легко узнать, какие процессы "съедают" ваши циклы ЦП:

while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done

Этот URL может быть полезен: Проблема с Linux Wait IO

35 голосов
/ 20 марта 2009

iotop и latencytop могут быть полезны. Ни один из них не дает точного «времени ожидания ЦП, вызванного процессом» - я не уверен, что это даже имеет смысл, потому что ЦП может и действительно уходит на обслуживание других процессов в ожидании ввода-вывода - но эти два инструмента дают обзор ( соответственно) системный трафик ввода-вывода и задержки планирования.

3 голосов
/ 11 июня 2013

Сделайте верх, затем сдвиньте F, затем выберите m или n, чтобы отсортировать список процессов по используемому времени процессора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...