2

Я видел несколько сообщений, похожих на это, особенно здесь, но не был полностью удовлетворен ответами. Я сравниваю результаты top и ps для конкретного процесса и вижу огромные расхождения в использовании процессора. top варьируется от <1% до 100% от интервала к интервалу, включая периоды устойчивых максимумов (> 50% за 3-4 интервала), в то время как ps устойчиво составляет 2,2%. У процесса, который я наблюдаю, нет детей или чего-то еще, поэтому я не совсем уверен, что с этим делать. Поскольку на top наблюдаются устойчивые высокие периоды, я чувствую, что могу исключить интервал выборки.

Действительно ли это просто несоответствие того, как эти два инструмента обрабатывают время ожидания ввода-вывода, как предполагает вопрос, с которым я связан выше?

РЕДАКТИРОВАТЬ:
Я видел, как он колеблется до 2,1% в ps , но это пока что. Выход из top -p 4522:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
4522 root      16   0  340m 316m 4732 R 54.7  1.3 508:57.46 maui

Вывод из ps u -p 4522:

 USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND  
root      4522  2.2  1.3 348764 324456 ?       Ss   Aug25 509:25 /usr/local/maui/sbin/maui

2 ответа2

2

Наиболее вероятная причина в том, что top показывает процентные значения в процентах от одного процессора, а ps показывает процент от общей доступной мощности процессора. Попробуйте запустить top и нажать Shift I, пока он работает, чтобы показать процент всех ядер.

Если это кластер серверов с большим количеством процессоров, то вы описываете нормальное поведение. Также смотрите здесь.

2

Этот вопрос старый, но, на мой взгляд, ответ неверный. ps и top рассчитывают загрузку процессора разными способами.

от верха человека:

  1. % ЦП - загрузка ЦП Доля задачи, затраченная на ЦП с момента последнего обновления экрана, выраженная в процентах от общего времени ЦП.

от человека PS:

Загрузка ЦП в настоящее время выражается как процент времени, потраченного на выполнение в течение всего времени жизни процесса.

Итак, допустим, у вас есть процесс, который был запущен неделю назад, и за это время он использовал в среднем 2,2% процессорного времени. Если вдруг он станет интенсивно загружать процессор (постоянно потребляя 100%) - если посмотреть на ps, вы увидите те же 2,2% в течение первых нескольких часов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .