Jakiej jednostki czasu używa strace, wyświetlając czas spędzony na wywołaniach systemowych?

10

Korzystając z polecenia stracez flagą -T, chciałbym wiedzieć, jaka jednostka czasu jest używana do wyświetlania czasu spędzonego na wywołaniach systemowych? Zakładam, że powinno to potrwać kilka sekund, ale nie jestem do końca pewien i wydaje się, że został pominięty w instrukcji.

użytkownik311285
źródło

Odpowiedzi:

23

Z kodu źródłowego :

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

Oznacza to, że czas jest wyświetlany w sekundach, z mikrosekundami (obliczonymi na podstawie wartości nanosekundowej) po przecinku.

Stephen Kitt
źródło
13

Jeśli uciekniesz

strace -T  sleep 2

zobaczysz

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

więc wygląda na to, że czas spędzony jest w sekundach.

meuh
źródło
6

Jeśli uruchomisz polecenie straceza pomocą opcji „flag -c”, wyświetli się tabela, a czas zostanie podany w sekundach :

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

od człowieka strace

-do

Policz czas, połączenia i błędy dla każdego wywołania systemowego i zgłoś podsumowanie zakończenia programu. W systemie Linux próbuje to pokazać czas systemowy (czas pracy procesora spędzony w jądrze) niezależnie od czasu zegara ściennego. Jeśli -c jest używane z -f lub -F (poniżej), zachowywane są tylko sumy zbiorcze dla wszystkich śledzonych procesów.


źródło