Quelle est l'unité de temps utilisée par strace lors de l'affichage du temps passé dans les appels système?

10

Lorsque j'utilise la commande straceavec l'indicateur -T, je voudrais savoir quelle est l'unité de temps utilisée pour afficher le temps passé dans les appels système? Je suppose que cela devrait être en quelques secondes, mais je ne suis pas sûr et cela semble avoir été omis du manuel.

user311285
la source

Réponses:

23

Du code source :

if (Tflag) {
    ts_sub(ts, ts, &tcp->etime);
    tprintf(" <%ld.%06ld>",
        (long) ts->tv_sec, (long) ts->tv_nsec / 1000);
}

Cela signifie que le temps est affiché en secondes, avec des microsecondes (calculées à partir de la valeur en nanosecondes) après la virgule décimale.

Stephen Kitt
la source
13

Si vous courez

strace -T  sleep 2

tu verras

nanosleep({tv_sec=2, tv_nsec=0}, NULL)  = 0 <2.000230>

il semble donc que le temps passé soit en secondes.

meuh
la source
6

Si vous exécutez la commande en straceutilisant le "flag -c" il vous montrera une table et le temps est rapporté en secondes :

strace -c -p 3569 # 3569 is PID
strace: Process 3569 attached
^Cstrace: Process 3569 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
99.73    0.016000           8      1971           poll
0.16    0.000025           0       509        75 futex
0.06    0.000010           0      1985      1966 recvmsg
0.06    0.000009           0      2336           mprotect
0.00    0.000000           0       478           read
0.00    0.000000           0        13           write
0.00    0.000000           0        29           mmap
0.00    0.000000           0         9           munmap
0.00    0.000000           0        18           writev
0.00    0.000000           0       351           madvise
0.00    0.000000           0         1           restart_syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.016044                  7700      2041 total

de l'homme de Strace

-c

Comptez le temps, les appels et les erreurs pour chaque appel système et signalez un résumé à la sortie du programme. Sous Linux, cela tente d'afficher l'heure système (temps CPU passé à s'exécuter dans le noyau) indépendamment de l'heure de l'horloge murale. Si -c est utilisé avec -f ou -F (ci-dessous), seuls les totaux agrégés pour tous les processus tracés sont conservés.


la source