180 votes

Que sont spécifiquement le wall-clock-time, le user-cpu-time et le system-cpu-time sous UNIX ?

Je peux deviner en me basant sur les noms, mais que sont spécifiquement le wall-clock-time, le user-cpu-time, et le system-cpu-time dans UNIX ?

Le temps utilisateur-cpu est-il le temps passé à exécuter le code utilisateur tandis que le temps noyau-cpu est le temps passé dans le noyau en raison de la nécessité d'opérations privilégiées (comme les entrées-sorties sur disque) ?

Dans quelle unité de temps se fait cette mesure ?

Et le temps d'horloge murale est-il vraiment le nombre de secondes que le processus a passé sur l'unité centrale ou le nom est-il simplement trompeur ?

0 votes

179voto

Jonathan Leffler Points 299946

Le temps d'horloge murale est le temps qu'une horloge murale (ou un chronomètre à la main) mesurerait comme s'étant écoulé entre le début du processus et "maintenant".

Le temps processeur utilisateur et le temps processeur système sont à peu près ce que vous avez dit - le temps passé dans le code utilisateur et le temps passé dans le code du noyau.

Les unités sont les secondes (et les sous-secondes, qui peuvent être des microsecondes ou des nanosecondes).

Le temps d'horloge murale n'est pas le nombre de secondes que le processus a passé sur l'unité centrale ; c'est le temps écoulé, y compris le temps passé à attendre son tour sur l'unité centrale (pendant que d'autres processus s'exécutent).

28 votes

Cela signifie-t-il que l'heure de l'horloge murale sera toujours plus grand que le temps du processeur ?

56 votes

@Pacerier : sur une machine à un seul cœur, oui, mais les machines à plusieurs cœurs et les programmes multithreads peuvent utiliser plus d'une seconde de CPU par seconde écoulée.

0 votes

@JonathanLeffler merci pour la réponse, je voulais obtenir le nombre de nanosecondes qui s'est écoulé mais en calculant le temps CPU en utilisant la formule CPUtime = #clock_cycles / clock_rate ne peut être la même chose que le calcul du temps écoulé. Savez-vous si je peux obtenir le temps écoulé à partir du temps CPU ?

42voto

larsmans Points 167484

Heure de l'horloge murale : temps écoulé selon l'horloge interne de l'ordinateur, qui doit correspondre à l'heure dans le monde extérieur. Cela n'a rien à voir avec l'utilisation du processeur ; c'est donné à titre de référence.

Temps CPU utilisateur et temps système : exactement ce que vous pensez. Les appels système, qui comprennent les appels E/S tels que read , write etc. sont exécutés en sautant dans le code du noyau et en l'exécutant.

Si le temps de l'horloge murale < le temps du processeur, alors vous exécutez un programme en parallèle. Si le temps de l'horloge murale > temps CPU, vous attendez le disque, le réseau ou d'autres périphériques.

Tous sont mesurés en secondes, conformément à la SI .

9voto

147.3k Points 3364
time [WHAT-EVER-COMMAND]

real    7m2.444s
user    76m14.607s
sys 2m29.432s

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                24

réel ou horloge murale

réel 7m2.444s

Sur un système doté d'un processeur à 24 cœurs, ce processus cmd a mis plus de 7 minutes à se terminer. Cela en utilisant le plus de parallélisme possible avec tous les cœurs donnés.

utilisateur

utilisateur 76m14.607s

Le processus cmd/process a utilisé autant de temps processeur. En d'autres termes, sur une machine dotée d'un processeur à un seul cœur, le temps réel et le temps de l'utilisateur seront presque égaux, de sorte que la même commande prendra ~76 minutes pour se terminer.

sys

sys 2m29.432s

Il s'agit du temps pris par le noyau pour exécuter toutes les opérations de base/de niveau système pour exécuter cette commande, y compris le changement de contexte, l'allocation des ressources, etc.

Remarque : L'exemple suppose que votre commande utilise le parallélisme/threads.

Page de manuel détaillée : https://linux.die.net/man/1/time

0 votes

Vu les temps que vous avez affichés, n'est-ce pas environ la moitié du parallélisme qui est fait ? (je fais juste (user + sys) / real pour représenter cela.

0 votes

Je suis un peu en retard ici, mais real > (user + sys)/(num cpus) En outre, il se peut que le programme n'utilise pas tous les cœurs à 100 % (ou même à tout moment). Il peut cependant en être très proche s'il s'agit, par exemple, d'une machine dédiée avec une faible surcharge.

7voto

ennuikiller Points 28005

L'heure de l'horloge murale est exactement ce qu'elle dit, le temps écoulé tel que mesuré par l'horloge sur votre mur (ou votre montre-bracelet).

Le temps processeur de l'utilisateur est le temps passé dans le "domaine de l'utilisateur", c'est-à-dire le temps passé sur des processus non liés au noyau.

Le temps processeur système est le temps passé dans le noyau, généralement le temps passé à répondre aux appels système.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X