Utilisation de la commande time pour mesurer l'utilisation du microprocesseur

Utilisez la commande time pour comprendre les caractéristiques de performances d'un programme unique et de ses enfants synchrones.

La commande time indique le temps réel, c'est-à-dire le temps écoulé entre le début et la fin du programme. Il indique également la quantité de temps de microprocesseur utilisée par le programme. Le temps du microprocesseur est divisé enuseretsys. Leuservalue est le temps utilisé par le programme lui-même et les sous-routines de bibliothèque qu'il appelle. :NONE.sysvalue est le temps utilisé par les appels système appelés par le programme (directement ou indirectement).

La somme desuser+sysest le coût total par microprocesseur direct de l'exécution du programme. Cela n'inclut pas les coûts de microprocesseur de parties du noyau qui peuvent déclarées comme exécutées pour le compte du programme, mais qui ne sont en fait pas exécutées sur son unité d'exécution. Par exemple, le coût de la récupérationl de cadres de page pour remplacer ceux pris dans la liste libre lorsque le programme a commencé n'est pas déclaré dans le cadre de la consommation de microprocesseur du programme.

Sur un processeur unique, la différence entre lesrealet le temps total du microprocesseur, c'est-à-dire:
real - (user + sys)
Est la somme de tous les facteurs qui peuvent retarder le programme, plus les coûts non attribués du programme. Sur un SMP, une approximation serait la suivante :
real * number_of_processors - (user + sys)

Dans approximativment l'ordre décroissant de taille, les facteurs peuvent être :

  • E-S requises pour introduire le texte et les données du programme
  • E-S requises pour acquérir de la mémoire réelle pour l'utilisation du programme
  • Temps de microprocesseur consommé par d'autres programmes
  • Temps de microprocesseur consommé par le système d'exploitation
Dans l'exemple suivant, le programme utilisé dans la section précédente a été compilé avec -O3 pour le rendre plus rapide. Il y a très peu de différence entre le temps réel (wall-clock) nécessaire à l'exécution du programme et la somme des temps du microprocesseur de l'utilisateur et du système. Le programme reçoit tout le temps qu'il veut, probablement au détriment d'autres programmes du système.
# time looper
real    0m3.58s
user    0m3.16s
sys     0m0.04s
Dans l'exemple suivant, nous exécutons le programme à une priorité moins favorable en ajoutant 10 à sa valeur nice. Il met presque deux fois plus de temps pour s'exécuter, mais d'autres programmes peuvent aussi fonctionner :
# time nice -n 10 looper
real    0m6.54s
user    0m3.17s
sys     0m0.03s
Notez que nous avons placé la commande nice dans la commande time au lieu de l'inverse. Si nous avions entré
# nice -n 10 time looper

nous aurions obtenu une commande time différente (/usr/bin/time) avec un rapport de précision inférieure, plutôt que la version de la commande time que nous avons utilisée, qui est intégrée à l'interpréteur de commandes ksh. Si la commande time est exécutée en premier, vous obtenez la version intégrée, sauf si vous indiquez le nom qualifié complet de /usr/bin/time. Si la commande time est appelée à partir d'une autre commande, vous obtenez /usr/bin/time.