Welche Zeiteinheit verwendet strace, um die in Systemaufrufen verbrachte Zeit anzuzeigen?

10

Wenn ich den Befehl stracemit dem Flag verwende -T, möchte ich wissen, mit welcher Zeiteinheit die in Syscalls verbrachte Zeit angezeigt wird. Ich gehe davon aus, dass es in Sekunden sein sollte, aber ich bin mir nicht ganz sicher und es scheint im Handbuch weggelassen zu sein.

user311285
quelle

Antworten:

23

Aus dem Quellcode :

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

Dies bedeutet, dass die Zeit in Sekunden mit Mikrosekunden (berechnet aus dem Nanosekundenwert) nach dem Dezimalpunkt angezeigt wird.

Stephen Kitt
quelle
13

Wenn du läufst

strace -T  sleep 2

du wirst sehen

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

Es sieht also so aus, als ob die aufgewendete Zeit in Sekunden ist.

meuh
quelle
6

Wenn Sie den Befehl stracemit dem "Flag -c" ausführen , wird eine Tabelle angezeigt und die Uhrzeit in Sekunden angegeben :

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

von Straces Mann

-c

Zählen Sie Zeit, Aufrufe und Fehler für jeden Systemaufruf und melden Sie eine Zusammenfassung beim Beenden des Programms. Unter Linux wird versucht, die Systemzeit (CPU-Zeit im Kernel) unabhängig von der Wanduhrzeit anzuzeigen. Wenn -c mit -f oder -F (unten) verwendet wird, werden nur Gesamtsummen für alle verfolgten Prozesse beibehalten.


quelle