Co to dokładnie znaczy, gdy proces „Czas” zatrzymał się na górze?


11

Zbadam, dlaczego otrzymujemy krytyczne alerty wymiany, i znajdę coś takiego:

  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

gdzie kolumna CZAS + jest zamrożona dla tych procesów.

Moje pytanie brzmi: co to oznacza?

Jak rozumiem, zatrzymany czas oznacza, że ​​jest to proces uśpiony / nie przetwarzany przez procesor. Jednak powyższy przykład pokazuje zużycie procesora 0,3%, więc czy pomimo tego, że jest bardzo mały, czy kolumna czasu nie powinna dalej zwiększać?

Czy te procesy są „zakończone”? W takim przypadku, w jaki sposób są czyszczone? Czy użytkownik, który je uruchomił, musi je potwierdzić lub coś, aby uwolnić te zasoby?


1
Przy 0,3% to 1 centi-sekundę co 3/4 sekundy. Czy czekałeś wystarczająco długo?
Stéphane Chazelas

1
Niezwykłe odkrycie: zwiększenie czasu jest obliczane jako procent wykorzystania procesora? Łał. Gdyby to był procesor 100%, to by to równało się w czasie rzeczywistym?
CptSupermrkt

5
CZAS to łączny czas, jaki procesor (dowolny procesor) spędził na uruchamianiu dowolnego wątku w procesie od momentu jego uruchomienia. Może więc działać nawet szybciej niż w czasie rzeczywistym, jeśli masz kilka rdzeni procesora, a proces jest wielowątkowy.
Stéphane Chazelas

Odpowiedzi:


10

Jeśli uruchomisz fałszywe zadanie, takie jak, sleep 120a następnie go htopobejrzysz, zauważysz, że jego stan to Saka „SLEEP”, a procesy TIMEpozostają na czas 0: 00.00.

Dzieje się tak, ponieważ proces ten zajmuje 0 czasu procesora, co jest celem TIMEkolumny. Śledzi ilość czasu procesora wykorzystanego przez dany proces.

              ss # 1

Ta liczba może być myląca, jeśli proces może działać na wielu rdzeniach procesora, ponieważ może wydawać się, że zużywa więcej czasu niż jest dostępne. Wszystko, co się dzieje, to fakt, że jeśli masz X rdzeni, wtedy twój czas może być wyświetlany jako X * CZAS.


4

Powodem, dla którego możesz uzyskać taką rozbieżność, jest to, że kolumna CZAS + nie uwzględnia czasu procesora używanego przez martwe spawnowane dzieci z wymienionego procesu. Wyobrażam sobie, że wyświetlane linie wskazują (prawdopodobnie, szybko) aplikację tarło dzieci, które umierają prawie natychmiast…

So, the CPU usage is due to spawned children which do not count in the TIME+ column. Możesz zmienić górę, aby skumulować czas za pomocą przełącznika „S”.

Ale myślę, że patrzysz na niewłaściwe wskaźniki tego, co chcesz zbadać.

strace -p <pid> jest tutaj twoim przyjacielem i pozwoli ci zajrzeć do trwającego procesu i do tego, co dokładnie robi.

Strace ma mnóstwo opcji. niektóre godne uwagi opcje to -f, -ff, -i, v itp. Strace jest najbardziej użytecznym narzędziem, więc najlepiej to zrobić man stracei poszukać opcji, które daje ci przy rozwiązywaniu takich problemów

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.