Qual è l'unità di tempo utilizzata da Strace durante la visualizzazione del tempo trascorso in syscalls?


10

Quando si utilizza il comando stracecon la bandiera -T, vorrei sapere qual è l'unità di tempo utilizzata per visualizzare il tempo trascorso in syscalls? Presumo che dovrebbe essere in pochi secondi, ma non sono del tutto sicuro e sembra essere stato omesso dal manuale.

Risposte:


23

Dal codice sorgente :

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

Ciò significa che il tempo è mostrato in secondi, con microsecondi (calcolati dal valore dei nanosecondi) dopo il punto decimale.


13

Se corri

strace -T  sleep 2

vedrai

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

quindi sembra che il tempo trascorso sia in secondi.


6

Se esegui il comando straceusando "flag -c" ti mostrerà una tabella e il tempo sarà riportato in secondi :

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

dall'uomo di Strace

-c

Contare il tempo, le chiamate e gli errori per ciascuna chiamata di sistema e segnalare un riepilogo all'uscita dal programma. Su Linux, questo tenta di mostrare il tempo di sistema (tempo di CPU trascorso in esecuzione nel kernel) indipendentemente dal tempo di wall clock. Se -c viene usato con -f o -F (sotto), vengono mantenuti solo i totali aggregati per tutti i processi tracciati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.