Qu'est-ce que cela signifie exactement lorsqu'un processus «Time» s'est arrêté en haut?

11

Je vais chercher pourquoi nous recevons des alertes de swap critiques, et je trouverai quelque chose comme:

  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

où la colonne TIME + est figée pour ces processus.

Ma question est, dans ce qui précède, qu'est-ce que cela implique?

Si je comprends bien, le temps d'arrêt signifie que c'est un processus dormant / non traité par le CPU. Cependant, l'exemple ci-dessus montre une utilisation du processeur de 0,3%, donc malgré le fait qu'il soit très petit, la colonne de temps ne devrait-elle pas continuer à incrémenter?

Ces processus sont-ils "terminés"? Dans ce cas, comment sont-ils nettoyés? L'utilisateur qui les a créés doit-il les reconnaître ou quelque chose pour que ces ressources soient libérées?

CptSupermrkt
la source
1
À 0,3%, c'est 1 centi-seconde toutes les 3/4 secondes. Avez-vous attendu assez longtemps?
Stéphane Chazelas
1
Révélation époustouflante: l'augmentation du temps est calculée en pourcentage de l'utilisation du processeur? Sensationnel. Donc, si c'était 100% CPU, cela équivaudrait-il en temps réel?
CptSupermrkt
5
TIME est le temps cumulé que le CPU (n'importe quel CPU) a passé à exécuter un thread dans le processus depuis son démarrage. Il peut donc même aller plus vite qu'en temps réel si vous avez plusieurs cœurs de processeur et que le processus est multithread.
Stéphane Chazelas

Réponses:

10

Si vous exécutez un faux travail tel que sleep 120, puis le regardez dans, htopvous remarquerez que son état est Saka "SLEEP" et que le processus TIMEreste à 0: 00.00 pour la durée.

C'est parce que ce processus consomme 0 CPU, ce qui est l'intention de la TIMEcolonne. Il suit le temps CPU utilisé par un processus donné.

              SS # 1

Ce nombre peut parfois prêter à confusion si un processus peut s'exécuter sur plusieurs cœurs de processeur, car il peut sembler consommer plus de temps que ce qui est disponible. Tout ce qui se passe là-bas, c'est que si vous avez X nombre de cœurs, votre temps peut apparaître comme X * TIME.

slm
la source
4

La raison pour laquelle vous pouvez obtenir une disparité de ce type est que la colonne TIME + ne prend pas en compte le temps processeur utilisé par les enfants morts du processus répertorié. Donc, j'imagine que les lignes que vous affichez indiquent une application qui est (éventuellement, rapidement) géniteurs d'enfants qui meurent presque immédiatement ..

So, the CPU usage is due to spawned children which do not count in the TIME+ column. Vous pouvez changer de top pour faire du temps cumulé via le commutateur «S».

Mais je pense que vous regardez les mauvais indicateurs pour ce que vous cherchez à enquêter.

strace -p <pid> est votre ami ici et vous permettra de jeter un œil au processus en cours et à ce qu'il fait exactement.

Strace prend une myriade d'options. certaines options notables incluent -f, -ff, -i, v, etc. Strace est un outil des plus utiles, il vaut donc mieux le faire man straceet rechercher par vous-même les options qu'il vous offre pour résoudre des problèmes comme celui-ci

Chux Uzoeto
la source