У меня есть сервер, который имеет очень высокую нагрузку. Ничто не бросается в глаза с точки зрения использования процессора, и это не замена.
Я думаю, это потому, что некоторые процессы ожидают дискового ввода-вывода, и я хочу посмотреть, что ждет.
Есть ли программа, которая покажет мне, какие процессы ожидают ввода-вывода? Я знаю о, iotop
но это показывает, что в настоящее время делает IO.
Или это глупый вопрос? (Если так объясните как :))
iowait
информацию,iotop
требует повышенных привилегий.watch
,ps
иawk
дают только необходимую информацию, и не требуют повышенных привилегий.ps
флаги POSIX иawk
вычеркнул их по-другому:watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
- так вы получите заголовки столбцов, а также stat, pid и command.ps axu
и найдите процессы, которые находятся в состоянии "D". Основываясь на man-странице ps (1) , процессы, находящиеся в состоянии D, находятся в непрерывном режиме сна, что почти всегда означает «ожидание ввода-вывода». К сожалению, уничтожение этих процессов обычно невозможно.источник
Ответ Занчи - лучшее, что я знаю, чтобы узнать, что ждет IO.
Когда вы говорите, что ваш сервер находится под высокой нагрузкой, что вы подразумеваете под этим? Что-то, в частности, медленно реагирует?
Если вас интересует, является ли узким местом ваш дисковый ввод-вывод, я бы использовал команду iostat (часть пакета sysstat), чтобы проверить, действительно ли диск находится под большой нагрузкой.
Пример:
источник
Включите ведение журнала block_dump о том, какие процессы выполняют операции чтения / записи блока:
когда закончите, отключите трассировку, чтобы не спамить файлы журнала:
источник