Je peux deviner en fonction des noms, mais quels sont spécifiquement les paramètres horloge-mur, utilisateur-cpu et système-cpu-temps sous UNIX?
User-cpu time est-il le temps passé à exécuter le code utilisateur tandis que kernel-cpu temporise le temps passé dans le noyau en raison de la nécessité d'opérations privilégiées (comme IO sur disque)?
En quelle unité de temps cette mesure est-elle exprimée?.
Et le temps d’horloge est-il vraiment le nombre de secondes que le processus a passé sur le processeur ou le nom est-il trompeur?
Le temps d'horloge murale est le temps qu'une horloge sur le mur (ou un chronomètre en main) mesurerait comme s'être écoulée entre le début du processus et "maintenant".
Le temps utilisateur-cpu et le temps système-cpu sont à peu près ce que vous avez dit - le temps passé en code utilisateur et le temps passé en code noyau.
Les unités sont les secondes (et les sous-secondes, qui peuvent être des microsecondes ou des nanosecondes).
La durée de l'horloge murale n'est pas le nombre de secondes que le processus a passé sur le processeur; c'est le temps écoulé, y compris le temps passé à attendre sa mise sous tension du processeur (pendant que d'autres processus s'exécutent).
Heure de l'horloge murale: le temps s'est écoulé en fonction de l'horloge interne de l'ordinateur, ce qui devrait correspondre à l'heure du monde extérieur. Cela n'a rien à voir avec l'utilisation du processeur; c'est donné pour référence.
Temps utilisateur et temps système de l'utilisateur: exactement ce que vous pensez. Les appels système, qui incluent des appels d'E/S tels que read
, write
, etc., sont exécutés en sautant dans le code du noyau et en l'exécutant.
Si l'heure de l'horloge murale est <temps de la CPU, vous exécutez un programme en parallèle. Si l'heure de l'horloge murale> le temps de la CPU, vous attendez un disque, un réseau ou d'autres périphériques.
Tous sont mesurés en secondes, par SI .
L'heure de l'horloge murale correspond exactement à ce qui est indiqué, le temps écoulé, mesuré par l'horloge de votre mur (ou de votre montre-bracelet).
Le temps utilisateur est le temps passé dans "utilisateur", c'est-à-dire le temps passé sur des processus non noyaux
Le temps système est le temps passé dans le noyau, généralement le temps passé à traiter les appels système.
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
horloge réelle ou murale
7m2.444s réels
Sur un système avec un processeur à 24 cœurs, cette cmd/processus prenait plus de 7 minutes. Cela en utilisant le plus grand parallélisme possible avec tous les noyaux donnés.
utilisateur
utilisateur 76m14.607s
Le cmd/processus a utilisé autant de temps CPU. En d’autres termes, sur une machine dotée d’un processeur à cœur unique, le réel et l’utilisateur seront presque égaux; la même commande prendra donc environ 76 minutes.
sys
sys 2m29.432s
C'est le temps pris par le noyau pour exécuter toutes les opérations de base/système afin d'exécuter cette cmd, y compris la commutation de contexte, l'allocation de ressources, etc.
Remarque: Cet exemple suppose que votre commande utilise le parallélisme/les threads.
Page de manuel détaillée: https://linux.die.net/man/1/time