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

37

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

    
задан ssanj 07.08.2010 в 07:01
источник

5 ответов

13

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

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

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

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

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

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

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

    
ответ дан Sudhanshu 07.08.2010 в 07:54
9

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

    
ответ дан ithkuil 06.09.2010 в 01:32
8

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

    
ответ дан JanC 07.08.2010 в 19:04
3

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

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

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

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

См. также Что такое "Ожидающий канал" процесса?     

ответ дан poolie 17.11.2010 в 02:40
2

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

    
ответ дан psusi 31.01.2012 в 21:48