Почему приостановленный процесс показывает высокую загрузку процессора в пс?

Иногда, когда процесс приостановлен (в состоянии T), вывод ps показывает процесс с использованием необычного количества CPU%.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
cossey    8697 26.9  0.0   8808   672 pts/3    T    09:25   0:22 gzip

Это ошибка в ps?

1 ответ

Решение

В некоторых версиях ps, %CPU столбец показывает среднее использование ЦП за весь срок службы процесса. Другие реализуют спадающее среднее ( http://www.google.com/search?q=ps+cpu+decaying+average), но даже с этим вам придется подождать некоторое время после приостановки, чтобы среднее значение упало до 0.

POSIX говорит:

PCPU

Отношение времени процессора, использованного в последнее время, к времени процессора, доступному за тот же период, выражается в процентах. Значение "недавно" в этом контексте не определено. Доступное время ЦП определяется неопределенным образом.

И обоснование:

Поле pcpu указывает, что доступное время ЦП определяется неопределенным образом. Это потому, что трудно выразить алгоритм, который будет полезен для всех возможных архитектур машин. Исторические аналоги этого значения пытались показать процент использования в недавнем прошлом, например, в предыдущую минуту. Зачастую эти значения для всех процессов не складываются до 100%. Реализациям рекомендуется предоставлять данные в этой области пользователям, которые помогут им идентифицировать процессы, в настоящее время влияющие на производительность системы.

Другие вопросы по тегам