Как я могу узнать, связан ли процесс с процессором, памятью или диском?

42

Как я могу узнать, связан ли процесс с процессором, памятью или диском?

ssanj
источник
Если вы используете графический интерфейс пользователя gnome, вы можете добавить апплет System Monitor на свою панель. В настройках вы можете установить потерянные циклы для IO-Wait, чтобы они отображались белым цветом, и выставить графики памяти, процессора и чтения / записи диска. Я обычно меняю цвета графиков по умолчанию, чтобы было легче различать память пользователя / ОС и чтение / запись диска. Это не настоящее решение, но удобно иметь рядом со всеми инструментами, упомянутыми в ответах.
Джереми
1
@ luis-alvarado Я бы не согласился с тем, что этот вопрос бесполезен, хотя я бы сказал, что он лучше подходит для StackOverflow и тому подобного. Я пришел сюда в поисках решения.
скеггсе
Проблема с заданным вопросом заключается в том, что он не учитывает среду исполнения. Какой метод наиболее эффективен при обнаружении узкого места в узле компонента задания / процесса, тесно связан с средой выполнения, средой исполнения, ОС хоста, оборудованием и т. Д. Задания, и какие инструменты доступны для каждого компонента для его проверки. Некоторые среды выполнения (например, среда исполнения Erlang или JVM от IBM) имеют для этого всесторонние инструменты, которые охватывают всю среду, в других полностью отсутствует инструментарий, и вы оставляете у вас образованные догадки на основе любого htop / iotop / etc. могу показать тебе.
zxq9
Связанный: stackoverflow.com/questions/3156334/…
Ciro Santilli 事件 改造 中心 法轮功 六四 事件

Ответы:

19

Это требует вуду. Это зависит. Пример:

  • Если памяти достаточно и диски не кажутся слишком занятыми, это может быть связано с процессором. Посмотрите на использование процессора и если он граничит на 100%, то он связан с процессором. Если это не так, в реализации есть искусственное узкое место. Например, на двухъядерном процессоре однопоточный процесс не превысит 50% загрузки процессора.

  • Если центральный процессор и память доступны, но диски очень заняты, или задержка ввода-вывода кажется высокой, вероятно, это связано с его вводом-выводом. Посмотрите, поможет ли добавление дополнительных дисков (RAID?).

  • Ни один из вышеперечисленных? Проверьте доступную память.

  • Достаточно памяти? Может быть искусственное узкое место в самом процессе, то есть, может быть, кто-то забыл удалить сон (1)? Наах это не так просто, как правило. ;)

Есть причина, по которой у нас есть целая лаборатория для инженеров по производительности в большинстве компаний, работающих с чувствительными к производительности продуктами!

Используйте инструменты, такие как sar, vmstat, iostat, oprofile, lockstat, dtrace, инструменты мониторинга перфорации для конкретного продукта и т. Д., Для устранения проблем перфорирования.

Sudhanshu
источник
2
Есть ли инструмент, который связывает все это вместе?
ssanj
обычно нет, но если в вашей системе есть dtrace (Solaris / FreeBSD / Mac OS X?), вы можете просто уйти далеко, используя это.
Судханшу
Я только что вспомнил, что в Linux есть Systemtap (похожий на dtrace), за исключением того, что я не уверен в зрелости этого инструмента.
Судханшу
vmstat полезен.
Джеймс
12

проверить iotop, может быть полезно

Ифкуиль
источник
iotop не был установлен по умолчанию в RedHat
Мона Джалал
9

Инструментом, который может быть полезен для проверки в реальном времени ряда статистических данных процесса (память, загрузка ЦП, ввод-вывод и т. Д.), Является htop . Он не заменяет более специализированные инструменты, названные Sudhanshu, но может быть хорошим началом.

Janc
источник
4

Как и другие упомянутые инструменты, запустите ps l PID, вставив соответствующий идентификатор процесса, или посмотрите на столбцы STATE и WCHAN в top или htop.

Если он находится в состоянии D (для диска), он выполняет файловый ввод-вывод. Это может быть потому, что он либо читает много файлов, либо потому, что использует много памяти и подкачку. Колонка WCHAN скажет вам, какая функция ядра находится внутри; погуглив на них или спросив здесь, вы можете получить некоторое представление о том, что они имеют в виду.

Если он находится в состоянии R (запуск), он использует процессор в пространстве пользователя, другими словами, он в данный момент привязан к процессору.

Если он находится в состоянии S (сна), он находится внутри прерываемого системного вызова, что может означать, что он либо фактически спит, либо выполняет что-то вроде ожидания сетевого трафика или блокировки. Опять же, глядя на конкретный wchan скажу вам больше.

Смотрите также Что такое «канал ожидания» процесса?

poolie
источник
2

Запустите topи посмотрите на строку использования процессора. Высокий пользовательский% указывает, что он связан с процессором. Высокий процент ожидания означает, что он связан с вводом-выводом.

psusi
источник