Я посмотрю, почему мы получаем критические предупреждения о свопе, и найду что-то вроде:
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%, поэтому, несмотря на то, что он очень мал, разве столбец времени не должен продолжать увеличиваться?
Являются ли эти процессы "законченными"? В каком случае, как они убираются? Должен ли пользователь, который их запустил, признать их или что-то для освобождения этих ресурсов?
Ответы:
Если вы запустите поддельное задание, такое как,
sleep 120
а затем просмотрите его,htop
вы заметите, что его состояние называетсяS
«SLEEP», и процессыTIME
остаются в 0: 00.00 на протяжении всего времени.Это потому, что этот процесс потребляет 0 процессорного времени, что является целью
TIME
столбца. Он отслеживает количество процессорного времени, использованного данным процессом.Этот подсчет может иногда сбивать с толку, если процесс может выполняться на нескольких ядрах ЦП, так как он может занять больше времени, чем доступно. Все, что здесь происходит, - это то, что если у вас есть количество ядер X, то ваше время может отображаться как X * TIME.
источник
Причина, по которой вы можете получить такое несоответствие, заключается в том, что столбец 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
и посмотреть на варианты, которые он дает вам для устранения проблем, подобных этойисточник