Что это означает именно тогда, когда процесс «Время» остановился на вершине?

11

Я посмотрю, почему мы получаем критические предупреждения о свопе, и найду что-то вроде:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
14683 user1     30  10 16.0g 772m  744 S  0.3  0.3 277:24.87 6.5g MATLAB
14576 user1     30  10 8125m 1.1g  736 S  0.3  0.4 261:16.73 4.1g MATLAB

где столбец TIME + заморожен для этих процессов.

Мой вопрос в вышесказанном, что это значит?

Насколько я понимаю, остановленное время означает, что это неактивный процесс / не обрабатывается процессором. Однако приведенный выше пример показывает, что загрузка процессора составляет 0,3%, поэтому, несмотря на то, что он очень мал, разве столбец времени не должен продолжать увеличиваться?

Являются ли эти процессы "законченными"? В каком случае, как они убираются? Должен ли пользователь, который их запустил, признать их или что-то для освобождения этих ресурсов?

CptSupermrkt
источник
1
На 0,3%, это 1 сантисекунда каждые 3/4 секунды. Вы ждали достаточно долго?
Стефан Шазелас
1
Сногсшибательное откровение: увеличение времени рассчитывается как процент использования процессора? Вау. Так что, если бы это был процессор на 100%, это было бы равно в реальном времени?
CptSupermrkt
5
ВРЕМЯ - это совокупное время, которое ЦП (любой ЦП) потратил на выполнение любого потока в процессе с момента его запуска. Таким образом, он может работать даже быстрее, чем в режиме реального времени, если у вас несколько процессорных ядер и процесс многопоточный.
Стефан Шазелас

Ответы:

10

Если вы запустите поддельное задание, такое как, sleep 120а затем просмотрите его, htopвы заметите, что его состояние называется S«SLEEP», и процессы TIMEостаются в 0: 00.00 на протяжении всего времени.

Это потому, что этот процесс потребляет 0 процессорного времени, что является целью TIMEстолбца. Он отслеживает количество процессорного времени, использованного данным процессом.

              сс # 1

Этот подсчет может иногда сбивать с толку, если процесс может выполняться на нескольких ядрах ЦП, так как он может занять больше времени, чем доступно. Все, что здесь происходит, - это то, что если у вас есть количество ядер X, то ваше время может отображаться как X * TIME.

SLM
источник
4

Причина, по которой вы можете получить такое несоответствие, заключается в том, что столбец TIME + не учитывает процессорное время, используемое мертвыми порожденными дочерними элементами перечисленного процесса. Итак, я хотел бы представить, что отображаемые вами строки указывают на приложение, которое (возможно, быстро) порождает детей, которые умирают почти сразу

So, the CPU usage is due to spawned children which do not count in the TIME+ column. Вы можете изменить верхнее время для накопления времени с помощью переключателя «S».

Но я думаю, что вы смотрите на неправильные индикаторы того, что вы хотите исследовать.

strace -p <pid> Ваш друг здесь, и позволит вам заглянуть в запущенный процесс и что именно он делает.

Стрейс принимает множество вариантов. некоторые известные опции включают в себя -f, -ff, -i, v и т. д. Strace - это наиболее полезный инструмент, поэтому лучше всего сделать это man straceи посмотреть на варианты, которые он дает вам для устранения проблем, подобных этой

Чукс Узоэто
источник