Що саме означає, коли процес "Час" зупинився вгорі?


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% використання процесора, тож незважаючи на те, що він дуже малий, чи не слід продовжувати збільшувати часовий стовпчик?

Ці процеси "закінчені"? У якому випадку, як вони прибираються? Чи повинен користувач, який їх запустив, визнати їх чи щось для тих ресурсів, які будуть звільнені?


1
На рівні 0,3%, це 1 цента секунди кожні 3/4 секунди. Ви досить довго чекали?
Стефан Шазелас

1
Відкриття розуму: збільшення часу обчислюється як відсоток від використання процесора? Ого. Отже, якби це було 100% процесора, це було б рівним в реальному часі?
CptSupermrkt

5
TIME - це сукупний час, який ЦП (будь-який процесор) витратив на виконання будь-якої нитки в процесі з моменту його запуску. Таким чином, це може навіть пройти швидше, ніж у режимі реального часу, якщо у вас є кілька ядер CPU і процес є багатопоточним.
Стефан Шазелас

Відповіді:


10

Якщо ви запускаєте підроблену роботу на зразок, sleep 120а потім переглядаєте її, htopви помітите, що її стан Sназивається "SLEEP", і процес TIMEзалишається на 0: 00.00 протягом тривалості.

Це тому, що цей процес вимагає 0 процесорного часу, що є наміром TIMEстовпця. Він відстежує кількість процесорного часу, який використав даний процес.

              ss №1

Цей підрахунок може часом заплутатись, якщо процес може працювати на декількох ядрах процесора, оскільки він, здається, може зайняти більше часу, ніж є. Все, що там відбувається, - це те, що якщо у вас кількість X ядер, то ваш час може відображатися як X * TIME.


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та шукати самі параметри, які він дає для вирішення таких проблем, як цей

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.