Назад | Перейти на главную страницу

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

Иногда, когда процесс приостановлен (в состоянии 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?

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

POSIX говорит:

pcpu

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

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

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