web-dev-qa-db-fra.com

Pourquoi "top" indique-t-il que certains processus fonctionnent plus longtemps que le temps de disponibilité du système?

J'ai un problème avec mon système où phantomjs continue de fonctionner une fois son travail terminé. Pour déboguer ce problème, il y a deux jours, j'ai redémarré le système:

Screen shot showing two days of uptime

Aujourd'hui, quand j'ai exécuté top, j'ai vu ceci:

screen shot of "top" showing phantomjs processes with 130+ in the "time" column

Si je comprends bien, ces deux processus phantomjs existent depuis environ 5 jours. Donc, ils ont survécu au redémarrage?

5
shenkwen

La colonne TIME+ ne correspond pas à l'heure en horloge murale en heures et en minutes, mais au temps UC requis en minutes et en secondes (et en centièmes de seconde). Votre capture d'écran montre deux processus fantômes qui ont utilisé un peu plus de deux heures de temps CPU chacun.

10
user4556274

De man top, section "3a. Description des champs":

   29. TIME  --  CPU Time
       Total  CPU  time the task has used since it started.  When Cumulative 
       mode is On, each process is listed with the cpu time that it and its 
       dead children have used.  You toggle Cumulative mode with `S',  which  
       is  both  a  command-line option and an interactive command. 
       See the `S' interactive command for additional information regarding 
       this mode.

   30. TIME+  --  CPU Time, hundredths
       The same as TIME, but reflecting more granularity through hundredths 
       of a second.

Le temps CPU signifie combien de temps un seul coeur était occupé à traiter cette tâche ou (si le mode Cumulatif est activé) l'un de ses enfants ici.

Cela signifie que le temps de calcul n'est pas du tout lié au temps de mur, il peut bien sûr être plus court que la durée d'exécution du processus dans le temps de travail (s'il n'utilise pas toujours un cœur de processeur complet), mais il peut également être plus long que l'exécution réelle du processus (si vous avez un processeur multicœur et que le processus en utilise plusieurs).

11
Byte Commander