Cosa significa esattamente quando un processo "Time" si è fermato in cima?


11

Esaminerò perché riceviamo avvisi di swap critici e troverò qualcosa del tipo:

  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

dove la colonna TIME + è bloccata per tali processi.

La mia domanda è, in quanto sopra, cosa implica questo?

A quanto ho capito, il tempo di arresto significa che è un processo inattivo / non elaborato dalla CPU. Tuttavia, l'esempio sopra mostra lo 0,3% di utilizzo della CPU, quindi nonostante sia molto piccolo, la colonna del tempo non dovrebbe continuare ad aumentare?

Questi processi sono "finiti"? In tal caso, come vengono ripuliti? L'utente che li ha avviati deve riconoscerli o qualcosa per liberare tali risorse?


1
Allo 0,3%, vale 1 centesimo di secondo ogni 3/4 secondi. Hai aspettato abbastanza?
Stéphane Chazelas,

1
Rivelazione strabiliante: l'aumento del tempo è calcolato come percentuale dell'utilizzo della CPU? Wow. Quindi se fosse CPU al 100%, sarebbe uguale in tempo reale?
CptSupermrkt,

5
TIME è il tempo cumulativo impiegato dalla CPU (qualsiasi CPU) per eseguire qualsiasi thread nel processo da quando è stato avviato. Quindi può anche andare più veloce del tempo reale se hai diversi core della CPU e il processo è multi-thread.
Stéphane Chazelas,

Risposte:


10

Se esegui un lavoro falso come sleep 120e poi lo guardi, htopnoterai che il suo stato è Snoto come "SLEEP" e i processi TIMErimangono a 0: 00.00 per la durata.

Questo perché quel processo sta consumando 0 CPU time, che è l'intento della TIMEcolonna. Tiene traccia della quantità di tempo della CPU utilizzata da un determinato processo.

              SS # 1

Questo conteggio può essere fonte di confusione a volte se un processo può essere eseguito su più core della CPU, dal momento che apparentemente può consumare più tempo di quanto sia disponibile. Tutto quello che succede lì è che se hai un numero X di core, il tuo tempo può essere mostrato come X * TIME.


4

Il motivo per cui potresti ottenere una disparità del genere è perché la colonna TIME + non tiene conto del tempo di CPU utilizzato dai figli generati morti del processo elencato. Quindi, immagino che le linee visualizzate indicano un'applicazione che è (probabilmente, rapidamente) generando bambini che muoiono quasi immediatamente ..

So, the CPU usage is due to spawned children which do not count in the TIME+ column. Puoi cambiare la parte superiore per fare il tempo cumulativo tramite l'interruttore 'S'.

Ma penso che tu stia guardando gli indicatori sbagliati per ciò che stai cercando di indagare.

strace -p <pid> è il tuo amico qui e ti permetterà di sbirciare nel processo in esecuzione e cosa sta facendo esattamente.

Strace richiede una miriade di opzioni. alcune opzioni notevoli includono -f, -ff, -i, v, ecc. Strace è uno strumento molto utile, quindi è meglio fare uno man stracee cercare te stesso le opzioni che ti offre per risolvere problemi come questo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.